Gitlab предоставляет официальное описание файла .gitlab-ci.yml
, но это может быть немного длиннее, чтобы начать работу с шлюза. Для базового проекта в качестве основы можно использовать следующее:
image: gradle:jdk-11
before_script:
- export GRADLE_USER_HOME=`pwd`/.gradle
cache:
paths:
- .gradle/wrapper
- .gradle/caches
package:
stage: build
script:
- ./gradlew assemble
test:
stage: test
script:
- ./gradlew check
Обратите внимание, что тег image
во многих примерах установлен на maven:latest
, но для того, чтобы Gitlab компилировал проект с использованием JDK 11, тег image
должен быть установлен на maven:3-jdk-11
. GRADLE_USER_HOME
установлен на .gradle
текущего каталога, из которого читается скрипт, чтобы убедиться, что среда Gradle правильно настроена перед началом сборки.
Раздел cache
определяет пути, по которым Gitlab CI должен искать кэшированные артефакты и зависимости (для сборки Gradle это .gradle/wrapper
и .gradle/cache
). Сборки могут занять много времени, так как каждая сборка требует загрузки всех зависимостей при каждом выполнении сборки; чтобы ускорить это, можно включить кэширование, чтобы избавить от необходимости многократно загружать зависимости. Особенности кэширования могут отличаться для вашего проекта. См. официальную cache
документацию для получения дополнительной информации.
Шаги assemble
и check
просто запускают gradle assemble
и gradle check
соответственно. Хотя во многих случаях было бы достаточно gradle test
(в отличие от gradle check
, шаг check
включает test
, а также другие этапы проверки. Для получения дополнительной информации о разнице между check
и test
см. разница Gradle между тестом и проверкой .
Для получения дополнительной информации см. Следующее:
Эквивалентный пример Maven:
image: maven:3-jdk-11
variables:
MAVEN_CLI_OPTS: "--batch-mode"
MAVEN_OPTS: "-Dmaven.repo.local=.m2/repository"
cache:
paths:
- .m2/repository/
- target/
package:
stage: build
script:
- mvn $MAVEN_CLI_OPTS package
test:
stage: test
script:
- mvn $MAVEN_CLI_OPTS test
Флаг --batch-mode
запускает Maven со значениями по умолчанию и не предлагает пользователю выбрать какие-либо значения по умолчанию. -Dmaven.repo.local=.m2/repository
устанавливает локальный репозиторий в расположение на сервере сборки (Gitlab). который играет на способность кеширования Gitlab. Сборки могут занять много времени, так как каждая сборка требует загрузки всех зависимостей при каждом выполнении сборки; чтобы ускорить это, можно включить кэширование, чтобы избавить от необходимости многократно загружать зависимости. Особенности кэширования могут отличаться для вашего проекта. См. официальную cache
документацию для получения дополнительной информации.
Шаги package
и test
просто запускают mvn package
и mvn test
соответственно (с опциями Maven, описанными выше).