[英]What should be the .gitlab-ci.yml file that activates Gitlab to build a project and run tests?
我有一个位于 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
之间差异的更多信息,请参阅Gradle 差异 test 和 check 。
有关更多信息,请参阅以下内容:
等效的 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
将本地存储-Dmaven.repo.local=.m2/repository
设置为构建服务器(Gitlab)上的位置。 这发挥了 Gitlab 的缓存能力。 构建可能需要很长时间才能执行,因为每次构建都需要在每次执行构建时下载所有依赖项; 为了加快速度,可以包含缓存以消除重复下载依赖项的需要。 缓存的细节可能因您的项目而异。 有关更多信息,请参阅官方cache
文档。
package
和test
步骤分别简单地运行mvn package
和mvn test
(使用上面描述的 Maven 选项)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.