Справочная информация по синтаксису YAML для настройки CI/CD¶
Этот документ представляет собой справочное руководство по синтаксису файла .gitlab-ci.yml
, который используется для настройки конвейеров непрерывной интеграции и доставки (CI/CD) в AppSecCode. В этом файле вы определяете задания CI/CD, которые составляют ваш пайплайн.
- Если вы уже знакомы с основными концепциями CI/CD, попробуйте создать свой собственный файл
.gitlab-ci.yml
, следуя руководству, которое демонстрирует создание простых или сложных пайплайнов. - Чтобы увидеть большой файл
.gitlab-ci.yml
, используемый в корпоративных средах, посмотрите на файл.gitlab-ci.yml
для самого AppSecCode.
При редактировании файла .gitlab-ci.yml
вы можете проверить его валидность с помощью инструмента CI Lint.
Если вы редактируете содержимое на этой странице, следуйте инструкциям по документированию ключевых слов.
Конфигурация CI/CD пайплайна в AppSecCode включает следующие ключевые слова:
Ключевые слова¶
Ключевые слова, которые настраивают поведение пайплайна:
Ключевое слово | Описание |
---|---|
default |
Пользовательские значения по умолчанию для ключевых слов заданий. |
include |
Импорт конфигурации из других YAML файлов. |
stages |
Названия и порядок стадий пайплайна. |
workflow |
Управление типами запускаемых пайплайнов. |
Ключевые слова заголовков:
Ключевое слово | Описание |
---|---|
spec |
Определение спецификаций для внешних конфигурационных файлов. |
Ключевые слова для заданий, сконфигурированных с помощью job
:
Ключевое слово | Описание |
---|---|
after_script |
Переопределение набора команд, выполняемых после завершения задания. |
allow_failure |
Разрешение заданию завершиться неудачно. Неудача задания не приводит к сбою всего пайплайна. |
artifacts |
Список файлов и директорий, которые должны быть присоединены к заданию в случае успешного выполнения. |
before_script |
Переопределение набора команд, выполняемых перед запуском задания. |
cache |
Список файлов, которые должны быть закэшированы между последующими выполнениями. |
coverage |
Настройки покрытия кода для данного задания. |
dast_configuration |
Использование конфигурации профилей DAST на уровне задания. |
dependencies |
Ограничение передачи артефактов конкретному заданию путем указания списка заданий, от которых следует получать артефакты. |
environment |
Имя окружения, в которое должно быть развернуто задание. |
extends |
Вхождения конфигурации, наследуемые данным заданием. |
identity |
Аутентификация с третьими сторонами с использованием федерации идентичности. |
image |
Использование образов Docker. |
inherit |
Выбор глобальных настроек по умолчанию, которые наследуются всеми заданиями. |
interruptible |
Определение возможности отмены задания, если оно становится избыточным из-за более нового запуска. |
manual_confirmation |
Определение пользовательского сообщения подтверждения для ручного задания. |
needs |
Запуск заданий раньше порядка стадий. |
pages |
Загрузка результата выполнения задания для использования с Pages. |
parallel |
Количество экземпляров задания, которые должны выполняться параллельно. |
release |
Инструкции раннеру о генерации объекта выпуска. |
resource_group |
Ограничение конкурентности выполнения заданий. |
retry |
Определение количества возможных автоматических попыток перезапуска задания в случае неудачи. |
rules |
Список условий для оценки и определения выбранных атрибутов задания и принятия решения о его создании. |
script |
Сценарий оболочки, который выполняется раннером. |
run |
Конфигурация выполнения, которая выполняется раннером. |
secrets |
CI/CD секреты, необходимые заданию. |
services |
Использование образов служб Docker. |
stage |
Определение стадии задания. |
tags |
Список тегов, используемых для выбора раннера. |
timeout |
Определение пользовательского таймаута для задания, который имеет приоритет над общепроектной настройкой. |
trigger |
Определение триггера для запуска нижестоящего пайплайна. |
when |
Определение времени выполнения задания. |
Переменные CI/CD:
Ключевое слово | Описание |
---|---|
Default variables |
Определение переменных CI/CD по умолчанию для всех заданий в пайплайне. |
Job variables |
Определение переменных CI/CD для индивидуальных заданий. |
Некоторые ключевые слова не определены в рамках задания. Эти ключевые слова контролируют поведение пайплайна или импортируют дополнительную конфигурацию пайплайна.
Глобальные ключевые слова¶
default¶
Вы можете устанавливать глобальные значения по умолчанию для некоторых ключевых слов. Каждое ключевое слово по умолчанию копируется в каждую задачу, где оно ещё не определено. Если задание уже имеет определённое ключевое слово, то данное значение по умолчанию не используется.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения: Следующие ключевые слова могут иметь пользовательские значения по умолчанию:
after_script
artifacts
before_script
cache
hooks
id_tokens
image
interruptible
retry
services
tags
timeout
.
Дополнительная информация:
- Управляйте наследованием значений по умолчанию в заданиях с помощью
inherit: default
. - Глобальные значения по умолчанию не передаются в дочерние пайплайны, которые запускаются независимо от родительского пайплайна, вызвавшего дочерний пайплайн.
include¶
Используйте include
, чтобы включить внешние YAML-файлы в вашу конфигурацию CI/CD. Вы можете разделить один длинный файл .gitlab-ci.yml
на несколько файлов для повышения читаемости или уменьшить дублирование одной и той же конфигурации в нескольких местах.
Также можно хранить шаблоны файлов в центральном репозитории и включать их в проекты.
Файлы, включенные с помощью include
:
- Объединяются с теми, что находятся в файле
.gitlab-ci.yml
. - Всегда оцениваются первыми, затем объединяются с содержимым файла
.gitlab-ci.yml
, независимо от положения ключевого словаinclude
. - Время на разрешение всех файлов ограничено 30 секундами.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения: Включаемые подпункты include
:
include:component
include:local
include:project
include:remote
include:template
Дополнительно:
- Только определенные переменные CI/CD могут использоваться с ключевыми словами
include
. - Используйте слияние для кастомизации и переопределения включенных конфигураций CI/CD с помощью локального контекста.
Если вы заново запускаете:
- Задания: файлы
include
не извлекаются снова. Все задания в пайплайне используют конфигурацию, полученную при создании пайплайна. Любые изменения в исходных файлахinclude
не влияют на повторные запуски заданий. - Пайплайны: файлы
include
извлекаются снова. Если они изменились после последнего запуска пайплайна, новый пайплайн использует измененную конфигурацию.
Можно иметь до 150 включений на пайплайн по умолчанию, включая вложенные.
include:component¶
Используйте include:component
, чтобы добавить компонент CI/CD в конфигурацию пайплайна.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения:
- Полный адрес компонента CI/CD, форматированный как
<fully-qualified-domain-name>/<project-path>/<component-name>@<specific-version>
.
include:local¶
Используйте include:local
, чтобы включить файл, находящийся в том же репозитории и ветке, что и файл конфигурации, содержащий ключевое слово include
. Используйте include:local
вместо символических ссылок.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения:
- Полный путь относительно корневой директории (
/
): - Файл YAML должен иметь расширение
.yml
или.yaml
. - Можно использовать символы подстановки
*
и**
в пути к файлу. - Можно использовать определенные переменные CI/CD.
Дополнительная информация:
- Файл
.gitlab-ci.yml
и локальный файл должны находиться на одной ветке. - Нельзя включать локальные файлы через пути к подмодулям Системы.
- Оценка конфигурации
include
всегда производится на основе местоположения файла, содержащего ключевое словоinclude
, а не на проекте, который выполняет пайплайн. Если вложенное включение находится в файле конфигурации другого проекта,include:local
проверяет наличие этого файла в другом проекте.
include:project¶
Чтобы включить файлы из другого частного проекта на том же экземпляре AppSecCode используйте include:project
и include:file
.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения:
include:project
: полный путь к проекту AppSecCode.include:file
: полный путь к файлу или массив путей к файлам, относительный к корневой директории (/
). Файлы YAML должны иметь расширение.yml
или.yaml
.include:ref
: Необязательно. Ref для получения файла. По умолчанию этоHEAD
проекта, если не указано иначе.
Можно использовать определенные переменные CI/CD.
Дополнительная информация:
- Оценка конфигурации
include
всегда производится на основе местоположения файла, содержащего ключевое словоinclude
, а не на проекте, который выполняет пайплайн. Если вложенное включение находится в файле конфигурации другого проекта,include:local
проверяет наличие этого файла в другом проекте. - Когда начинается пайплайн, конфигурация файла
.gitlab-ci.yml
, включенная всеми методами, оценивается. Конфигурация представляет собой снимок во времени и сохраняется в базе данных. AppSecCode не отражает никаких изменений в указанной конфигурации файла.gitlab-ci.yml
до следующего запуска пайплайна. - При включении YAML-файла из другого частного проекта, пользователь, запускающий пайплайн, должен быть членом обоих проектов и иметь соответствующие разрешения для запуска пайплайнов. Может появиться ошибка «
not found or access denied
», если у пользователя нет доступа к каким-либо включенным файлам. - Будьте внимательны при включении конфигурации CI/CD файла из другого проекта. Никакие пайплайны или уведомления не срабатывают при изменении файлов CI/CD другого проекта. С точки зрения безопасности, это аналогично использованию сторонней зависимости. Для
ref
, рассмотрите:- Использование конкретного хэша SHA, который должен быть наиболее стабильным вариантом. Используйте полный 40-символьный хэш SHA, чтобы гарантировать, что будет ссылка на нужный коммит, так как использование короткого хэша SHA для
ref
может быть двусмысленным. - Применение правил защиты ветки и защищенного тега к
ref
в другом проекте. Защищенные теги и ветки с большей вероятностью проходят управление изменениями перед внесением изменений.
- Использование конкретного хэша SHA, который должен быть наиболее стабильным вариантом. Используйте полный 40-символьный хэш SHA, чтобы гарантировать, что будет ссылка на нужный коммит, так как использование короткого хэша SHA для
include:remote¶
Используйте include:remote
вместе с полным URL для включения файла из другого места.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения:
- Публичный URL, доступный по HTTP/HTTPS
GET
-запросу: - Аутентификация с удаленным URL не поддерживается.
- Файл YAML должен иметь расширение
.yml
или.yaml
. - Можно использовать определенные переменные CI/CD.
Дополнительная информация:
- Все вложенные включения выполняются без контекста как публичным пользователем, поэтому можно включать только общедоступные проекты или шаблоны. Переменные не доступны в разделе
include
вложенных включений. - Будьте осторожны при включении конфигурации CI/CD файла из другого проекта. Никакие пайплайны или уведомления не срабатывают при изменении файлов CI/CD другого проекта. С точки зрения безопасности, это аналогично использованию сторонней зависимости. Если вы ссылаетесь на другой проект AppSecCode, владельцем которого вы являетесь, рассмотрите возможность использования как защищенных веток, так и защищенных тегов для соблюдения правил управления изменениями.
include:template¶
Используйте include:template
, чтобы включить шаблоны .gitlab-ci.yml
.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения:
- Шаблон CI/CD:
- Все шаблоны можно просмотреть в
lib/gitlab/ci/templates
. Не все шаблоны предназначены для использования сinclude:template
, поэтому проверьте комментарии к шаблону перед использованием. - Можно использовать определенные переменные CI/CD.
Дополнительная информация:
- Все вложенные включения выполняются без контекста как публичным пользователем, поэтому можно включать только общедоступные проекты или шаблоны. Переменные не доступны в разделе
include
вложенных включений.
stages¶
Используйте stages
, чтобы определить этапы, которые содержат группы заданий. Используйте stage
в задании, чтобы настроить выполнение задания в определенном этапе.
Если stages
не определено в файле .gitlab-ci.yml
, то используются следующие стадии по умолчанию:
.pre
build
test
deploy
.post
Порядок элементов в stages
определяет порядок выполнения заданий:
- Задания в одном и том же этапе выполняются параллельно.
- Задания в следующем этапе начинаются после успешного завершения заданий предыдущего этапа.
Если пайплайн содержит только задания в стадиях .pre
или .post
, он не выполняется. Должно быть хотя бы одно другое задание в другой стадии. Стадии .pre
и .post
могут использоваться в обязательной конфигурации пайплайна для определения обязательных заданий, которые должны выполняться до или после основных заданий проекта.
Тип ключевого слова: Глобальное ключевое слово.
Дополнительная информация:
- Если задание явно не указывает стадию, оно автоматически присваивается к стадии
test
. - Если стадия определена, но ни одно задание её не использует, она остается невидимой в пайплайне. Это помогает в конфигурациях пайплайнов для соответствия требованиям:
- Стадии могут быть определены в конфигурации соответствия, но остаются скрытыми, пока разработчики не начнут их использовать в определениях заданий.
- Чтобы заставить задание начаться раньше и проигнорировать порядок стадий, используйте ключевое слово
needs
.
workflow¶
Используйте workflow
, чтобы контролировать поведение пайплайна.
Вы можете использовать некоторые предопределённые переменные CI/CD в конфигурации workflow
, но не переменные, которые определяются только тогда, когда задания уже начали выполняться.
workflow:auto_cancel:on_new_commit¶
Используйте workflow:auto_cancel:on_new_commit
, чтобы настроить поведение функции автоматической отмены избыточных пайплайнов.
Поддерживаемые значения:
conservative
: Отмена пайплайна, но только если ещё не были начаты задания сinterruptible: false
. Значение по умолчанию, если не определено.interruptible
: Отмена только тех заданий, у которыхinterruptible: true
.none
: Не выполнять автоматическую отмену каких-либо заданий.
workflow:auto_cancel:on_job_failure¶
Используйте workflow:auto_cancel:on_job_failure
, чтобы настроить, какие задания следует отменить сразу после сбоя одного из заданий.
Поддерживаемые значения:
all
: Отмена всего пайплайна и всех выполняющихся заданий сразу после сбоя любого задания.none
: Не выполнять автоматическую отмену каких-либо заданий.
workflow:name¶
Используйте workflow:name
, чтобы задать имя для пайплайна.
Все пайплайны получают указанное имя. Пробелы в начале и конце имени удаляются.
Поддерживаемые значения:
- Строка.
- Переменные CI/CD.
- Комбинация строк и переменных.
Дополнительная информация:
- Если имя является пустой строкой, пайплайну не присваивается имя. Имя, состоящее исключительно из переменных CI/CD, может стать пустым, если все эти переменные также пусты.
workflow:rules:variables
становятся переменными по умолчанию, доступными во всех заданиях, включая триггерные задания, которые передают переменные вниз по потоку в дочерние пайплайны по умолчанию. Если дочерний пайплайн использует ту же переменную, переменная верхнего уровня имеет приоритет и переопределяет переменную по умолчанию. Убедитесь, что либо:- Используете уникальные имена переменных в конфигурации пайплайна каждого проекта, например
PROJECT1_VARIABLE_NAME
. - Используете
inherit:variables
в триггерном задании и указываете точные переменные, которые хотите передать в дочерний пайплайн.
- Используете уникальные имена переменных в конфигурации пайплайна каждого проекта, например
workflow:rules¶
Ключевое слово rules
в секции workflow
работает аналогично правилам, применяемым к отдельным заданиям (job
), но контролирует создание всего пайплайна, а не отдельных его частей.
Если ни одно из правил не выполняется, пайплайн не запускается.
Поддерживаемые значения: В правилах можно использовать те же ключевые слова, что и при настройке заданий:
rules: if
rules: changes
rules: exists
when
: Только значенияalways
илиnever
допустимы при использовании сworkflow
.variables
Дополнительная информация:
- Если правила совпадают как для пайплайнов веток (за исключением основной ветки), так и для пайплайнов запросов на слияние, могут возникать дублирующие пайплайны.
start_in, allow_failure
иneeds
не поддерживаются вworkflow:rules
, однако они не вызовут синтаксической ошибки. Несмотря на отсутствие текущего эффекта, не рекомендуется использовать их вworkflow:rules
, так как это может привести к синтаксическим ошибкам в будущем.
workflow:rules:variables¶
Используйте workflow:rules:variables
, чтобы определить переменные для конкретных условий пайплайна.
Когда условие срабатывает, переменная создается и становится доступна всем заданиям в пайплайне. Если такая переменная уже определена на уровне всей конфигурации как переменная по умолчанию, переменная из workflow:rules:variables
имеет приоритет и переопределяет значение переменной по умолчанию.
Тип ключевого слова: Глобальное ключевое слово.
Поддерживаемые значения: Пары «имя переменной — значение»:
- Имя переменной может содержать только цифры, буквы и символы подчеркивания
_
. - Значение должно быть строкой.
Когда ветка является веткой по умолчанию:
- Значение
DEPLOY_VARIABLE
дляjob1
—job1-deploy-production
. - Значение
DEPLOY_VARIABLE
дляjob2
—deploy-production
.
Когда ветка является фичей:
- Значение
DEPLOY_VARIABLE
дляjob1
—job1-default-deploy
, аIS_A_FEATURE
равноtrue
. - Для
job2
значенияDEPLOY_VARIABLE
—default-deploy
, аIS_A_FEATURE
также равноtrue
.
Когда ветка другая:
- Значение
DEPLOY_VARIABLE
дляjob1
—job1-default-deploy
. - Для
job2
значениеDEPLOY_VARIABLE
—default-deploy
.
Дополнительная информация:
workflow:rules:variables
становятся переменными по умолчанию, доступными во всех заданиях, включая триггерные задания, которые передают переменные вниз по потоку в дочерние пайплайны по умолчанию. Если дочерний пайплайн использует ту же переменную, переменная верхнего уровня имеет приоритет и переопределяет переменную по умолчанию. Убедитесь, что либо:- Используете уникальные имена переменных в конфигурации пайплайна каждого проекта, например
PROJECT1_VARIABLE_NAME
. - Используете
inherit:variables
в триггерном задании и указываете точные переменные, которые хотите передать в дочерний пайплайн.
- Используете уникальные имена переменных в конфигурации пайплайна каждого проекта, например
workflow:rules:auto_cancel¶
Используйте workflow:rules:auto_cancel
, чтобы настроить поведение функций workflow:auto_cancel:on_new_commit
или workflow:auto_cancel:on_job_failure
.
Поддерживаемые значения:
on_new_commit: workflow:auto_cancel:on_new_commit
on_job_failure: workflow:auto_cancel:on_job_failure
Ключевые слова заголовка¶
Некоторые ключевые слова должны быть определены в разделе заголовка YAML-файла конфигурации. Этот раздел должен находиться в самом верху файла и отделяться от остального содержимого тройным дефисом (---
).
spec¶
Добавьте секцию spec
в заголовок YAML-файла, чтобы настроить поведение пайплайна, когда конфигурация добавляется в пайплайн с использованием ключевого слова include
.
spec:inputs¶
Используйте spec:inputs
, чтобы определить входные параметры для CI/CD конфигурации, которую вы намерены добавить в пайплайн с помощью include
. Используйте include:inputs
, чтобы определить значения, которые будут использоваться при запуске пайплайна.
Используйте входные данные для кастомизации поведения конфигурации при включении её в CI/CD конфигурацию.
Используйте формат интерполяции $[[ inputs.input-id ]]
, чтобы ссылаться на значения вне раздела заголовка. Входные данные оцениваются и интерполируются при получении конфигурации во время создания пайплайна, но перед тем, как эта конфигурация объединяется с содержимым файла .gitlab-ci.yml
.
Тип ключевого слова: Ключевое слово заголовка. spec
должна быть объявлена вверху файла конфигурации, в секции заголовка.
Поддерживаемые значения:
- Хэш строк, представляющих ожидаемые входные параметры.
Дополнительная информация:
- Входные данные обязательны, если вы явно не используете
spec:inputs:default
для установки значений по умолчанию. - Входные данные ожидают строковые значения, если явно не указано другое с помощью
spec:inputs:type
. - Строка, содержащая блок интерполяции, не должна превышать 1 МБ.
- Содержимое внутри блока интерполяции не должно превышать 1 КБ.
spec:inputs:default¶
Входные параметры обязательны при включении, если явно не установлено значение по умолчанию с помощью spec:inputs:default
.
Используйте default: ''
, чтобы не иметь значения по умолчанию.
Тип ключевого слова: Ключевое слово заголовка. spec
должна быть объявлена в верхней части файла конфигурации, в секции заголовка.
Поддерживаемые значения:
- Строка, представляющая значение по умолчанию, или
' '
.
Дополнительная информация:
- Пайплайн завершится с ошибкой валидации, если входной параметр:
- Использует одновременно
default
и список опций, но значение по умолчанию не входит в этот список. - Использует одновременно
default
и регулярное выражение, но значение по умолчанию не соответствует этому регулярному выражению. - Не соответствует типу данных.
- Использует одновременно
spec:inputs:description¶
Используйте spec:inputs:description
, чтобы добавить описание конкретного входного параметра. Описание не влияет на поведение этого параметра и служит лишь для помощи пользователям файла в понимании его назначения.
Тип ключевого слова: Ключевое слово заголовка. spec
должна быть объявлена в верхней части файла конфигурации, в секции заголовка.
Поддерживаемые значения:
- Строка, представляющая описание.
spec:inputs:options¶
Входные параметры могут использовать options
, чтобы указать список допустимых значений для данного параметра. Максимальное количество опций на один параметр — 50.
Тип ключевого слова: Ключевое слово заголовка. spec должна быть объявлена в верхней части файла конфигурации, в секции заголовка.
Поддерживаемые значения:
- Массив вариантов входных параметров.
Дополнительная информация:
- Пайплайн завершится с ошибкой валидации, если:
- Входной параметр использует одновременно
options
иdefault
, но значение по умолчанию не входит в список опций. - Одна из опций не соответствует типу данных (строка или число, но не логическое значение при использовании
options
).
- Входной параметр использует одновременно
spec:inputs:regex¶
Используйте spec:inputs:regex
, чтобы указать регулярное выражение, которому должен соответствовать входной параметр.
Тип ключевого слова: Ключевое слово заголовка. spec
должна быть объявлена в верхней части файла конфигурации, в секции заголовка.
Поддерживаемые значения:
- Должно быть регулярное выражение.
Дополнительная информация:
inputs:regex
может использоваться только с типомstring
, а не с типамиnumber
илиboolean
.- Не заключаете регулярное выражение в символ
/
. Например, используйтеregex.*
, а не/regex.*/
. - inputs:regex использует библиотеку RE2 для парсинга регулярных выражений.
spec:inputs:type¶
По умолчанию входные параметры ожидают строковых значений. Используйте spec:inputs:type
, чтобы установить требуемый тип для входных параметров.
Тип ключевого слова: Ключевое слово заголовка. spec
должна быть объявлена в верхней части файла конфигурации, в секции заголовка.
Поддерживаемые значения: Может быть одно из следующих:
array
: для принятия массива входных данных.string
: для принятия строковых входных данных (значение по умолчанию, если не указано иное).number
: для приема только числовых входных данных.boolean
: для приема только значенийtrue
илиfalse
.
Ключевые слова задания¶
Следующие темы объясняют, как использовать ключевые слова для настройки CI/CD пайплайнов.
after_script¶
Используйте after_script
, чтобы определить массив команд, который будет выполнен последним после завершения разделов before_script
и script
в задании. Команды из after_script
также выполняются, когда:
- Задание отменено, пока выполняются команды из разделов
before_script
илиscript
. - Задание завершается сбоем с типом сбоя
script_failure
, но не другими типами сбоев.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Массив, включающий:
- Однострочные команды.
- Длинные команды, разбитые на несколько строк.
- Якоря YAML.
Переменные CI/CD поддерживаются.
Дополнительная информация:
Команды, определенные в after_script
, выполняются в новой оболочке, отдельно от команд из разделов before_script
или script
. Это приводит к следующим особенностям:
- Текущий рабочий каталог возвращается к значению по умолчанию (в соответствии с переменными, определяющими, как раннер обрабатывает запросы Системы).
-
У них нет доступа к изменениям, сделанным командами из разделов
before_script
илиscript
, включая:- Алиасы команд и переменные, экспортированные в разделе
script
. - Изменения вне рабочего дерева (в зависимости от исполнителя раннера), такие как программное обеспечение, установленное командой из раздела
before_script
илиscript
.
- Алиасы команд и переменные, экспортированные в разделе
-
Отдельный таймаут. Для Runner версии 16.4 и выше он по умолчанию составляет 5 минут и может быть настроен с помощью переменной окружения
RUNNER_AFTER_SCRIPT_TIMEOUT
. - Эти команды не влияют на код выхода задания. Если раздел
script
завершен успешно, а команда изafter_script
завершилась тайм-аутом или неудачно, задание завершается кодом0
(Рабочее задание). - Существует известная проблема с использованием маркеров работы CI/CD в команде
after_script
. Вы можете использовать маркер работы для аутентификации в командахafter_script
, но маркер немедленно станет недействительным, если задание будет отменено.
Если задание завершилось тайм-аутом, команды из after_script
не выполняются. Существует проблема, которая добавит поддержку выполнения команд after_script
для заданий, завершившихся тайм-аутом.
allow_failure¶
Используйте allow_failure
, чтобы определить, должен ли пайплайн продолжать работу, когда задание завершается неудачно.
- Чтобы позволить пайплайну продолжить выполнение последующих заданий, используйте
allow_failure: true
. - Чтобы остановить выполнение последующих заданий в пайплайне, используйте
allow_failure: false
.
Когда разрешено допускать сбои заданий (с allow_failure: true
), предупреждающий знак указывает на то, что задание завершилось неудачно. Однако пайплайн считается успешным, и связанный коммит помечается как прошедший без предупреждений.
Это же предупреждение отображается, когда:
- Все остальные задания в стадии завершены успешно.
- Все остальные задания в пайплайне завершены успешно.
Значением по умолчанию для allow_failure
является:
true
для ручных заданий.false
для заданий, где используетсяwhen: manual
внутри правил.false
во всех остальных случаях.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
true
илиfalse
.
Дополнительная информация:
- Вы можете использовать
allow_failure
в качестве подключаемого ключа к правилам. - Если установлено
allow_failure: true
, задание всегда считается успешным, и последующие задания сwhen: on_failure
не начнутся, если это задание завершится неудачно. - Вы можете использовать
allow_failure: false
с ручным заданием, чтобы создать блокирующее ручное задание. Блокированный пайплайн не выполняет никаких заданий в последующих стадиях до тех пор, пока ручное задание не будет запущено и успешно завершено.
allow_failure:exit_codes¶
Используйте allow_failure:exit_codes
, чтобы управлять тем, когда задание должно считаться завершившимся неудачно. Задание будет считаться allow_failure: true
для любого из указанных кодов выхода и allow_failure: false
для всех остальных кодов выхода.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Один код выхода.
- Массив кодов выхода.
artifacts¶
Используйте artifacts
, чтобы указать, какие файлы нужно сохранить в виде артефактов задания. Артефакты задания — это список файлов и директорий, которые присоединяются к заданию, когда оно завершается успехом, неудачей или всегда.
Артефакты отправляются в AppSecCode после завершения задания. Они доступны для скачивания в интерфейсе AppSecCode, если размер меньше максимального размера артефакта.
По умолчанию, задания в более поздних стадиях автоматически загружают все артефакты, созданные заданиями в предыдущих стадиях. Поведение загрузки артефактов можно контролировать в заданиях с зависимостями.
При использовании ключевого слова needs
задания могут загружать артефакты только из заданий, определенных в конфигурации needs
.
Артефакты заданий собираются по умолчанию только для успешных заданий, и артефакты восстанавливаются после кешей.
artifacts:paths¶
Пути относительны к каталогу проекта ($CI_PROJECT_DIR
) и не могут напрямую ссылаться за его пределами.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Массив путей к файлам относительно каталога проекта.
- Переменные CI/CD поддерживаются.
Дополнительная информация:
- Если не используется с
artifacts:name
, файл артефакта называетсяartifacts
, который становитсяartifacts.zip
при загрузке.
artifacts:exclude¶
Используйте artifacts:exclude
, чтобы предотвратить добавление файлов в архив артефактов.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Массив путей к файлам относительно каталога проекта.
- Вы можете использовать подстановочные знаки, которые используют шаблоны глобулярных или двойных звездочек
doublestar.PathMatch
.
Дополнительная информация:
- Пути в
artifacts:exclude
ищутся не рекурсивно. - Файлы, соответствующие
artifacts:untracked
, также могут быть исключены с помощьюartifacts:exclude
.
artifacts:expire_in¶
Используйте expire_in
, чтобы указать, как долго хранятся артефакты задания перед их истечением и удалением. Настройка expire_in
не влияет на:
- Артефакты последнего задания, если только сохранение последних артефактов задания не отключено на уровне проекта или инстанции.
После истечения срока действия артефакты удаляются ежечасно с помощью задания cron и становятся недоступными.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Время истечения. Если единица времени не указана, время указывается в секундах. Допустимые значения включают:
42
42 seconds
3 mins 4 sec
2 hrs 20 min
2h 20min
6 mos 1 day
47 yrs 6 mos and 4d
3 weeks and 2 days
never
Дополнительная информация:
- Период действия начинается, с момента когда артефакт загружен и сохранен на AppSecCode. Если срок истечения не указан, он по умолчанию принимается равным настройке всей инстанции.
-
Чтобы изменить дату истечения и защитить артефакты от автоматического удаления:
- Выберите пункт "Keep" на странице задания.
- Установите значение
expire_in
вnever
.
-
Если время истечения слишком короткое, задания в последующих стадиях длительного пайплайна могут попытаться получить просроченные артефакты из предыдущих заданий. Если артефакты устарели, задания, пытающиеся их получить, терпят неудачу с ошибкой "
could not retrieve the needed artifacts
". Установите время истечения достаточно большим или используйтеdependencies
в последующих заданиях, чтобы они не пытались получить просроченные артефакты. artifacts:expire_in
не влияет на развертывание Pages. Чтобы настроить истечение срока действия развертываний страниц, используйтеpages:pages.expire_in
.
artifacts:expose_as¶
Используйте artifacts:expose_as
, чтобы сделать доступными артефакты задания в интерфейсе слияния запросов.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Имя, которое будет отображаться в интерфейсе слияния запросов для ссылки на загрузку артефактов. Должно использоваться совместно с
artifacts:paths
.
Дополнительная информация:
-
Артефакты сохраняются, но не отображаются в интерфейсе, если пути
artifacts:paths
содержат:- Использование переменных CI/CD.
- Определение директории, но без окончания символом
/.
Например,directory/
работает сartifacts:expose_as
, ноdirectory
— нет. - Начало с
./
. Например,file
работает сartifacts:expose_as
, но./file
— нет.
-
Максимум 10 артефактов заданий на слияние запросов может быть открыто.
- Шаблоны подстановки не поддерживаются.
- Если указана директория и в ней содержится более одного файла, ссылка ведет на браузер артефактов задания.
- Если для Pages включена поддержка, AppSecCode автоматически визуализирует артефакт, если это одиночный файл с одним из следующих расширений:
.html
или.htm
.txt
.json
.xml
.log
artifacts:name¶
Используйте artifacts:name
, чтобы определить имя создаваемого архива артефактов. Вы можете задавать уникальное имя для каждого архива.
Если имя не определено, по умолчанию используется artifacts
, которое преобразуется в artifacts.zip
при загрузке.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Имя архива артефактов. Переменные CI/CD поддерживаются. Должно использоваться совместно с
artifacts:paths
.
Используйте переменные CI/CD для определения имени артефактов.
artifacts:public¶
Используйте artifacts:public
, чтобы определить, должны ли артефакты задания быть общедоступными.
Когда artifacts:public
равно true
(по умолчанию), артефакты в публичных пайплайнах доступны для скачивания анонимным, гостевым и репортерским пользователям.
Чтобы запретить чтение артефактов в публичных пайплайнах анонимным, гостевым пользователям и пользователями с ролью reporter, установите artifacts:public
в false
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
true
(по умолчанию, если не определено) илиfalse
.
artifacts:access¶
Используйте artifacts:access
, чтобы определить, кто может получить доступ к артефактам задания через AppSecCode UI или API. Эта опция не препятствует передаче артефактов в дочерние пайплайны.
Нельзя использовать artifacts:public
и artifacts:access
в одном и том же задании.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
all
(по умолчанию): Артефакты в задании в публичных пайплайнах доступны для скачивания любым пользователем, включая анонимных, гостей и пользователей с ролью reporter.developer
: Артефакты в задании доступны для скачивания только пользователям с ролью разработчика или выше.none
: Артефакты в задании недоступны для скачивания никому.
Дополнительная информация:
artifacts:access
также влияет наartifacts:reports
, поэтому вы также можете ограничить доступ к артефактам отчетов.
artifacts:reports¶
Используйте artifacts:reports
, чтобы собрать артефакты, генерируемые включенными шаблонами в заданиях.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Список доступных типов отчетов артефактов.
Дополнительная информация:
- Комбинирование отчетов в родительских пайплайнах с использованием артефактов из дочерних пайплайнов не поддерживается. Следите за прогрессом добавления поддержки в этой задаче.
- Чтобы иметь возможность просматривать и скачивать выходные файлы отчета, включите ключевое слово
artifacts:paths
. Это приведет к загрузке и хранению артефакта дважды. - Артефакты, созданные для
artifacts:reports
, всегда загружаются независимо от результатов выполнения задания (успех или неудача). Вы можете использоватьartifacts:expire_in
, чтобы установить срок действия артефакта.
artifacts:untracked¶
Используйте artifacts:untracked
, чтобы добавить все не отслеживаемые файлы Системы в качестве артефактов (вдобавок к путям, определенным в artifacts:paths
). artifacts:untracked
игнорирует конфигурацию в .gitignore
репозитория, так что совпадающие артефакты в .gitignore
будут включены.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
true
илиfalse
(по умолчанию, если не определено).
artifacts:when¶
Используйте artifacts:when
, чтобы загрузить артефакты при сбое задания или несмотря на него.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
on_success
(по умолчанию): Загружайте артефакты только тогда, когда задание выполнено успешно.on_failure
: Загружайте артефакты только тогда, когда задание завершается неудачно.always
: Всегда загружайте артефакты (за исключением случаев, когда задания завершаются тайм-аутом). Например, когда необходимо загрузить артефакты для устранения неполадок при сбое тестов.
Дополнительная информация:
- Артефакты, созданные для
artifacts:reports
, всегда загружаются независимо от результата выполнения задания (успеха или неудачи).artifacts:when
не изменяет это поведение.
before_script¶
Используйте before_script
, чтобы определить массив команд, которые должны выполниться перед основными командами скрипта в каждом задании, но после восстановления артефактов.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Массив, включающий:
- Однострочные команды.
- Длинные команды, разбитые на несколько строк.
- Якоря YAML.
Переменные CI/CD поддерживаются.
Дополнительная информация:
- Команды, определенные в
before_script
, объединяются с командами основного скрипта. Эти объединенные команды выполняются вместе в одной оболочке. - Использование
before_script
на верхнем уровне, но не в разделеdefault
, является устаревшим.
cache¶
Используйте cache
, чтобы указать список файлов и директорий, которые нужно закэшировать между заданиями. Вы можете использовать только те пути, которые находятся в локальной рабочей копии.
Кэши:
- Общие для пайплайнов и заданий.
- По умолчанию не разделяются между защищенными и незащищенными ветками.
- Восстанавливаются перед артефактами.
- Ограничены максимальным количеством четырех различных кэшей.
Вы можете отключить кэширование для конкретных заданий, например, чтобы переопределить:
- Кэш по умолчанию, определенный с помощью
default
. - Конфигурацию для задания, добавленного с помощью
include
.
cache:paths¶
Используйте cache:paths
, чтобы выбрать, какие файлы или директории нужно закэшировать.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Массив путей относительно каталога проекта (
$CI_PROJECT_DIR
). Вы можете использовать подстановочные знаки, которые используют шаблоны glob.
Переменные CI/CD поддерживаются.
Дополнительная информация:
- Ключевое слово
cache:paths
включает файлы даже если они не отслеживаются или находятся в вашем.gitignore
.
cache:key¶
Используйте cache:key
, чтобы дать каждому кэшу уникальный идентификатор. Все задания, использующие один и тот же ключ кэша, используют один и тот же кэш, включая разные пайплайны.
Если не установлен, ключом по умолчанию является default
. Все задания с ключевым словом cache
, но без cache:key
, используют общий кэш по умолчанию.
Необходимо использовать с cache:paths
, иначе ничего не будет закэшировано.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Строка.
- Предопределенная переменная CI/CD.
- Сочетание того и другого.
Дополнительная информация:
- Если вы используете Windows Batch для запуска своих сценариев оболочки, вам необходимо заменить
$
на%
. Например:key: %CI_COMMIT_REF_SLUG%
-
Значение
cache:key
не может содержать:- Символ
/
или эквивалентный ему закодированный%2F
. - Только символ
.
(любое количество), или эквивалентный ему закодированный%2E
.
- Символ
-
Кэш является общим для заданий, поэтому, если вы используете различные пути для разных заданий, вам следует также установить другой
cache:key
. В противном случае содержимое кэша может быть перезаписано.
cache:key:files¶
Используйте cache:key:files
, чтобы сгенерировать новый ключ, когда один или два конкретных файла изменяются. cache:key:files
позволяет повторно использовать некоторые кэши и перестраивать их реже, что ускоряет выполнение последующих пайплайнов.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Массив, состоящий из одного или двух путей к файлам.
Переменные CI/CD не поддерживаются.
Дополнительная информация:
- Ключ кэша представляет собой SHA, вычисленный из самых последних коммитов, изменивших каждый указанный файл. Если ни один из файлов не изменяется в каких-либо коммитах, используется ключ по умолчанию
default
.
cache:key:prefix¶
Используйте cache:key:prefix
, чтобы объединить префикс с SHA, вычисленным для cache:key:files
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Строка.
- Предопределенная переменная CI/CD.
- Сочетание того и другого.
Дополнительная информация:
- Если ни один файл в
cache:key:files
не изменяется в каком-либо коммите, к префиксу добавляется ключ по умолчанию.
cache:untracked¶
Используйте cache:untracked: true
, чтобы закэшировать все файлы, которые не отслеживаются в вашем AppSecCode-репозитории. Некэшированные файлы включают файлы, которые:
- Пропущены из-за настройки
.gitignore
. - Создаются, но не добавляются в чек-ин с помощью
git add
.
Кэширование некэшированных файлов может привести к созданию неожиданно больших кэшей, если задание загружает такие вещи, как:
- Зависимости, такие как геммы или модули узла, которые обычно не отслеживаются.
- Артефакты из другого задания. Файлы, извлеченные из артефактов, по умолчанию являются некэшированными.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
true
илиfalse
(по умолчанию).
Дополнительная информация:
- Вы можете объединить
cache:untracked
сcache:paths
, чтобы закэшировать все некэшированные файлы, а также файлы в указанных путях. Используйтеcache:paths
, чтобы закэшировать любые конкретные файлы, включая отслеживаемые файлы или файлы, находящиеся вне рабочего каталога, и используйтеcache:untracked
, чтобы также закэшировать все некэшированные файлы.
cache:unprotect¶
Используйте cache:unprotect
, чтобы разрешить совместное использование кэша между защищенными и незащищенными ветками.
Когда установлено значение true
, пользователи без доступа к защищенным веткам могут читать и записывать в кэш-ключи, используемые защищенными ветками.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
true
илиfalse
(по умолчанию).
cache:when¶
Используйте cache:when
, чтобы определить, когда сохранять кэш, основываясь на статусе задания.
Необходимо использовать с cache:paths
, иначе ничего не будет закэшировано.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
on_success
(по умолчанию): Сохраняйте кэш только в том случае, если задание выполнено успешно.on_failure
: Сохраняйте кэш только в том случае, если задание завершилось неудачей.always
: Всегда сохраняйте кэш.
cache:policy¶
Чтобы изменить поведение загрузки и выгрузки кэша, используйте ключевое слово cache:policy
. По умолчанию, задание загружает кэш при запуске и выгружает изменения в кэш при завершении работы. Этот стиль кэширования называется политикой вытягивания-проталкивания (pull-push, по умолчанию).
Чтобы задать задание таким образом, чтобы оно только загружало кэш при запуске, но никогда не выгружало изменения при завершении работы, используйте cache:policy:pull
.
Чтобы задать задание таким образом, чтобы оно только выгружало кэш при завершении работы, но никогда не загружало его при запуске, используйте cache:policy:push
.
Используйте политику вытягивания, когда имеется много параллельно выполняющихся заданий, использующих один и тот же кэш. Эта политика ускоряет выполнение заданий и снижает нагрузку на сервер кэша. Вы можете использовать задание с политикой проталкивания для построения кэша.
Необходимо использовать с cache:paths
, иначе ничего не будет закэшировано.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
pull
push
pull-push
(по умолчанию).- Переменные CI/CD.
cache:fallback_keys¶
Используйте cache:fallback_keys
, чтобы указать список ключей, которые можно попробовать использовать для восстановления кэша, если для cache:key
не найдено никакого кэша. Кеши извлекаются в порядке, указанном в разделе fallback_keys
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Массив ключей кеша.
dependencies¶
Используйте dependencies
, чтобы определить список определенных заданий, из которых нужно получить артефакты. Указанные задания должны находиться во всех предыдущих стадиях. Также можно настроить задание на загрузку вообще никаких артефактов.
Когда dependencies
не определено в задании, все задания на предыдущих стадиях считаются зависимыми, и задание загружает все артефакты из этих заданий.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Имена заданий для загрузки артефактов.
- Пустой массив
[]
, чтобы настроить задание на отказ от загрузки любых артефактов.
Задание deploy
загружает артефакты из всех предыдущих заданий благодаря приоритету стадий.
Дополнительная информация:
- Статус задания не имеет значения. Если задание завершается ошибкой или является ручным и не запускается, ошибки не возникает.
- Если артефакты зависимого задания устарели или удалены, задание завершается ошибкой.
- Чтобы получить артефакты из задания на той же стадии, нужно использовать
needs:artifacts
. Не следует сочетатьdependencies
иneeds
в одном и том же задании.
environment¶
Используйте environment
, чтобы определить среду, в которую развертывается задание.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Имя среды, в которую развертывается задание, в одном из следующих форматов:
- Простой текст, включающий буквы, цифры, пробелы и следующие символы:
-
,_
,/
,$
,{
,}
. - Переменные CI/CD, включая предопределенные, проектные, групповые, экземпляров или переменные, определенные в файле
.gitlab-ci.yml
. Нельзя использовать переменные, определенные в разделеscript
.
Дополнительная информация:
- Если вы указываете
environment
и никакой среды с этим именем не существует, среда создается.
environment:name¶
Установите имя для среды.
Распространенные имена сред — qa
, staging
и production
, но вы можете использовать любое имя.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Имя среды, в которую развертывается задание, в одном из следующих форматов:
- Простой текст, включающий буквы, цифры, пробелы и следующие символы:
-
,_
,/
,$
,{
,}
. - Переменные CI/CD, включая предопределенные, проектные, групповые, экземпляров или переменные, определенные в файле
.gitlab-ci.yml
. Нельзя использовать переменные, определенные в разделеscript
.
environment:url¶
Установите URL для среды.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Одиночный URL в одном из следующих форматов:
- Простой текст, такой как
https://prod.example.com
. - Переменные CI/CD, включая предопределенные, проектные, групповые, экземпляров или переменные, определенные в файле
.gitlab-ci.yml
. Нельзя использовать переменные, определенные в разделеscript
.
Дополнительная информация:
- После завершения задания вы сможете получить доступ к URL, выбрав кнопку в представлении запроса на слияние, среде или страницах развертывания.
environment:on_stop¶
Закрытие (остановка) сред может быть достигнуто с использованием ключевого слова on_stop
, определенного в разделе environment
. Оно указывает на другое задание, которое выполняется для закрытия среды.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Дополнительная информация:
- См.
environment:action
для получения дополнительных сведений.
environment:action¶
Используйте ключевое слово action
, чтобы указать, как задание взаимодействует с окружением.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Одно из следующих ключевых слов:
Значение value | Описание |
---|---|
start |
Значение по умолчанию. Указывает, что задание начинает окружение. Развертывание создается после начала задания. |
prepare |
Указывает, что задание лишь подготавливает окружение. Оно не вызывает развертываний. |
stop |
Указывает, что задание останавливает окружение. |
verify |
Указывает, что задание лишь проверяет окружение. Оно не вызывает развертываний. |
access |
Указывает, что задание лишь получает доступ к окружению. Оно не вызывает развертываний. |
environment:auto_stop_in¶
Ключевое слово auto_stop_in
определяет срок службы среды. Когда среда истекает, AppSecCode автоматически останавливает ее.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Период времени, записанный на естественном языке. Например, все это эквивалентно:
168 hours
7 days
one week
never
Ключевое слово auto_stop_in
может использоваться для всех действий среды, кроме stop
. Некоторые действия могут использоваться для сброса запланированного времени остановки среды.
environment:kubernetes¶
Используйте ключевое слово kubernetes
, чтобы настроить панель мониторинга Kubernetes для среды.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
agent
: Строка, определяющая агент AppSecCode для Kubernetes. Формат:path/to/agent/project:agent-name
.namespace
: Строка, представляющая пространство имен Kubernetes. Его необходимо установить вместе с ключевым словомagent
.flux_resource_path
: Строка, представляющая путь к ресурсу Flux. Это должен быть полный путь к ресурсу. Он должен быть установлен вместе с ключевыми словамиagent
иnamespace
.
Дополнительная информация:
- Чтобы использовать панель мониторинга, необходимо установить агент AppSecCode для Kubernetes и настроить
user_access
для проекта среды или ее родительской группы. - Пользователь, выполняющий задание, должен быть авторизован для доступа к кластеру агента. В противном случае он проигнорирует атрибуты
agent
,namespace
иflux_resource_path
.
environment:deployment_tier¶
Используйте ключевое слово deployment_tier
, чтобы указать уровень развертывания среды.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Одно из следующих:
production
staging
testing
development
other
Дополнительная информация:
- Среды, созданные на основе данного определения задания, получают уровень развертывания на основании этого значения.
- Существующие среды не обновляются, если это значение добавляется позже. Существующие среды должны обновить свой уровень через API сред.
dynamic environments¶
Используйте переменные CI/CD для динамического именования сред.
Общий вариант использования — создание динамических сред для веток и их использование в качестве обзорных приложений.
extends¶
Используйте extends
, чтобы повторно использовать секции конфигурации. Это альтернатива якорям YAML, немного более гибкая и читаемая.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Имя другого задания в пайплайне.
- Список (массив) имен других заданий в пайплайне.
Дополнительная информация:
- Можно использовать несколько родителей для
extends
. - Ключевое слово
extends
поддерживает до одиннадцати уровней наследования, но не рекомендуется использовать больше трех уровней.
hooks¶
Используйте hooks
, чтобы указать списки команд для выполнения на раннере на определенных этапах выполнения задания, например перед получением исходного кода из репозитория AppSecCode.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Хеш хуков и их команды. Доступные хуки:
pre_get_sources_script
.
hooks:pre_get_sources_script¶
Используйте hooks:pre_get_sources_script
, чтобы указать список команд для выполнения на раннере перед клонированием репозитория AppSecCode и любых подмодулей. Его можно использовать, например, для:
- Изменения конфигурации AppSecCode.
- Экспорта трассировочных переменных.
Поддерживаемые значения: Массив, включающий:
- Однострочные команды.
- Длинные команды, разбитые на несколько строк.
- Якоря YAML.
Переменные CI/CD поддерживаются.
id_tokens¶
Используйте id_tokens
, чтобы создавать JSON веб-токены (JWT) для аутентификации с третьими сторонами. Все созданные таким образом JWT поддерживают аутентификацию OIDC. Обязательная подклавиша aud используется для настройки утверждения aud
для JWT.
Поддерживаемые значения:
- Имена токенов с их утверждениями
aud
.aud
поддерживает:- Одиночную строку.
- Массив строк.
- Переменные CI/CD.
image¶
Используйте image
, чтобы указать Docker-образ, в котором выполняется задание.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Название образа, включая путь к реестру, если требуется, в одном из следующих форматов:
<image-name>
(То же самое, что и<image-name>
с тегомlatest
).<image-name>:<tag>
<image-name>@<digest>
Переменные CI/CD поддерживаются.
image:name¶
Имя Docker-образа, в котором выполняется задание. Аналогично использованию image
отдельно.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Название образа, включая путь к реестру, если требуется, в одном из следующих форматов:
<image-name>
(То же самое, что и<image-name>
с тегомlatest
).<image-name>:<tag>
<image-name>@<digest>
Переменные CI/CD поддерживаются.
image:entrypoint¶
Команда или сценарий для выполнения в качестве точки входа контейнера.
Когда создается Docker-контейнер, точка входа преобразуется в опцию Docker --entrypoint
. Синтаксис аналогичен директиве Dockerfile ENTRYPOINT
, где каждый элемент оболочки представляет собой отдельную строку в массиве.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Строка.
image:docker¶
Используйте image:docker
, чтобы передать параметры исполнителю Docker Runner.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Хэш параметров для исполнителя Docker, который может содержать:
platform
: Выбирает архитектуру образа для извлечения. Если не указано, то по умолчанию используется та же платформа, что и у хост-раннера.user
: Указывает имя пользователя или UID для использования при запуске контейнера.
Дополнительная информация:
image:docker:platform
соответствует опции Docker--platform
.image:docker:user
соответствует опции Docker--user
.
image:pull_policy¶
Политика выборки, которую исполнитель использует для извлечения Docker-образа.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Одинарная политика выборки или множество политик выборки в массиве. Может принимать значения
always
(всегда),if-not-present
(если отсутствует) илиnever
(никогда).
Дополнительная информация:
- Если исполнитель не поддерживает указанную политику выборки, задание завершится ошибкой с сообщением об ошибке, похожим на следующую:
ERROR: Job failed (system failure): the configured PullPolicies ([always]) are not allowed by AllowedPullPolicies ([never])
.
inherit¶
Используйте inherit
, чтобы управлять наследованием ключевых слов и переменных по умолчанию.
inherit:default¶
Используйте inherit:default
, чтобы контролировать наследование ключевых слов по умолчанию.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
true
(по умолчанию) илиfalse
, чтобы разрешить или запретить наследование всех ключевых слов по умолчанию.- Список конкретных ключевых слов по умолчанию для наследования.
Дополнительная информация:
- Также можно перечислить ключевые слова по умолчанию для наследования в одну строку:
default: [keyword1, keyword2]
.
inherit:variables¶
Используйте inherit:variables
, чтобы контролировать наследование переменных по умолчанию.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
true
(по умолчанию) илиfalse
, чтобы разрешить или запретить наследование всех переменных по умолчанию.- Список конкретных переменных для наследования.
Дополнительная информация:
- Также можно перечислить переменные по умолчанию для наследования в одну строку:
variables: [VARIABLE1, VARIABLE2]
.
interruptible¶
Используйте interruptible
, чтобы настроить функцию автоматической отмены избыточных пайплайнов, которая позволяет отменить выполнение задания до его завершения, если новый пайплайн на том же рефе начинается для более нового коммита. Если функция отключена, этот параметр не имеет эффекта. Новый пайплайн должен быть для коммита с новыми изменениями. Например, функция автоматической отмены избыточных пайплайнов не действует, если вы выбираете «Новый пайплайн» в интерфейсе для запуска пайплайна для того же коммита.
Поведение функции автоматической отмены избыточных пайплайнов контролируется настройкой workflow:auto_cancel:on_new_commit
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
true
илиfalse
(по умолчанию).
Дополнительная информация:
- Устанавливайте
interruptible: true
только в том случае, если задание может безопасно быть отменено после его начала, например, задание сборки. Обычно задания развертывания не следует отменять, чтобы предотвратить частичное развертывание. -
Когда используется поведение по умолчанию или
workflow:auto_cancel:on_new_commit:conservative
:- Задание, которое еще не началось, всегда считается прерываемым (
interruptible: true
), независимо от конфигурации задания. Конфигурацияinterruptible
учитывается только после начала задания. - Рабочие пайплайны отменяются только в том случае, если все выполняющиеся задания настроены с
interruptible: true
или ни одно задание сinterruptible: false
не начинало выполняться в любое время. После того, как задание сinterruptible: false
начнет выполняться, весь пайплайн уже не будет считаться прерываемым. - Если триггерный пайплайн запускает нисходящий пайплайн, но ни одно задание с
interruptible: false
в нисходящем пайплайне еще не началось, нисходящий пайплайн также отменяется.
- Задание, которое еще не началось, всегда считается прерываемым (
-
Вы можете добавить необязательное ручное задание с
interruptible: false
в первый этап пайплайна, чтобы позволить пользователям вручную предотвратить автоматическую отмену пайплайна. После того, как пользователь запустит задание, пайплайн не может быть автоматически отменен функцией автоматической отмены избыточных пайплайнов. - При использовании
interruptible
с триггерным заданием:- Запущенный вниз по потоку пайплайн никогда не подвергается влиянию конфигурации
interruptible
триггерного задания. - Если
workflow:auto_cancel
установлен наconservative
, конфигурацияinterruptible
триггерного задания не имеет никакого эффекта. - Если
workflow:auto_cancel
установлен наinterruptible
, триггерное задание сinterruptible: true
может быть автоматически отменено.
- Запущенный вниз по потоку пайплайн никогда не подвергается влиянию конфигурации
needs¶
Используйте needs
, чтобы выполнять задания вне очереди. Отношения между заданиями, использующими needs
, могут быть визуализированы как направленный ациклический граф.
Вы можете игнорировать порядок стадий и запускать некоторые задания без ожидания завершения других. Задания в нескольких стадиях могут выполняться одновременно.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Массив заданий (максимум 50 заданий).
- Пустой массив
[]
, чтобы задание начиналось сразу после создания пайплайна.
Дополнительная информация:
-
Максимальное количество заданий, которые могут быть указаны в массиве needs одного задания, ограничено:
- По умолчанию лимит составляет 50. Этот лимит может быть изменен.
- Если
needs
ссылается на задание, которое использует параллельное выполнение, оно зависит от всех созданных параллельно заданий, а не только от одного. По умолчанию оно также загружает артефакты со всех параллельных заданий. Если артефакты имеют одинаковое имя, они будут перезаписывать друг друга, и сохранена будет только последняя загрузка.
-
Чтобы
needs
ссылался на подмножество параллелизованных заданий (а не на все параллелизованные задания), используйте ключевое словоneeds:parallel:matrix
.- Вы можете ссылаться на задания в той же стадии, что и задание, которое вы настраиваете.
-
Если
needs
ссылается на задание, которое может не быть добавлено в пайплайн из-заonly
,except
или правил, пайплайн может не создать успешно. Используйтеneeds:optional
, чтобы решить проблему неудачного создания пайплайна. - Если пайплайн содержит задания с
needs: []
и задания в стадии.pre
, они все начнутся сразу после создания пайплайна. Задания сneeds: []
стартуют немедленно, и задания в стадии.pre
также стартуют немедленно.
needs:artifacts¶
Когда задание использует needs
, оно по умолчанию больше не загружает все артефакты из предыдущих стадий, поскольку задания с needs могут начаться раньше завершения предыдущих стадий. С помощью needs
вы можете загружать артефакты только из заданий, указанных в конфигурации needs
.
Используйте artifacts: true
(по умолчанию) или artifacts: false
, чтобы контролировать момент загрузки артефактов в заданиях, использующих needs
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания. Должен использоваться вместе с needs:job
.
Поддерживаемые значения:
true
(по умолчанию) илиfalse
.
Дополнительная информация:
- Не следует комбинировать
needs
сdependencies
в одном и том же задании.
needs:pipeline:job¶
Дочерний пайплайн может загружать артефакты из задания в родительском пайплайне или другом дочернем пайплайне в одной и той же иерархии родительского-дочернего пайплайна.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
needs:pipeline
: Идентификатор пайплайна. Должен быть пайплайном, присутствующим в той же иерархии родительских-дочерних пайплайнов.job
: Задание для загрузки артефактов.
Дополнительная информация:
- Атрибут
pipeline
не принимает идентификатор текущего пайплайна ($CI_PIPELINE_ID
). Чтобы загрузить артефакты из задания в текущем пайплайне, используйтеneeds:artifacts
. - Вы не можете использовать
needs:pipeline:job
в задании-триггере или для получения артефактов из мультипроектного пайплайна. Для получения артефактов из мультипроектного пайплайна используйтеneeds:project
.
needs:optional¶
Чтобы потребовать задание, которое иногда может отсутствовать в пайплайне, добавьте optional: true
в конфигурацию needs
. Если не определено, optional: false
является значением по умолчанию.
Задания, которые используют правила, only
или except
и добавляются через include
, могут не всегда добавляться в пайплайн. Система проверяет отношения зависимостей перед началом пайплайна:
- Если запись
needs
имеетoptional: true
, и нужное задание присутствует в пайплайне, задание ждет его завершения перед началом. - Если нужное задание отсутствует, задание может начаться, когда будут выполнены все остальные требования
needs
. - Если раздел
needs
содержит только необязательные задания, и ни одно из них не добавлено в пайплайн, задание начинает выполняться немедленно (так же, как пустой списокneeds: needs: []
). - Если нужное задание имеет
optional: false
, но оно не было добавлено в пайплайн, пайплайн не удается начать с ошибкой, подобной следующей: «'job1' job needs 'job2' job, but it was not added to the pipeline
».
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
needs:pipeline¶
Вы можете зеркально отобразить статус пайплайна из внешнего пайплайна в задание, используя ключевое слово needs:pipeline
. Последний статус пайплайна с основной ветки будет воспроизведен в задании.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Полный путь проекта, включая пространство имен и группу. Если проект находится в той же группе или пространстве имен, вы можете опустить их из ключа
project
. Например:project: group/project-name
илиproject: project-name
.
Дополнительная информация:
- Если вы добавите ключевое слово
job
вneeds:pipeline
, задание больше не будет зеркально отображать статус пайплайна. Поведение изменится наneeds:pipeline:job
.
needs:parallel:matrix¶
Задания могут использовать parallel:matrix
, чтобы запускаться многократно параллельно в одном пайплайне, но с разными значениями переменных для каждого экземпляра задания.
Используйте needs:parallel:matrix
, чтобы выполнять задания вне очереди в зависимости от параллелизованных заданий.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания. Должен использоваться вместе с needs:job
.
Поддерживаемые значения: Массив хэшей переменных:
- Переменные и их значения должны быть выбраны из переменных и значений, определенных в задании
parallel:matrix
.
Дополнительная информация:
- Порядок переменных в матрице
needs:parallel:matrix
должен соответствовать порядку переменных в нужном задании.
pages¶
Используйте pages
, чтобы определить работу Pages, которая загружает статический контент в AppSecCode. Затем этот контент публикуется в виде веб-сайта.
Вы должны:
- Определить
artifacts
путем к каталогу контента, который по умолчанию являетсяpublish
. - Использовать
publish
, если хотите использовать другой каталог контента.
Тип ключевого слова: Имя задания.
pages:publish¶
Используйте publish
, чтобы сконфигурировать каталог контента задания pages
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания pages
.
Поддерживаемые значения: Путь к каталогу, содержащему Pages контент.
parallel¶
Используйте parallel
, чтобы запустить задание несколько раз параллельно в одном пайплайне.
Необходимо наличие нескольких раннеров или настройка одного раннера для одновременного выполнения нескольких заданий.
Параллельные задания называются последовательно от job_name 1/N
до job_name N/N
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Числовое значение от 1 до 200.
Дополнительная информация:
- Каждое параллельное задание имеет предопределенные переменные
CI/CD CI_NODE_INDEX
иCI_NODE_TOTAL
. - Пайплайн с заданиями, использующими
parallel
, может:- Создавать больше заданий, выполняющихся параллельно, чем доступно раннеров. Избыточные задания помещаются в очередь и отмечаются как ожидающие, пока не станет доступен раннер.
- Создавать слишком много заданий, и пайплайн завершится с ошибкой
job_activity_limit_exceeded
. Максимально допустимое количество заданий, которые могут существовать в активных пайплайнах, ограничивается на уровне инстанса.
parallel:matrix¶
Используйте parallel:matrix
, чтобы запустить задание несколько раз параллельно в одном пайплайне, но с различными значениями переменных для каждого экземпляра задания.
Необходимо наличие нескольких раннеров или настройка одного раннера для одновременного выполнения нескольких заданий.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Массив хэшей переменных:
- Названия переменных могут содержать только цифры, буквы и подчеркивания (
_
). - Значения переменных должны быть либо строками, либо массивами строк.
- Количество возможных комбинаций не должно превышать 200.
Дополнительная информация:
-
Задания
parallel:matrix
добавляют значения переменных в имена заданий, чтобы отличать их друг от друга, однако большие значения могут привести к тому, что имена заданий превысят лимиты:- Имена заданий должны быть 255 символов или меньше.
- При использовании needs имена заданий должны быть 128 символов или меньше.
-
Нельзя создавать несколько матричных конфигураций с одинаковыми значениями переменных, но разными названиями переменных. Имена заданий формируются на основе значений переменных, а не их названий, поэтому записи с одинаковыми значениями создают идентичные имена заданий, которые перезаписывают друг друга.
release¶
Используйте release
, чтобы создать релиз.
Работа над релизом должна иметь доступ к release-cli
, который должен находиться в $PATH
.
Если вы используете Docker executor
, вы можете использовать этот образ из container registry GitLab: registry.gitlab.com/gitlab-org/release-cli:latest
.
Если вы используете Shell executor или аналогичный, установите release-cli
на сервере, где зарегистрирован раннер.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения: release
подключи:
tag_name
tag_message
(опционально).name
(опционально).description
ref
(опционально).milestones
(опционально).released_at
(опционально).assets:links
(опционально).
Дополнительная информация:
-
Все задания по созданию релиза, кроме триггерных, должны включать ключевое слово
script
. Задача по созданию релиза может использовать вывод команд из script
. Если вам не нуженscript
, можно использовать заполнитель: -
Раздел
release
выполняется после ключевого словаscript
и передafter_script
. - Релиз создается только в случае успешного выполнения основного скрипта задания.
- Если релиз уже существует, он не обновляется, и задание с ключевым словом
release
завершается неудачей.
release:tag_name¶
Требуется: Метка Git для релиза.
Если такой метки еще нет в проекте, она создается одновременно с релизом. Новые метки используют связанный с пайплайном SHA.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
-
Имя метки.
-
Поддерживаются переменные CI/CD.
release:tag_message¶
Если метка не существует, новая созданная метка аннотируется сообщением, указанным в tag_message
. Если пропущено, создается легковесная метка.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Текстовая строка.
release:name¶
Имя релиза. Если пропущено, заполняется значением release: tag_name
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Текстовая строка.
release:description¶
Детальное описание релиза.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Строка с подробным описанием.
-
Путь к файлу, содержащему описание.
- Файл должен быть относительным к каталогу проекта (
$CI_PROJECT_DIR
). - Если файл является символической ссылкой, он должен находиться в
$CI_PROJECT_DIR
. - Путь
./path/to/file
и имя файла не могут содержать пробелов.
- Файл должен быть относительным к каталогу проекта (
Дополнительная информация:
- Описание оценивается оболочкой, которая выполняет
release-cli
. Вы можете использовать переменные CI/CD для определения описания, но некоторые оболочки используют различный синтаксис для обращения к переменным. Аналогично, некоторым оболочкам может потребоваться экранировать специальные символы. Например, "обратные кавычки" могут нуждаться в экранировании с помощью обратной косой черты (\
).
release:ref¶
ref
для релиза, если release: tag_name
еще не существует.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Хэш коммита, другое имя метки или название ветки.
release:milestones¶
Название каждой вехи, с которой ассоциирован релиз.
release:released_at¶
Дата и время, когда релиз готов.
Поддерживаемые значения:
- Дата, заключенная в кавычки и выраженная в формате ISO 8601.
Дополнительная информация:
- Если не определено, используется текущая дата и время.
release:assets:links¶
Используйте release:assets:links
, чтобы включить ссылки на ресурсы в релиз.
Требуется версия release-cli
v0.4.0 или более поздняя.
resource_group¶
Используйте resource_group
, чтобы создать группу ресурсов, которая гарантирует, что задание будет эксклюзивным в рамках разных пайплайнов для одного и того же проекта.
Например, если несколько заданий, принадлежащих одной группе ресурсов, одновременно находятся в очереди, запускается только одно задание. Другие задания ждут, пока группа ресурсов освободится.
Группы ресурсов ведут себя подобно семафорам в других языках программирования.
Вы можете выбрать режим обработки для стратегического управления параллелизмом ваших заданий. По умолчанию используется режим unordered
. Чтобы изменить режим обработки группы ресурсов, используйте API для отправки запроса на изменение существующей группы ресурсов.
Вы можете определять несколько групп ресурсов для каждой среды. Например, при развертывании на физических устройствах у вас может быть несколько таких устройств. Каждое устройство может быть развернуто, но только одно развертывание может происходить на любом устройстве в любой момент времени.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Только буквы, цифры,
-
,_
,/
,$
,{
,}
,.
, и пробелы. Не может начинаться или заканчиваться на/
.
Поддерживаются переменные CI/CD.
retry¶
Используйте retry
, чтобы настроить, сколько раз задание будет повторено в случае сбоя. Если не определено, по умолчанию равно 0
, и задания не повторяются.
Когда задание терпит неудачу, задание обрабатывается еще до двух раз, пока оно не завершится успешно или не достигнет максимального количества попыток.
По умолчанию все типы ошибок вызывают повторное выполнение задания. Используйте retry:when
или retry:exit_codes
, чтобы выбрать, какие ошибки следует обрабатывать повторно.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
0
(по умолчанию),1
или2
.
retry:when¶
Используйте retry:when
вместе с retry:max
, чтобы повторить выполнение заданий только для определенных случаев сбоев. retry:max
— это максимальное число попыток, как и retry
, и может принимать значения 0
, 1
или 2
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: один тип отказа или массив из одного или нескольких типов отказов:
always
: повторить при любой ошибке (по умолчанию).unknown_failure
: повторить, если причина отказа неизвестна.-
script_failure
: повторить, если:- Скрипт завершился неудачно.
- Раннер не смог получить Docker-образ. Для Docker, Docker+Machine, Kubernetes исполнителей.
-
api_failure
: повторить при ошибке API. stuck_or_timeout_failure
: повторить, если задание зависло или истекло время ожидания.runner_system_failure
: повторить, если произошел системный сбой раннера (например, ошибка настройки задания).runner_unsupported
: повторить, если раннер не поддерживается.stale_schedule
: повторить, если отложенное задание не могло быть выполнено.job_execution_timeout
: повторить, если скрипт превысил максимальное время выполнения, установленное для задания.archived_failure
: повторить, если задание архивировано и не может быть запущено.unmet_prerequisites
: повторить, если задание не смогло завершить предварительные задачи.scheduler_failure
: повторить, если планировщик не смог назначить задание раннеру.data_integrity_failure
: повторить, если возникла неизвестная проблема с заданием.
retry:exit_codes¶
Используйте retry:exit_codes
вместе с retry:max
, чтобы повторить выполнение заданий только для конкретных случаев сбоев. retry:max
— это максимальное число попыток, как и retry
, и может принимать значения 0
, 1
или 2
.
Тип ключевого слова: Ключевое слово задания. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Одно значение кода выхода.
- Массив значений кодов выхода.
rules¶
Используйте rules
, чтобы включать или исключать задания из пайплайнов.
Правила проверяются при создании пайплайна и выполняются в порядке следования. Как только найдено совпадение, дальнейшие правила не проверяются, и задание либо включается, либо исключается из пайплайна в зависимости от конфигурации. Если ни одно правило не совпадает, задание не добавляется в пайплайн.
rules
принимает массив правил. Каждый элемент правил должен содержать хотя бы один из следующих элементов:
if
changes
exists
when
Правила также могут опционально объединяться с:
allow_failure
needs
variables
interruptible
Можно комбинировать несколько ключевых слов для создания сложных правил.
Задание добавляется в пайплайн:
- Если условие
if
,changes
илиexists
истинно, и настроено сwhen: on_success
(по умолчанию, если не указано иначе),when: delayed
илиwhen: always
. - Если достигнуто правило, которое настроено только с
when: on_success
,when: delayed
илиwhen: always
.
Задание не добавляется в пайплайн:
- Если ни одно правило не совпадает.
- Если правило совпадает и настроено с
when: never
.
rules:if¶
Используйте конструкции rules:if
, чтобы указать условия для добавления задания в пайплайн:
- Если условие
if
истинно, добавьте задание в пайплайн. - Если условие
if
истинно, но оно сочетается сwhen: never
, не добавляйте задание в пайплайн. - Если условие
if
ложно, проверьте следующее правило (если таковое имеется).
Условия if
оцениваются:
- На основании значений переменных CI/CD или предопределенных переменных CI/CD, с некоторыми исключениями.
- В порядке следования, согласно логике выполнения правил.
Тип ключевого слова: Задание и пайплайн. Вы можете использовать его как часть задания для настройки поведения задания или с workflow
для настройки поведения пайплайна.
Поддерживаемые значения:
- Выражение с переменной CI/CD.
Дополнительная информация:
- Нельзя использовать вложенные переменные с
if
. - Если правило совпадает и не содержит
when
, правило используетwhen
, определенное для задания, которое по умолчанию равноon_success
, если не указано иное. - Можно сочетать
when
на уровне задания сwhen
в правилах. Конфигурацияwhen
в правилах имеет приоритет надwhen
на уровне задания. -
В отличие от переменных в секциях
script
, переменные в выражениях правил всегда форматируются как$VARIABLE
.- Можно использовать
rules:if
вместе сinclude
для условного включения других конфигурационных файлов.
- Можно использовать
-
Переменные CI/CD справа от операторов
=~
и!~
интерпретируются как регулярные выражения.
rules:changes:paths¶
Используйте rules:changes:paths
, чтобы указать, что задание должно быть добавлено в пайплайн, когда изменяются определенные файлы, а также используйте rules:changes:paths
, чтобы указать эти файлы.
rules:changes:paths
работает точно так же, как использование rules:changes
без каких-либо подключаемых ключей. Все дополнительные детали и связанные темы остаются теми же самыми.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Те же самые, что и у
rules:changes
выше.
rules:changes:compare_to¶
Используйте rules:changes:compare_to
, чтобы указать, какой ref
использовать для сравнения изменений в файлах, перечисленных в rules:changes:paths
.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания и обязательно должны сочетать его с rules:changes:paths
.
Поддерживаемые значения:
- Имя ветки, например
main
,branch1
илиrefs/heads/branch1
. - Имя тега, например
tag1
илиrefs/tags/tag1
. - SHA коммита, например
2fg31ga14b
.
Поддерживаются переменные CI/CD.
Дополнительная информация:
- Использование
compare_to
с пайплайнами с объединенными результатами может привести к неожиданным результатам, поскольку база сравнения — это внутренний коммит, который создает AppSecCode.
rules:exists¶
Используйте rules:exists
, чтобы запустить задание, когда определенные файлы существуют в репозитории.
Тип ключевого слова: Задание. Вы можете использовать его как часть задания или в секции include
.
Поддерживаемые значения:
- Массив путей к файлам. Пути относительны к каталогу проекта (
$CI_PROJECT_DIR
) и не могут напрямую ссылаться за его пределы. Путь к файлу может использовать шаблоны глобул и переменные CI/CD.
Дополнительная информация:
- Шаблоны глобул интерпретируются с использованием Ruby-метода
File.fnmatch с флагами File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB
. -
Из соображений производительности AppSecCode выполняет максимум 50 000 проверок против путей или шаблонов, указанных в
rules:exists
. После 50 000-й проверки правила с шаблонными глобулами всегда соответствуют. Другими словами, правилоexists
всегда предполагает наличие совпадения в проектах с более чем 50 000 файлов или если в проекте меньше 50 000 файлов, но правилаexists
проверяются более 50 000 раз.- Если есть несколько шаблонных глобул, лимит составляет 50 000, деленное на количество глобул. Например, правило с пятью шаблонными глобулами имеет ограничение в 10 000 файлов.
-
В каждом разделе
rules:exists
можно определить максимум 50 паттернов или путей к файлам. exists
возвращаетtrue
, если найден хотя бы один из перечисленных файлов (операцияor
).-
На уровне задания
rules:exists
, AppSecCode ищет файлы в проекте и в той ветке, которая запускает пайплайн. При использованииinclude
сrules:exists
, AppSecCode ищет файлы в проекте и в той ветке, которая содержится в файле, содержащем разделinclude
. Проект, содержащий разделinclude
, может отличаться от проекта, который запускает пайплайн, когда используются:- Вложенные
includes
. - Пайплайны соответствия.
- Вложенные
-
rules:exists
не может искать наличие артефактов, потому что оценка правил происходит перед выполнением заданий, а артефакты загружаются позже.
rules:exists:paths¶
rules:exists:paths
аналогичен использованию rules:exists
без подключаемых ключей. Вся дополнительная информация та же самая.
Тип ключевого слова: Задание. Вы можете использовать его как часть задания или в секции include
.
Поддерживаемые значения:
- Массив путей к файлам.
Дополнительная информация:
- В некоторых случаях нельзя использовать
/
или./
в переменной CI/CD вместе сexists
.
rules:exists:project¶
Используйте rules:exists:project
, чтобы указать местоположение, в котором нужно искать файлы, перечисленные в rules:exists:paths
. Это необходимо использовать вместе с rules:exists:paths
.
Тип ключевого слова: Задание. Вы можете использовать его как часть задания или в секции include
и обязательно должны сочетать его с rules:exists:paths
.
Поддерживаемые значения:
exists:project
: Полный путь к проекту, включая пространство имен и группу.exists:ref
: Необязательно. Коммит-ссылка, которую нужно использовать для поиска файла. Ссылка может быть тегом, именем ветки или SHA. По умолчанию используетсяHEAD
проекта, если не указано иное.
rules:when¶
Используйте rules:when
отдельно или как часть другого правила для управления условиями добавления задания в пайплайн. rules:when
похожа на when
, но поддерживает немного другие варианты входных данных.
Если правило rules:when
не сочетается с if
, changes
или exists
, оно всегда срабатывает при оценке правил задания.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
on_success
(по умолчанию): Запускайте задание только в том случае, если никакие задания на предыдущих этапах не завершились неудачно.on_failure
: Запускайте задание только в том случае, если хотя бы одно задание на предыдущем этапе завершилось неудачно.never
: Не запускайте задание независимо от статуса заданий на предыдущих этапах.always
: Запускайте задание независимо от статуса заданий на предыдущих этапах.manual
: Добавляйте задание в пайплайн как ручное задание. Значение по умолчанию дляallow_failure
становитсяfalse
.delayed
: Добавляйте задание в пайплайн как отложенное задание.
Дополнительная информация:
-
При оценке состояния заданий для
on_success
иon_failure
:- Задания с
allow_failure: true
на предыдущих этапах считаются успешными, даже если они потерпели неудачу. - Пропущенные задания на предыдущих этапах, например ручные задания, которые еще не были запущены, считаются успешными.
- Задания с
-
При использовании
rules:when: manual
для добавления ручного задания:- Значение
allow_failure
по умолчанию становитсяfalse
. Это противоположно использованиюwhen: manual
для добавления ручного задания. - Чтобы достичь того же поведения, что и
when: manual
, определенное вне правил, установитеrules:allow_failure
наtrue
.
- Значение
rules:allow_failure¶
Используйте allow_failure: true
в правилах, чтобы позволить заданию завершиться неудачно без остановки пайплайна.
Также вы можете использовать allow_failure: true
с ручным заданием. Пайплайн продолжает выполняться без ожидания результата ручного задания. Установка allow_failure: false
в сочетании с when: manual
в правилах приводит к тому, что пайплайн ждет завершения ручного задания перед продолжением.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
true
илиfalse
. По умолчаниюfalse
, если не определено.
Дополнительная информация:
- Правило
rules:allow_failure
уровня правил переопределяет значениеallow_failure
на уровне задания и применяется только тогда, когда конкретное правило вызывает выполнение задания.
rules:needs¶
Используйте rules:needs
, чтобы обновить потребности задания для конкретных условий. Когда условие соответствует правилу, конфигурация потребностей задания полностью заменяется потребностями в правиле.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Массив имен заданий в виде строк.
- Хэш с именем задания, дополнительно с атрибутами.
- Пустой массив
[]
, чтобы установить нужды задания в none, когда выполняется конкретное условие.
Дополнительная информация:
needs
в правилах переопределяют любые определенные на уровне заданияneeds
. Поведение при переопределении такое же, как и на уровне задания.needs
в правилах может принимать артефакты и необязательные параметры.
rules:variables¶
Используйте variables
в правилах для определения переменных для конкретных условий.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Хэш переменных в формате
VARIABLE-NAME: значение
.
rules:interruptible¶
Используйте rules:interruptible
, чтобы обновить значение interruptible
для задания для конкретных условий.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
true
илиfalse
.
Дополнительная информация:
- Правило
rules:interruptible
уровня правил переопределяет значениеinterruptible
на уровне задания и применяется только тогда, когда конкретное правило вызывает выполнение задания.
script¶
Используйте script
, чтобы указать команды, которые исполнитель должен выполнить.
Все задания, кроме триггерных, требуют ключевого слова script
.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Массив, включающий:
- Однострочные команды.
- Команды, разбитые на несколько строк.
- Якоря YAML.
Поддерживаются переменные CI/CD.
Дополнительная информация:
- При использовании этих специальных символов в
script
вам необходимо использовать одинарные кавычки ('
) или двойные кавычки ("
).
secrets¶
Используйте secrets
, чтобы указать секреты CI/CD для:
- Извлечения из внешнего поставщика секретов.
- Предоставления в задании в качестве переменных CI/CD (тип файла по умолчанию).
secrets:vault¶
Используйте secrets:vault
, чтобы указать секреты, предоставляемые HashiCorp Vault.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
engine:name
: Название движка секретов. Может быть одним из kv-v2 (по умолчанию), kv-v1 или generic.engine:path
: Путь к движку секретов.path
: Путь к секрету.field
: Имя поля, в котором хранится пароль.
secrets:gcp_secret_manager¶
Используйте secrets:gcp_secret_manager
, чтобы указать секреты, предоставляемые GCP Secret Manager.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
name
: Имя секрета.version
: Версия секрета.
secrets:azure_key_vault¶
Используйте secrets:azure_key_vault
, чтобы указать секреты, предоставляемые Azure Key Vault.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
name
: Имя секрета.version
: Версия секрета.
secrets:file¶
Используйте secrets:file
, чтобы настроить секрет для хранения в виде типа переменной CI/CD либо в виде файла, либо непосредственно в переменной.
По умолчанию секрет передается в задание в виде переменной типа файла CI/CD. Значение секрета сохраняется в файле, а переменная содержит путь к этому файлу.
Если ваше программное обеспечение не может использовать переменные типа файла CI/CD, установите file: false
, чтобы сохранить значение секрета непосредственно в переменной.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
true
(по умолчанию) илиfalse
.
Дополнительная информация:
- Ключевое слово
file
— это настройка переменной CI/CD и должно быть вложено под именем переменной CI/CD, а не в разделеvault
.
secrets:token¶
Используйте secrets:token
, чтобы явно выбрать токен для использования при аутентификации в Vault путем ссылки на токен CI/CD переменной.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Имя маркера идентификации.
Дополнительная информация:
- Если токен не установлен, используется первый идентификатор токена для аутентификации.
services¶
Используйте services
, чтобы указать дополнительные образы Docker, которые требуются вашим сценариям для успешного выполнения. Образ служб связан с образом, указанным в ключевом слове image
.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Имя образа службы, включая путь реестра, если требуется, в одном из следующих форматов:
<имя-образа>
(то же самое, что и использование<имя-образа>
с последней меткой).<имя-образа>:<метка>
<имя-образа>@<дайджест>
Поддерживаются переменные CI/CD, но не для псевдонима.
services:docker¶
Используйте services:docker
, чтобы передать параметры исполнителю Docker в Runner.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Хэш опций для исполнителя Docker, который может включать:
platform
: Выбирает архитектуру изображения для извлечения. Если не указано, по умолчанию используется та же платформа, что и у хост-раннера.user
: Указывает имя пользователя или UID для использования при запуске контейнера.
Дополнительная информация:
services:docker:platform
сопоставляется с опцией--platform
Docker.services:docker:user
сопоставляется с опцией--user
Docker.
services:pull_policy¶
Политика выборки, которую раннер использует для получения образа Docker.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Одиночная политика выборки или несколько политик выборки в массиве. Может быть
always
,if-not-present
илиnever
.
Дополнительная информация:
- Если раннер не поддерживает определенную политику выборки, работа завершается ошибкой с сообщением об ошибке, подобной следующей:
ERROR: Работа завершилась сбоем (системная ошибка): политики выборки, определенные в конфигурации (всегда), не разрешены политиками выборки (никогда)
.
stage¶
Используйте stage
, чтобы определить, на каком этапе выполняется задание. Задания в одном и том же этапе могут выполняться параллельно (см. Дополнительные сведения).
Если stage
не определена, задание по умолчанию использует этап тестирования.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения: Строка, которая может быть:
- Стадия по умолчанию.
- Пользовательские этапы.
Дополнительная информация:
- Название этапа должно состоять из 255 символов или меньше.
- Задания могут выполняться параллельно, если они работают на разных раннерах.
- Если у вас есть только один раннер, задания могут выполняться параллельно, если параметр
concurrent
раннера больше1
.
stage: .pre¶
Используйте стадию .pre
, чтобы задание выполнялось в начале пайплайна. .pre
всегда является первым этапом в пайплайне. Пользовательские этапы выполняются после .pre
. Вам не нужно определять .pre
в этапах.
Если пайплайн содержит только задания в этапах .pre
или .post
, он не будет выполнен. Должно быть хотя бы одно другое задание в другом этапе.
Тип ключевого слова: Только с ключевым словом stage
задания.
stage: . post¶
Используйте стадию .post
, чтобы задание выполнялось в конце пайплайна. .post
всегда является последним этапом в пайплайне. Пользовательские этапы выполняются до .post
. Вам не нужно определять .post
в этапах.
Если пайплайн содержит только задания в этапах .pre
или .post
, он не будет выполнен. Должно быть хотя бы одно другое задание в другом этапе.
Тип ключевого слова: Только с ключевым словом stage
задания.
Дополнительная информация:
- Если в пайплайне есть задания с
needs: []
и задания в стадии.pre
, все они начнут выполняться сразу после создания пайплайна. Задания сneeds: []
стартуют немедленно, игнорируя любую конфигурацию стадии.
tags¶
Используйте tags
, чтобы выбрать конкретный раннер из списка всех доступных раннеров для проекта.
При регистрации раннера вы можете указать теги раннера, например ruby
, postgres
или development
. Чтобы подобрать и выполнить задание, раннер должен иметь все теги, перечисленные в задании.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения:
- Массив имен тегов, чувствительных к регистру.
- Поддерживаются переменные CI/CD.
Дополнительная информация:
- Количество тегов должно быть менее 50.
- Используйте теги для управления тем, какие задания может выполнять раннер.
- Выберите разные теги раннера для каждого параллельного задания матрицы.
timeout¶
Используйте timeout
, чтобы настроить таймаут для конкретного задания. Если задание выполняется дольше установленного таймаута, задание завершается неудачей.
Таймаут на уровне задания может быть длиннее, чем глобальный таймаут проекта, но не может превышать таймаут раннера.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания или в разделе default
.
Поддерживаемые значения: Период времени, выраженный обычным языком. Например, эти варианты эквивалентны:
3600 seconds
60 minutes
one hour
trigger¶
Используйте trigger
, чтобы объявить, что задание является "триггерным заданием", которое запускает нисходящий пайплайн, являющийся либо:
- Мультипроектным пайплайном.
- Дочерним пайплайном.
Триггерные задания могут использовать только ограниченный набор ключевых слов CI/CD. Ключевые слова, доступные для использования в триггерных заданиях, следующие:
allow_failure
extends
needs
, но неneeds:project
only
иexcept
rules
stage
trigger
variables
when
(только со значениемon_success
,on_failure
илиalways
).resource_group
environment
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Для мультипроектных пайплайнов укажите путь к нисходящему проекту. Поддерживаются переменные CI/CD, но не переменные, относящиеся к заданиям. В качестве альтернативы используйте
trigger:project
. - Для дочерних пайплайнов используйте
trigger:include
.
Дополнительная информация:
- Вы можете использовать
when:manual
в том же задании, что иtrigger
, но вы не можете использовать API для запуска ручных триггерных заданий. - Вы не можете вручную указывать переменные CI/CD перед запуском ручного триггерного задания.
- Переменные CI/CD, определенные в разделе верхнего уровня
variables
(глобально) или в задании триггера, передаются в нисходящий пайплайн в качестве триггерных переменных. - Переменные проекта по умолчанию не передаются в нисходящие пайплайны. Используйте
trigger:forward
, чтобы передавать эти переменные в нисходящие пайплайны. - Переменные, относящиеся к заданиям, недоступны в триггерных заданиях.
- Переменные окружения, определенные в конфигурационном файле раннера
config.toml
, недоступны для триггерных заданий и не передаются в нисходящие пайплайны. - Вы не можете использовать
needs:pipeline:job
в триггерном задании.
trigger:include¶
Используйте trigger:include
, чтобы объявить, что задание является "триггерным заданием", которое запускает дочерний пайплайн.
Используйте trigger:include:artifact
, чтобы запустить динамический дочерний пайплайн.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Путь к файлу конфигурации дочернего пайплайна.
trigger:project¶
Используйте trigger:project
, чтобы объявить, что задание является "триггерным заданием", которое запускает многопроектный пайплайн.
По умолчанию многопроектный пайплайн запускается для ветки по умолчанию. Используйте trigger:branch
, чтобы указать другую ветку.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Путь к нисходящему проекту. Поддерживаются переменные CI/CD, но не переменные, относящиеся к заданиям.
trigger:strategy¶
Используйте trigger:strategy
, чтобы принудить триггерное задание ожидать завершения нисходящего пайплайна, прежде чем оно будет помечено как успешное.
Это поведение отличается от поведения по умолчанию, когда триггерное задание помечается как успешное сразу после создания нисходящего пайплайна.
Этот параметр делает выполнение пайплайна линейным, а не параллельным.
Дополнительная информация:
- Необязательные ручные задания в нисходящем пайплайне не влияют на статус нисходящего пайплайна или родительского триггерного задания. Нисходящий пайплайн может успешно завершиться без выполнения каких-либо необязательных ручных заданий.
- Блокирующие ручные задания в нисходящем пайплайне должны быть выполнены до того, как триггерное задание будет помечено как успешное или неудачное. Триггерное задание показывает состояние ожидания (), если статус нисходящего пайплайна зависит от ручного действия (). По умолчанию задания в более поздних этапах не начинают выполняться до тех пор, пока триггерное задание не завершится.
- Если в нисходящем пайплайне есть задача с ошибкой, но она использует
allow_failure: true
, нисходящий пайплайн считается успешным, и триггерное задание отображает успех.
trigger:forward¶
Используйте trigger:forward
, чтобы указать, что следует передать в нисходящий пайплайн. Вы можете контролировать, что передается как в родительско-дочерние пайплайны, так и в многопроектные пайплайны.
По умолчанию переданные переменные не передаются снова в вложенные нисходящие пайплайны, если в триггерном задании нижнего уровня также не используется trigger:forward
.
Поддерживаемые значения:
yaml_variables: true
(по умолчанию) илиfalse
. Когда установлено значениеtrue
, переменные, определенные в триггерном задании, передаются в нисходящие пайплайны.pipeline_variables: true
илиfalse
(по умолчанию). Когда установлено значениеtrue
, переменные пайплайна передаются в нисходящий пайплайн.
Дополнительная информация:
- Переменные CI/CD, переданные в нисходящие пайплайны с помощью
trigger:forward
, являются переменными пайплайна, имеющими высокий приоритет. Если в нисходящем пайплайне определяется переменная с таким же именем, обычно она переопределяется переданной переменной.
when¶
Используйте when
, чтобы настроить условия выполнения заданий. Если не определено в задании, то по умолчанию используется when: on_success
.
Тип ключевого слова: Задание. Вы можете использовать его как часть задания. when: always
и when: never
также можно использовать в секции workflow:rules
.
Поддерживаемые значения:
on_success
(по умолчанию): Запуск задания только тогда, когда ни одно задание в предыдущих этапах не завершилось неудачей.on_failure
: Запуск задания только тогда, когда хотя бы одно задание в предыдущем этапе завершилось неудачей.never
: не запускать задание независимо от статуса заданий в предыдущих этапах. Может использоваться только в секцииrules
илиworkflow:rules
.always
: Запуск задания независимо от статуса заданий в предыдущих этапах.manual
: добавить задание в пайплайн как ручное задание.delayed
: добавить задание в пайплайн как отложенное задание.
Дополнительная информация:
-
При оценке статуса заданий для
on_success
иon_failure
:- Задания с
allow_failure: true
в предыдущих этапах считаются успешными, даже если они завершились неудачей. - Пропущенные задания в предыдущих этапах, например ручные задания, которые еще не были начаты, считаются успешными.
- Задания с
-
Значение по умолчанию для
allow_failure
равноtrue
сwhen: manual
. Значение по умолчанию меняется наfalse
сrules:when: manual
.
manual_confirmation¶
Используйте manual_confirmation
вместе с when: manual
, чтобы определить пользовательское сообщение подтверждения для ручных заданий. Если ручное задание с when: manual
не определено, этот ключ не имеет эффекта.
Тип ключевого слова: Задание. Вы можете использовать его только как часть задания.
Поддерживаемые значения:
- Строка с сообщением подтверждения.
variables¶
Используйте variables
, чтобы определить переменные CI/CD.
Переменные могут быть определены в задании CI/CD или в виде ключевого слова верхнего уровня (global
), чтобы задать значения по умолчанию для всех заданий.
Дополнительная информация:
- Все переменные, определенные в формате YAML, также устанавливаются для связанных контейнеров Docker.
- Переменные YAML предназначены для нечувствительной проектной конфигурации. Храните чувствительную информацию в защищенных переменных или секретах CI/CD.
- Ручные переменные пайплайна и запланированные переменные пайплайна по умолчанию не передаются в нисходящие пайплайны. Используйте
trigger:forward
, чтобы передать эти переменные в нисходящие пайплайны.
variables заданий¶
Вы можете использовать переменные заданий в командах в разделах script
, before_script
или after_script
, а также с некоторыми ключевыми словами заданий. Проверьте раздел Supported values
для каждого ключевого слова задания, чтобы узнать, поддерживает ли оно переменные.
Нельзя использовать переменные заданий в качестве значений для глобальных ключевых слов, таких как include
.
Поддерживаемые значения: Пара «имя переменной» и «значение».
- Имя может содержать только цифры, буквы и подчеркивания (
_
). В некоторых оболочках первый символ должен быть буквой. - Значение должно быть строкой.
Поддерживаются переменные CI/CD.
variables по умолчанию¶
Переменные, определенные в разделе variables
верхнего уровня, действуют как переменные по умолчанию для всех заданий.
Каждая переменная по умолчанию доступна каждому заданию в пайплайне, за исключением случаев, когда задание уже имеет переменную с таким же именем. Переменная, определенная в задании, имеет приоритет, поэтому значение переменной по умолчанию с таким же именем не может быть использовано в задании.
Как и переменные заданий, вы не можете использовать переменные по умолчанию в качестве значений для других глобальных ключевых слов, таких как include
.
Поддерживаемые значения: Пара «имя переменной» и «значение».
- Имя может содержать только цифры, буквы и подчеркивания (
_
). В некоторых оболочках первый символ должен быть буквой. - Значение должно быть строкой.
Поддерживаются переменные CI/CD.
variables:description¶
Используйте ключевое слово description
, чтобы определить описание для переменной по умолчанию. Описание отображается вместе с предопределенным именем переменной при ручном запуске пайплайна.
Тип ключевого слова: Это ключевое слово можно использовать только как variables
по умолчанию, а не variables
заданий.
Поддерживаемые значения:
- Строка.
Дополнительная информация:
- Если используется без значения, переменная существует в пайплайнах, которые не были запущены вручную, и значение по умолчанию — пустая строка (
''
).
variables:value¶
Используйте ключевое слово value
, чтобы определить значение переменной уровня пайплайна (по умолчанию). При использовании с variables:description
значение переменной предварительно заполняется при ручном запуске пайплайна.
Тип ключевого слова: Это ключевое слово можно использовать только с переменными по умолчанию, а не с переменными заданий.
Поддерживаемые значения:
- Строка.
Дополнительная информация:
- Если используется без
variables:description
, поведение такое же, как уvariables
.
variables:options¶
Используйте variables:options
, чтобы определить массив значений, которые будут доступны для выбора в интерфейсе при ручном запуске пайплайна.
Это ключевое слово должно использоваться вместе с variables:value
, и строка, определенная для value
:
- Также должна быть одной из строк в массиве
options
. - Будет выбрана по умолчанию.
Если нет описания, это ключевое слово не имеет никакого эффекта.
Тип ключевого слова: Это ключевое слово можно использовать только с переменными по умолчанию, а не с переменными заданий.
Поддерживаемые значения:
- Массив строк.
variables:expand¶
Используйте ключевое слово expand
, чтобы настроить переменную как расширяемую или нет.
Тип ключевого слова: Это ключевое слово можно использовать как с переменными по умолчанию, так и с переменными заданий.
Поддерживаемые значения:
true
(по умолчанию): Переменная является расширяемой.false
: Переменная не является расширяемой.
Дополнительная информация:
- Ключевое слово
expand
может использоваться только с ключевыми словамиvariables
(как для переменных по умолчанию, так и для переменных заданий). Его нельзя использовать сrules:variables
илиworkflow:rules:variables
.