Рабочие процессы (workflows)
В блоке workflows
определяется перечень рабочих процессов CI/CD.
Рабочий процесс предназначен для логического объединения заданий, связанных с определенным этапом CI/CD.
Например, один рабочий процесс может выполняться для сборки, тестов, линтинга, проверок покрытия кода (code coverage) и т. д. Перечисленные этапы будут разными заданиями, объединенными в один рабочий процесс. Другой рабочий процесс будет выполняться, например, для генерации документации и развертывания новой версии ПО в промышленную эксплуатацию.
Все рабочие процессы запускаются параллельно.
Поддерживаются следующие параметры:
- tasks — список заданий, которые будут выполняться в рабочем процессе;
- settings — настройки, которые будут использоваться для всего рабочего процесса.
settings
В блоке settings
указываются общие для всего рабочего процесса настройки, например:
workflows:
my-workflow:
settings:
max_cube_duration: 20s
retry: 2
Примеры
-
Пример рабочего процесса с двумя заданиями, заданными в разном формате. Одно задание размещено внутри блока
workflows
, второе — вне его. В заданииmy-task
приведен пример использования зависимостей между кубиками, подробнее см. на странице Кубики (cubes).tasks: - name: another-task cubes: - name: D script: - echo It's another task. workflows: my-workflow: tasks: - name: my-task cubes: - name: A script: - touch test.txt - name: B needs: ['-'] script: - rm -f test.txt - name: C needs: ['A', 'B'] script: - ls - another-task ...
-
Пример с двумя различными рабочими процессами, запускаемыми в зависимости от типа события:
on: pull_request: - workflows: workflow-for-pr filter: source_branches: ["**", "!test**"] target_branches: "main" push: - workflows: workflow-for-push filter: branches: ["main"] workflows: workflow-for-pr: tasks: - name: sample-task-1 cubes: - name: sample-cube1 image: docker.io/library/node script: - echo Hello, world! workflow-for-push: tasks: - name: sample-task-2 cubes: - name: sample-cube2 script: - echo Test, and deploy your project.