Задания (tasks)

В блоке tasks определяется перечень заданий, которые будут выполняться в рабочем процессе.

Каждое задание содержит в себе набор минимальных логических действий — кубиков. Результатом задания является выполнение всех кубиков.

Примечание

Все кубики одного задания запускаются на одной и той же виртуальной машине (воркере). Поэтому если один кубик изменит окружение воркера, например, установит пакет, создаст или удалит файл и т. д., это окружение останется для всех последующих кубиков, которые выполняются в рамках одного задания. Например, в первом кубике устанавливается пакет runtime для языка Go, во втором выполняется команда go build, а в следующем — go test. Подробнее о наследовании окружения см. на странице Кубики (cubes).

Если кубики запущены в разных заданиях, то они гарантированно будут исполняться на разных воркерах.

По умолчанию задание начинается с клонирования репозитория.

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

В заданиях и кубиках вы можете использовать переменные окружения, а также секреты.

Вы можете задать настройки конкретного задания как внутри блока workflows:tasks, так и в отдельном блоке tasks и сослаться на него из блока workflows:tasks. Формат описания задания для обоих вариантов идентичен.

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

  • name — имя задания.
  • cubes — список кубиков, которые будут выполняться в задании. Подробнее см. в разделе cubes.
  • envпеременные окружения, доступные во всех кубиках конкретного задания.

Примеры конфигураций заданий

  • Задание внутри блока workflows:tasks:

    workflows:
      my-workflow:
        tasks:
          - name: my-task
            cubes:
        ...
    
  • Задание в отдельном блоке tasks:

    tasks:
      - name: common-task
    
    workflows:
      my-workflow:
        tasks:
          - common-task
    
  • Несколько заданий в отдельном блоке tasks:

    tasks:
      - name: common-task-1
      - name: common-task-2
    
    workflows:
      my-workflow:
        tasks:
          - [common-task-1, common-task-2]
    
  • Комбинированный вариант указания заданий:

    tasks:
      - name: common-task-1
      - name: common-task-2
      - name: common-task-3
    
    workflows:
      my-workflow:
        tasks:
          - common-task-1
          - [common-task-2, common-task-3]
          - name: my-task
            cubes:
        ...
    

См. также