Ключевые слова для gitflic-ci.yaml


В этой документации перечислены ключевые слова для конфигурации вашего gitflic-ci.yaml файла

Глобальные ключевые слова

Ключевые слова Описание
image Docker Image
stages Имена и порядок выполнения этапов конвеера
cache Список файлов и каталогов для кэширования между задачами

Ключевые слова для задачи

Ключевые слова Описание
stage Определение стейджа для задачи
before_script Список шелл-скриптов которые будут выполнены агентаом перед задачей
scripts Список шелл-скриптов которые будут выполнены агентом
after_script Список шелл-скриптов которые будут выполнены агентом после задачи
artifacts Список файлов и каталогов для прикрепления к задачи в случае успеха.
directory
needs Данное поле может содержать массив названий задач, которые необходимы для выполнения текущей задачи.
except Название веток на которых задача не будет создана.
only Название веток на которых будет создан.
tags Теги задачи для агента.
allow_failure Используйте allow_failure, чтобы определить, должен ли конвеер продолжать работу в случае сбоя задачи.

Глобальные ключевые слова

image

Используйте image, чтобы указать образ Docker, в котором выполняется конвеер.

Пример:

image: maven:3.8.5-openjdk-11-slim


stages

Используйте stages, чтобы определить список этапов выполнения конвеера.

Если этапы не определены в gitflic-ci.yaml файле, то по умолчанию используются:

  • .pre
  • build
  • test
  • deploy
  • .post

Порядок элементов этапов определяет порядок выполнения задач:

  • задачи на одном этапе выполняются параллельно.
  • задачи на следующем этапе запускаются после успешного завершения заданий на предыдущем этапе. Если конвеер содержит только задачи на этапах .pre или .post, он не запускается. На другом этапе должна быть хотя бы одна другая работа. .pre и .post этапы можно использовать в требуемой конфигурации конвейера для определения задач соответствия, которые должны выполняться до или после задач конвеера проекта.

Пример:

stages:
  - build
  - test
  - deploy

  • Все этапы выполняются друг за другом. Если какой-либо этап будет провален, то не начнется следующий и конвеер завершится с ошибкой.
  • Если все эти этапы будут успешно пройдены, то конвеер будет считаться успешно выполненным.

cache

Используйте cache, чтобы указать список файлов и каталогов для кэширования между задачами. Вы можете использовать только те пути, которые есть в локальной рабочей копии.

Кэширование распределяется между конвейерами и заданиями. Кэши восстанавливаются раньше артефактов.

cache:paths

Используйте cache:paths, чтобы выбрать файлы или каталоги для кэширования.

Пример:

cache:
  paths:
    - .m2/repository/
    - core/target/
    - desktop/target/

cache:key

Используйте cache:key, чтобы присвоить кэшу уникальный идентификационный ключ. Все задачи, использующие один и тот же ключ кэша, используют один и тот же кэш.

Если не задано, по умолчанию используется ключ default. Все задания с cache ключевым словом, но без cache:key совместного использования default кеша.

Должен использоваться с cache: path, иначе ничего не кэшируется.

cache:when

Используется cache:when для определения времени сохранения кэша в зависимости от состояния задачи.

Должен использоваться с cache: paths, иначе ничего не кэшируется.

Возможные значения:

  • on_success(по умолчанию): Сохранять кеш только после успешного выполнения задачи.
  • on_failure: Сохранять кеш только в случае сбоя задачи.
  • always: всегда сохранять кеш.

Пример:

cache:
  paths:
    - .m2/repository/
    - core/target/
    - desktop/target/

Ключевые слова для задачи

stage

Используйте stage, для определения этапа для задачи.

Пример


stages:
  - build
  - deploy
  
job 0:
  stage: build
  

scripts

Используйте scripts, чтобы указать команды для выполнения агентом.

job1:
  script: apt-get update

job2:
  script:  
      - apt-get -y install maven
      - apt-get -y install git

    

