激活gitlab以构建项目和运行测试的.gitlab-ci.yml文件应该是什么



我有一个驻留在Gitlab中的Gradle Java 11项目。我想引入gitlab-ci.yml来强制Gitlab构建一个项目,并在每次推送到远程分支时运行测试。

它应该是什么样子?

我很确定已经有人问过类似的问题,但我找不到,所以我感谢你的帮助。

Gitlab提供了.gitlab-ci.yml文件的官方描述,但从入门开始可能会有点长。对于一个基本项目,您可以使用以下内容作为基础:

image: gradle:jdk11
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-11GRADLE_USER_HOME设置为从中读取脚本的当前目录的.gradle,以确保在开始构建之前正确配置Gradle环境。

cache部分定义了Gitlab CI应该查找缓存工件和依赖项的路径(对于Gradle构建,是.gradle/wrapper.gradle/cache)。构建可能需要很长时间才能执行,因为每次执行构建时,每个构建都需要下载所有依赖项;为了加快速度,可以包含缓存以消除重复下载依赖项的需要。缓存的具体内容可能因项目而异。有关更多信息,请参阅cache官方文档。

assemblecheck步骤分别简单地运行gradle assemblegradle check。虽然gradle test在许多情况下是足够的(与gradle check相反,check步骤包括test,同时也包括其他验证步骤。有关checktest之间差异的更多信息,请参阅测试和检查之间的梯度差异。

有关更多信息,请参阅以下内容:

  • 如何为gitlab ci runner启用maven工件缓存
  • GitLab CI/CD中的缓存依赖项
  • GitLab CI/CD示例
  • Gitlab CI渐变依赖缓存
  • gradle项目的.gitlab-ci.yml示例
  • gitlab 8.2.1,如何在gitlab-ci.yml中使用缓存
  • 支持的渐变图像列表

等效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官方文档。

packagetest步骤分别简单地运行mvn packagemvn test(具有上述Maven选项)。

最新更新