繁体   English   中英

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

[英]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文档

assemblecheck步骤分别简单地运行gradle assemblegradle check 虽然gradle test在许多情况下就足够了(与gradle checkcheck步骤包括test同时还包括其他验证步骤。有关checktest之间差异的更多信息,请参阅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文档

packagetest步骤分别简单地运行mvn packagemvn test (使用上面描述的 Maven 选项)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM