Задачи (tasks)

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

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

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

Примеры:

  • Задача внутри блока 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:
        ...
    

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

  • name — имя задачи;
  • cubes — список кубиков, которые будут выполняться в задаче.

cubes

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

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

  • name — имя кубика;
  • script — команда, которая будет выполнена в кубике;
  • needs — список кубиков, которые должны быть выполнены до выполнения текущего.
  • image — (опционально) Docker-образ, который будет использоваться для выполнения кубика.

image

Блок image содержит параметры Docker-образа, который будет использоваться для выполнения кубика.

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

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

Примеры:

  • Указание стандартного имя Docker-образа:

    workflows:
      my-workflow:
        tasks:
          - name: my-task
        	  cubes:
              - name: my-cube
                image: ubuntu:22.04
                script: echo "hello world!"
    
  • Указание пути в конкретном реестре:

    workflows:
      my-workflow:
        tasks:
          - name: my-task
        	  cubes:
              - name: my-cube
                image: cr.yandex/mirror/ubuntu:22.04
                script: echo "hello world!"
    

Если для доступа к реестру нужна аутентификация, то можно использовать в задаче команду docker login или задать настройки аутентификации в блоке image, например:

workflows:
  my-workflow:
    tasks:
      - name: my-task
    	  cubes:
          - name: my-cube
            image:
              name: some-docker-registry.com/account-name/ubuntu:22.04
              username: username 
              password: password

См. также