Непрерывная интеграция (CI)
Теория: Задания
Задания в воркфлоу обозначают какую-то часть процесса интеграции — например, сборку, тестирование, деплой и тому подобное. По умолчанию задания запускаются параллельно, но если нужно, то их можно упорядочивать:
Задание test запустится только в том случае, если build-backend завершился без ошибок. Иногда задание нужно выполнять в любом случае, независимо от результата выполнения предыдущих. Типичный пример – нотификация. Для этого добавляется специальная конструкция через ключ if:
Для обеспечения параллельности Github запускает задания в независимых директориях. Файлы, которые создает конкретное задание, не видно из других заданий. Если во время сборки build-backend у нас на диске оказались какие-то файлы, то задание test их не увидит. Для этого нужно дополнительно включать шаги по переносу данных из одного задания в другое. Поэтому для проектов с простой структурой достаточно создать одно задание, которое делает сразу все:
Каждый шаг задания запускается в одной и той же директории. Туда же клонируется репозиторий экшеном checkout.
Операционная система
Github Actions позволяет выбрать одну из трех операционных систем: Ubuntu, Windows и MacOS. Все возможные варианты перечислены на специальной странице. В большинстве случаев для запуска используется ubuntu-latest. А что если мы хотим тестировать код на разных операционных системах? Самый дубовый вариант – создать идентичные задания под каждую операционную систему, но можно лучше.
В Github Actions встроена возможность описать одно задание так, чтобы оно запускалось для разных версий операционных систем, языков и так далее:
Переменные окружения
С помощью ключа env можно добавить переменные окружения, доступные для всех шагов текущего задания:
Довольно много полезных переменных окружения добавлено сразу. Вот как их можно использовать прямо в шагах:
Точно так же переменные можно определять или переопределять в конкретных шагах:







