Каким должен быть файл .gitlab-ci.yml, который активирует Gitlab для создания проекта и запуска тестов? - PullRequest
0 голосов
/ 06 января 2019

У меня есть проект Gradle Java 11, который находится в Gitlab. Я хотел ввести gitlab-ci.yml, чтобы заставить Gitlab создавать проект и запускать тесты при каждом отправке в удаленную ветвь.

Как это должно выглядеть?

Я почти уверен, что подобный вопрос уже задавался, но я не смог его найти, поэтому я ценю вашу помощь.

1 Ответ

0 голосов
/ 06 января 2019

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, описанными выше).

...