我有一个驻留在 Gitlab 中的 Gradle Java 11 项目。
我想引入 gitlab-ci.yml
以强制 Gitlab 构建项目并在每次推送到远程分支时运行测试。
它应该是什么样子的?
我很确定已经有人问过类似的问题,但我找不到它,所以非常感谢你的帮助。
最佳答案
Gitlab 提供了一个 official description .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/缓存
)。构建可能需要很长时间才能执行,因为每次构建都需要在每次执行构建时下载所有依赖项;为了加快速度,可以包含缓存以消除重复下载依赖项的需要。缓存的细节可能因您的项目而异。查看official cache
documentation获取更多信息。
assemble
和check
步骤分别简单地运行gradle assemble
和gradle check
。虽然 gradle test
在许多情况下就足够了(与 gradle check
相反,check
步骤包括 test
而还包括其他验证步骤。有关 check
和 test
之间区别的更多信息,请参阅 Gradle difference between test and check。
有关详细信息,请参阅以下内容:
- > How to enable maven artifact caching for gitlab ci runner?
- > Cache dependencies in GitLab CI/CD
- > GitLab CI/CD Examples
- > Gitlab CI gradle dependency cache
- > A sample of .gitlab-ci.yml for a gradle project
- > gitlab 8.2.1, How to use cache in .gitlab-ci.yml
- > List of supported gradle images
等效的 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 的缓存能力。构建可能需要很长时间才能执行,因为每次构建都需要在每次执行构建时下载所有依赖项;为了加快速度,可以包含缓存以消除重复下载依赖项的需要。缓存的细节可能因您的项目而异。查看official cache
documentation获取更多信息。
package
和 test
步骤分别简单地运行 mvn package
和 mvn test
(使用 Maven 选项如上所述)。
关于java - 激活 Gitlab 以构建项目并运行测试的 .gitlab-ci.yml 文件应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54058042/