HTML Diff
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