0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Задания в воркфлоу обозначают какую-то часть процесса интеграции - например, сборку, тестирование, деплой и тому подобное. По умолчанию задания запускаются параллельно, но если нужно, то их можно упорядочивать:</p>
1
<p>Задания в воркфлоу обозначают какую-то часть процесса интеграции - например, сборку, тестирование, деплой и тому подобное. По умолчанию задания запускаются параллельно, но если нужно, то их можно упорядочивать:</p>
2
<p>Задание<em>test</em>запустится только в том случае, если<em>build-backend</em>завершился без ошибок. Иногда задание нужно выполнять в любом случае, независимо от результата выполнения предыдущих. Типичный пример - нотификация. Для этого добавляется специальная конструкция через ключ if:</p>
2
<p>Задание<em>test</em>запустится только в том случае, если<em>build-backend</em>завершился без ошибок. Иногда задание нужно выполнять в любом случае, независимо от результата выполнения предыдущих. Типичный пример - нотификация. Для этого добавляется специальная конструкция через ключ if:</p>
3
<p>Для обеспечения параллельности Github запускает задания в независимых директориях. Файлы, которые создает конкретное задание, не видно из других заданий. Если во время сборки<em>build-backend</em>у нас на диске оказались какие-то файлы, то задание<em>test</em>их не увидит. Для этого нужно дополнительно<a>включать шаги</a>по переносу данных из одного задания в другое. Поэтому для проектов с простой структурой достаточно создать одно задание, которое делает сразу все:</p>
3
<p>Для обеспечения параллельности Github запускает задания в независимых директориях. Файлы, которые создает конкретное задание, не видно из других заданий. Если во время сборки<em>build-backend</em>у нас на диске оказались какие-то файлы, то задание<em>test</em>их не увидит. Для этого нужно дополнительно<a>включать шаги</a>по переносу данных из одного задания в другое. Поэтому для проектов с простой структурой достаточно создать одно задание, которое делает сразу все:</p>
4
<p>Каждый шаг задания запускается в одной и той же директории. Туда же клонируется репозиторий экшеном<em>checkout</em>.</p>
4
<p>Каждый шаг задания запускается в одной и той же директории. Туда же клонируется репозиторий экшеном<em>checkout</em>.</p>
5
<h2>Операционная система</h2>
5
<h2>Операционная система</h2>
6
<p>Github Actions позволяет выбрать одну из трех операционных систем: Ubuntu, Windows и MacOS. Все возможные варианты перечислены на<a>специальной странице</a>. В большинстве случаев для запуска используется<em>ubuntu-latest</em>. А что если мы хотим тестировать код на разных операционных системах? Самый дубовый вариант - создать идентичные задания под каждую операционную систему, но можно лучше.</p>
6
<p>Github Actions позволяет выбрать одну из трех операционных систем: Ubuntu, Windows и MacOS. Все возможные варианты перечислены на<a>специальной странице</a>. В большинстве случаев для запуска используется<em>ubuntu-latest</em>. А что если мы хотим тестировать код на разных операционных системах? Самый дубовый вариант - создать идентичные задания под каждую операционную систему, но можно лучше.</p>
7
<p>В Github Actions встроена возможность описать одно задание так, чтобы оно запускалось для разных версий операционных систем, языков и так далее:</p>
7
<p>В Github Actions встроена возможность описать одно задание так, чтобы оно запускалось для разных версий операционных систем, языков и так далее:</p>
8
<h2>Переменные окружения</h2>
8
<h2>Переменные окружения</h2>
9
<p>С помощью ключа env можно добавить переменные окружения, доступные для всех шагов текущего задания:</p>
9
<p>С помощью ключа env можно добавить переменные окружения, доступные для всех шагов текущего задания:</p>
10
<p>Довольно много полезных переменных окружения<a>добавлено сразу</a>. Вот как их можно использовать прямо в шагах:</p>
10
<p>Довольно много полезных переменных окружения<a>добавлено сразу</a>. Вот как их можно использовать прямо в шагах:</p>
11
<p>Точно так же переменные можно определять или переопределять в конкретных шагах:</p>
11
<p>Точно так же переменные можно определять или переопределять в конкретных шагах:</p>
12
12