spring-boot - Gitlab CI/CD 跨项目工件不使用 "needs"下载

标签 spring-boot continuous-integration gitlab gitlab-ci gitlab-ci-runner

我有一个名为 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-libcore-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/

相关文章:

diff - 如何在 GitLab 中默认为并排 View

java - 使用 Gitlab CI 和 Junit 测试媒体播放器

java - Spark Streaming Context 阻塞 REST 端点

ios - Jenkins 因 FaSTLane 而失败

continuous-integration - 在 Jenkins 中设置来自主作业的下游作业的构建号

node.js - 在 Docker 中使用 Yarn 从私有(private)注册表安装包

gitlab: git clone https with large repos 失败

java - 如何在 Spring Boot 的 Spring Security 级别启用 CORS

spring - 库 jar 可以从 Spring Cloud Config Server 读取属性吗?

spring-boot - 添加 sleuth 和 zipkin 后,应用程序无法启动