Непрерывная интеграция GitLab CI — .gitlab-ci.yml

CI/CD

Представлено в предыдущих статьях:

Непрерывная интеграция GitLab CI — установка и регистрация GitLab Runner

Непрерывная интеграция GitLab CI — GitLab Runner

После настройки среды вы можете официально начать использовать GitLab CI для интеграции проекта.В качестве примера возьмите проект Java, используйте Gradle в качестве инструмента автоматического построения для проекта и используйте инструмент Gradle для проверки качества кода.Подробнее, видетьПроверка качества кода Java с помощью Gradle.

.gitlab-ci.yml

Gitlab CI использует файлы YAML (.gitlab-ci.yml) для управления конфигурацией проекта. Этот файл хранится в корневом каталоге репозитория проекта и определяет способ сборки проекта.

YAML — это легко читаемый формат для выражения последовательностей данных. YAML ссылается на многие другие языки, включая: C, Python, Perl, и черпает вдохновение из XML, формата данных для электронной почты. YAML — это рекурсивная аббревиатура от «YAML — это не язык разметки» (YAML — это не язык разметки). Когда этот язык был разработан, YAML на самом деле означало: «Еще один язык разметки» (все еще язык разметки), но чтобы подчеркнуть, что этот язык ориентирован на данные, а не на разметку, он использует обратное переименование аббревиатуры. --- Википедия

Файл .gitlab-ci.yml определяет ряд задач с описаниями ограничений.Эти задачи начинаются с названия задачи и включаютscriptраздел, пример .gitlab-ci.yml:


stages:
  - unit-test


UnitTest:
  stage: unit-test
  tags:
    - spring-sample
  script:
    - gradle test
    - gradle jacocoTestReport
    - gradle sonarqube
  when: always

Значение полей в скрипте подробно объясняется ниже

Парсинг скрипта сборки

stagesОпределите фазы, которые можно вызвать, по умолчанию это сборка, тестирование и развертывание, порядок выполнения:

  1. Задания одного этапа могут выполняться параллельно.
  2. Задание следующего этапа будет разработано и выполнено после успешного выполнения задания предыдущего этапа.

Стадия определяется здесь:unit-test. следующееUnitTestэто определенная задача, которая находится в стадииunit-testпри исполнении.tagsУказывает gitlab-runner, который ему нужно выполнить, здесь тегspring-sampleВыполняется в теге.scriptПредставляет сценарий, который необходимо выполнить. Сценарий, выполняемый в этом примере, включает три шага:

  1. запускать тесты градиента
  2. Выполнять проверки покрытия юнит-тестами
  3. Запустите sonarqube для проверки качества кода

whenОпределите, когда выполнять задачу, которая может быть on_success, on_failure, всегда (запускается при каждом обновлении кода) или вручную (запускается вручную).

Кроме того, наиболее часто используемые поля:before_scriptИспользуется для определения команд, запускаемых перед всеми заданиями, включая задачи развертывания и т. д., может быть массивом или многострочной строкой.after_scriptИспользуется для определения команд, запускаемых после всех заданий. Это должен быть массив или многострочная строка Например:

job:
  before_script:
  - execute this instead of global before script
  script:
  - my command
  after_script:
  - execute this after my script

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

job1:
  script: test
  cache:
    paths:
    - binaries/
    - .config

Дополнительные поля могут ссылаться на официальную документацию.

Запустите GitLab CI

После завершения настройки, когда вы отправляете код в репозиторий, вы можете увидеть связанные задания в CI/CD:

gitlb-ci jobs

Введя детали, вы можете увидеть подробную информацию о построении проекта, и вы можете отследить причину ошибки по сгенерированному журналу.Причина ошибки здесь в том, что в gitlab-ruuner не установлена ​​среда gradle.После gradle среда установлена, выполняется задача сборки.Ubuntu Установить Java JDK и Gradle

Цитировать

YAML: zh.wikipedia.org/wiki/YAMLСправочник по настройке конвейера GitLab CI/CD:docs.gitlab.com/ee/ci/yaml/Настройте задачи через .gitlab-ci.yml:GitHub.com/fen like that/git to…