Рабочие процессы (workflows)

В блоке workflows определяется перечень рабочих процессов CI/CD.

Рабочий процесс предназначен для логического объединения заданий, связанных с определенным этапом CI/CD.

Например, один рабочий процесс может выполняться для сборки, тестов, линтинга, проверок покрытия кода (code coverage) и т. д. Перечисленные этапы будут разными заданиями, объединенными в один рабочий процесс. Другой рабочий процесс будет выполняться, например, для генерации документации и развертывания новой версии ПО в промышленную эксплуатацию.

Все рабочие процессы запускаются параллельно.

Поддерживаются следующие параметры:

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.
            

См. также