我有一个驻留在Gitlab中的Gradle Java 11项目。
我想介绍gitlab-ci.yml
来强制Gitlab构建项目并在每次推送到远程分支的过程中运行测试。
应该是什么样?
我很确定已经提出了类似的问题,但找不到,因此,感谢您的帮助。
答案 0 :(得分:2)
Gitlab提供了.gitlab-ci.yml
文件中的official description,但是从入门开始可能有点冗长。对于基础项目,可以使用以下内容作为基础:
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
标签设置为{{ 1}}。 maven:3-jdk-11
设置为读取脚本的当前目录的GRADLE_USER_HOME
,以确保在开始构建之前已正确配置Gradle环境。
.gradle
部分定义了Gitlab CI寻找缓存的工件和依赖项的路径(对于Gradle构建,它们是cache
和.gradle/wrapper
)。构建可能需要很长时间才能执行,因为每个构建都需要在每次执行构建时下载所有依赖项。为了加快速度,可以包括缓存,从而无需重复下载依赖项。缓存的细节可能因您的项目而异。有关更多信息,请参见official cache
documentation。
.gradle/cache
和assemble
步骤仅分别运行check
和gradle assemble
。尽管gradle check
在许多情况下就足够了(与gradle test
相对,但gradle check
步骤包括check
,同时还包括其他验证步骤。有关{ {1}}和test
,请参阅Gradle difference between test and check。
有关更多信息,请参见以下内容:
等效的Maven示例:
check
test
标志使用默认值运行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
将本地存储库设置为构建服务器(Gitlab)上的位置。发挥了Gitlab的缓存能力。构建可能需要很长时间才能执行,因为每个构建都需要在每次执行构建时下载所有依赖项。为了加快速度,可以包括缓存,从而无需重复下载依赖项。缓存的细节可能因您的项目而异。有关更多信息,请参见official cache
documentation。
--batch-mode
和-Dmaven.repo.local=.m2/repository
步骤仅分别运行package
和test
(使用上述Maven选项)。