我有一个驻留在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-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
之间差异的更多信息,请参阅测试和检查之间的梯度差异。
有关更多信息,请参阅以下内容:
- 如何为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
官方文档。
package
和test
步骤分别简单地运行mvn package
和mvn test
(具有上述Maven选项)。