before_script

Используйте before_script для определения массива команд, которые должны выполняться перед командами сценария каждого задачи, после восстановления артефактов.

Тип ключевого слова: Ключевое слово для задачи. Вы можете использовать его только как часть задачи или в разделе по умолчанию.

Возможные значения: Массив строк

Пример

job1:
  script: apt-get update
  before_script:
    - apt-get -y install maven
    - apt-get -y install git

Дополнительные сведения:

  • Сценарии, указанные в before_script, объединяются с любыми сценариями, указанными в script. Объединённые сценарии выполняются вместе в одной оболочке.

after_script

Используйте after_script для определения массива команд, которые должны выполняться после команд сценария каждой задачи, включая ошибочные задачи.

Тип ключевого слова: Ключевое слово для задачи. Вы можете использовать его только как часть задачи или по умолчанию во всем конвеерее.

Возможные значения: Массив строк:

Пример

job1:
  script: apt-get update
  after_script:
    - apt-get update
    - apt-get -y install maven
    - apt-get -y install git
  

Дополнительные сведения:

Если время ожидания задачи истекло или он был отменён, команды after_script не выполняются.

По умолчанию используются внешние before_script и after_script shell-скрипты, однако задача может иметь и свои собственные.

Если они не определены внутри задачи, то используются внешние.

Пример


image: test

stages:
  - test

job 0:
  stage: test
  scripts:
    - mvn test
  rules:
    - if: "predicate1 && predicate2"
      when: newer


artifacts

Используйте артефакты, чтобы указать, какие файлы сохранять в качестве артефактов задачи. Артефакты задачи - это список файлов и каталогов, которые присоединяются к задаче при его успешном выполнении, сбое или всегда.

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

При использовании ключевого слова needs задачи могут загружать артефакты только из задач, определённых в конфигурации needs.

Артефакты задач по умолчанию собираются только для успешных задач, а артефакты восстанавливаются после кэширования.

artifacts:paths

Пути относятся к каталогу проекта и не могут напрямую ссылаться за его пределы.

Тип ключевого слова: Ключевое слово для задачи. Вы можете использовать его только как часть задачи или в разделе по умолчанию.

Возможные значения:

  • Массив путей к файлам относительно каталога проекта.

Пример


artifacts:
    paths:
      - bin/usr/
      - bin/path
      - frontend/saw

artifacts:exclude

Используйте artifacts:exclude, чтобы предотвратить добавление файлов в архив артефактов.

Тип ключевого слова: Ключевое слово для задачи. Вы можете использовать его только как часть задачи или в разделе по умолчанию.

Возможные значения:

  • Массив путей к файлам относительно каталога проекта.

Пример


artifacts:
  exclude:
    - binaries/**/*.o

Данный пример сохраняет все файлы в binaries/, исключая *.o файлы, находящиеся в дочерних директориях binaries/.


needs

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

Пример


job-0:
  stage: test
  script: echo "Running job 0"

job-1:
  stage: test
  needs: job-0
  script: echo "Running job 1..." 
     

tags

Используйте tags для настройки агента.

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

Возможные значения

  • Массив названий тегов
job:
  tags:
    - java
    - postgres

allow_failure

Используйте allow_failure, чтобы определить, должен ли конвейер продолжать работу в случае сбоя задания. Значение по умолчанию каждой задачи - false

  • Чтобы конвейер продолжал выполнять последующие задачи, используйте allow_failure: true.

  • Чтобы запретить конвейеру выполнение последующих задачи, используйте allow_failure: false.

Возможные значения:

  • true или false

except

Используйте except чтобы указать ветки на которых задача не будет создана.

Возможные значения

  • Массив названий веток
job:
  except:
    - master
    - deploy

only

Используйте only чтобы ветки на которых будет работать задача.

Возможные значения

  • Массив названий веток
job:
  only: 
    - master

В данной статье

Документация