我有一个名为 my-group
的组,它由一个 spring-boot maven 项目和 2 个库组成,如下所示:
my-group
|
├─> core-lib
| ├─> .gitlab-ci.yml
| └─> pom.xml
├─> core-sec
| ├─> .gitlab-ci.yml
| └─> pom.xml
└─> user-service
├─> .gitlab-ci.yml
└─> pom.xml
项目 user-service
是一个可运行的应用程序,它需要 core-lib
和 core-sec
作为依赖项。
我正在引用此页面:cross-project-artifact-downloads-with-needs
.gitlab-ci.yml 用于核心库
cache:
paths:
- .m2/repository
variables:
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.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: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
DOCKER_DRIVER: overlay2
image: docker:19.03.1
services:
- docker:19.03.1-dind
stages:
- build
mvn_build:
image: maven:3.3.9-jdk-8
stage: build
only:
- gitlabci-test
script:
- "mvn $MAVEN_CLI_OPTS clean install -Dmaven.test.skip=true"
artifacts:
paths:
- target/*.jar
.gitlab-ci.yml 用于用户服务:
cache:
paths:
- .m2/repository
variables:
MAVEN_OPTS: "-Dhttps.protocols=TLSv1.2 -Dmaven.repo.local=$CI_PROJECT_DIR/.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: "--batch-mode --errors --fail-at-end --show-version -DinstallAtEnd=true -DdeployAtEnd=true"
DOCKER_DRIVER: overlay2
image: docker:19.03.1
services:
- docker:19.03.1-dind
stages:
- build
mvn_build:
image: maven:3.3.9-jdk-8
stage: build
only:
- gitlabci-test
script:
- "mvn $MAVEN_CLI_OPTS clean install -Dmaven.test.skip=true"
artifacts:
paths:
- target/*-exec.jar
needs:
- project: my-group/core-lib
job: mvn_build
ref: gitlabci-test
artifacts: true
core-lib 和 core-sec 的工件正在成功构建和上传,但是在构建用户服务 gitlab runner 时说:
Could not find artifact com.myproject.core_lib:core-lib:jar:1.1-SNAPSHOT
请帮我解决这个问题。谢谢
最佳答案
这是一项高级功能,在免费的自托管 GitLab 实例上不受支持。文档没有正确说明这一点,我在更新整个 CI 工作流程后遇到了同样的问题。但是,文档现已更新并将其标记为高级功能。也有关于它的问题,但我找不到了。
关于spring-boot - Gitlab CI/CD 跨项目工件不使用 "needs"下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60871117/