mem*_*und 7 continuous-integration maven gitlab
我想将maven阶段分开为build、test和deploy。
问题:我在这里把事情复杂化了吗?我是否应该只使用一个mvn clean package阶段,因为compile和test是在阶段期间由 Maven 隐式执行的package?
.gitlab-ci.yml:
stages:
- build
- test
- deploy
build:
stage: build
script: mvn clean compile
test:
stage: test
script: mvn clean test
deploy:
stage: deploy
script: mvn clean package -Dmaven.test.skip=true
#...continue with docker deployment...
Run Code Online (Sandbox Code Playgroud)
小智 1
帖子里有两个问题。
如何在gitlab-ci中使用maven分离测试和构建阶段?
这是可能的,可以像这样完成,如GitLab maven 示例中所述:
image: maven:latest
variables:
MAVEN_OPTS: >-
-Dhttps.protocols=TLSv1.2
-Dmaven.repo.local=.m2/repository
-Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=WARN
-Dorg.slf4j.simpleLogger.showDateTime=true
-Djava.awt.headless=true
MAVEN_CLI_OPTS: >-
-s .gitlab-ci_settings.xml
--batch-mode
--errors
--fail-at-end
--show-version
-DinstallAtEnd=true
-DdeployAtEnd=true
-Dstyle.color=always
cache:
paths:
- .m2/repository/
- target/
mvn-compile-job:
stage: mvn-compile
script:
- mvn $MAVEN_CLI_OPTS compile
mvn-test-job:
stage: mvn-test
script:
- mvn $MAVEN_CLI_OPTS test
mvn-deploy-job:
stage: mvn-deploy
script:
- mvn $MAVEN_CLI_OPTS deploy
only:
- master
Run Code Online (Sandbox Code Playgroud)
问题:我在这里把事情复杂化了吗?
这实际上取决于必须做什么以及您想要实现什么。例如,如果您想在不同的分支上运行不同的阶段(在上面的示例中,我们mvn deploy仅在主分支上运行),这是一个很好的解决方案。
mvn deploy然而,与从一开始就在单个分支上运行单独的阶段相比,在 docker 运行器上需要更多时间,因为每个 GitLab 作业运行都需要图像拉取。这只是为 Maven 存储库配置 CI/CD 时需要考虑的事情。
| 归档时间: |
|
| 查看次数: |
2071 次 |
| 最近记录: |