激活Gitlab来构建项目并运行测试的.gitlab-ci.yml文件应该是什么?

时间:2019-01-06 02:06:40

标签: java gradle gitlab gitlab-ci gitlab-ci-runner

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

应该是什么样?

我很确定已经提出了类似的问题,但找不到,因此,感谢您的帮助。

1 个答案:

答案 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/cacheassemble步骤仅分别运行checkgradle 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步骤仅分别运行packagetest(使用上述Maven选项)。