Формат и команды файла пайплайна в Gitlab
Файл пайплайна в GitLab, именуемый .gitlab-ci.yml
, является конфигурационным файлом, который описывает этапы (stages), задачи (jobs), условия выполнения пайплайнов и другие настройки CI/CD. Этот файл размещается в корне репозитория и автоматически выполняется GitLab CI/CD при каждом пуше кода или других событиях.
Ниже приведен обзор формата файла .gitlab-ci.yml
и основных команд, которые можно использовать.
Общая структура .gitlab-ci.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
stages: # Этапы пайплайна - build - test - deploy variables: # Глобальные переменные GO_VERSION: "1.18" before_script: # Команды, которые выполняются до всех задач - echo "This runs before all jobs" after_script: # Команды, которые выполняются после всех задач - echo "This runs after all jobs" # Определение задачи (job) build-job: # Название задачи stage: build # Этап, на котором выполняется задача script: # Скрипты, которые выполняются в задаче - go build -o myapp artifacts: # Артефакты, которые сохраняются после выполнения paths: - myapp only: - main # Ветка, в которой выполняется задача test-job: stage: test script: - go test ./... artifacts: when: always # Сохранять артефакты даже при ошибке reports: junit: report.xml # Определение отчета в формате JUnit only: - main deploy-job: stage: deploy script: - echo "Deploying the application" environment: production # Определение окружения only: - tags # Выполняется только при наличии тегов |
Основные элементы и команды файла .gitlab-ci.yml
stages
(Этапы)- Этапы выполняются последовательно.
- Каждый этап содержит набор задач, которые могут выполняться параллельно.
- Пример:
12345stages:- build- test- deploy
jobs
(Задачи)- Определяются в корне файла и описывают шаги, которые будут выполнены.
- Пример:
12345build-job:stage: buildscript:- go build -o myapp
script
(Скрипт)- Это список команд, которые будут выполнены в рамках задачи.
- Пример:
123script:- go build -o myapp
artifacts
(Артефакты)- Определяет файлы или директории, которые будут сохранены после выполнения задачи.
- Пример:
1234artifacts:paths:- myapp
variables
(Переменные)- Можно задать глобальные переменные, которые будут доступны всем задачам.
- Пример:
123variables:GO_VERSION: "1.18"
before_script
иafter_script
before_script
: Команды, выполняющиеся перед каждой задачей.after_script
: Команды, которые выполняются после всех задач.- Пример:
123before_script:- echo "Starting CI/CD pipeline"
only
иexcept
(Условия выполнения)- Определяет, когда должна быть выполнена задача. Например, можно указать ветку или теги.
- Пример:
12345only:- mainexcept:- tags
environment
(Окружение)- Определяет среду для выполнения задач, например,
staging
илиproduction
. - Пример:
123456deploy-job:stage: deployscript:- echo "Deploying..."environment: production
- Определяет среду для выполнения задач, например,
when
(Условия запуска задачи)- Можно указать, когда задача должна быть выполнена:
on_success
,on_failure
,always
. - Пример:
123456test-job:stage: testscript:- go test ./...when: on_failure
- Можно указать, когда задача должна быть выполнена:
retry
(Повтор попытки)- Настраивает количество повторных попыток выполнения задачи в случае сбоя.
- Пример:
123retry:max: 3
Пример простого CI/CD пайплайна для Go
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
stages: - build - test build-job: stage: build script: - go build -o myapp artifacts: paths: - myapp test-job: stage: test script: - go test ./... artifacts: reports: junit: report.xml # Отчет в формате JUnit |
Этот пайплайн будет собирать Go-приложение на этапе build
, а затем запускать тесты на этапе test
. Результаты тестов сохранятся в формате JUnit для дальнейшего анализа.
Recommended Posts
Vault как настроить доступ извне?
27.02.2024
Ошибки установки Vault в Gitlab CI пайплайне
26.02.2024