Комментарии 6
Напишите, пожалуйста, как готовить Github Action, чтобы компилировать непопулярным gcc, который только tar-архивом распространяются.
Вообще, раннер - это одноразовая виртуалка или она сохраняет всё установленное-распакованное?
Спасибо за интересный вопрос! Раннеры GitHub Actions — это временные виртуальные машины, которые запускаются заново для каждого workflow. Значит все изменения, сделанные в ходе выполнения workflow, не сохраняются для последующих запусков.
Если вам нужно использовать GCC в виде tar, вы можете добавить шаг в ваш workflow для загрузки и распаковки этого архива. Вот пример:
- name: Custom GCC install
run: |
wget https://example.com/gcc-custom.tar.gz
tar -xzf gcc-custom.tar.gz
echo "${PWD}/gcc-custom/bin" >> $GITHUB_PATH
Этот шаг загружает архив, распаковывает его и добавляет путь к файлам GCC в PATH, чтобы вы могли использовать эту версию компилятора в дальнейшем.
Если вы часто используете этот компилятор и хотите ускорить процесс, можно воспользоваться кэшированием с помощью actions/cache, чтобы избежать повторной загрузки и распаковки при каждом запуске.
Спасибо.
Да, очень хочу ускорить процесс, т.к. китайский сайт его выдает несколько минут, хорошо хоть регистрацию не просит.
А что мешает собрать кастомный docker image со скаченным и настроенным gcc и использовать в воркфлоу этот образ для остальных шагов? Это ведь ИМХО гораздо проще и быстрее чем качать-настраивать-кешировать-доставать из кеша, или нет?
Да, собрать свой Docker-образ и использовать его в Actions — проще и быстрее. Особенно если сборка регулярная и тулчейн тяжёлый. Просто я показал способ «в лоб», без Docker, как и в статье, без его упоминания, но для постоянного использования образ — отличный вариант.
Про использование контейнеров для разных задач и разбор по тому же принципу я тоже сделаю, как только закончу с серией по гиту :)
Спасибо за хорошую статью.
CI/CD на GitHub Actions и GitLab CI для самых маленьких. Часть 1