ZBLOG

gitlab ci mvn sonar 无法找到之前stage的文件

这可能是因为在 Gitlab CI pipeline 中,每个 stage 都是在不同的容器中运行的。因此,在一个 stage 中生成的文件并不能自动传递给下一个 stage。

如果您需要将文件从一个 stage 传递到另一个 stage,您需要使用 artifacts(构件物)机制来实现。在一个 stage 中生成的文件可以通过将其打包为 artifact,然后将其上传到 Gitlab CI 的服务器上。在下一个 stage 中,您可以使用 job 来下载这些 artifact,并在容器中解压它们以使用其中的文件。

例如,如果您在一个 Maven 构建 stage 中使用 Sonarqube 进行静态代码分析,则可以使用以下 Gitlab CI 配置文件:

stages:
  - build
  - sonar

build:
  image: maven:3.6-jdk-11-slim
  stage: build
  script:
    - mvn clean package

sonar:
  image: sonarsource/sonar-scanner-cli:latest
  stage: sonar
  dependencies:
    - build
  script:
    - sonar-scanner \
        -Dsonar.projectKey=my-project \
        -Dsonar.sources=. \
        -Dsonar.host.url=http://localhost:9000 \
        -Dsonar.login=$SONAR_TOKEN
  artifacts:
    paths:
      - target/

在这个例子中,build stage 使用 maven:3.6-jdk-11-slim 镜像来构建 Maven 项目,并在 target/ 目录中生成构建产物。然后,sonar stage 使用 sonarsource/sonar-scanner-cli:latest 镜像来运行 Sonarqube 分析,它依赖于 build stage 并使用 Maven 项目中的源代码进行分析。最后,使用 artifactstarget/ 目录中的构建产物上传到 Gitlab CI 的服务器上,以便下一个 stage 可以下载并使用其中的文件。

请注意,您需要在 sonar stage 中指定 artifacts,因为这是唯一一个需要访问建筑产物的 stage。如果您没有指定 artifacts,则默认情况下不会将任何文件传递给下一个 stage。

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=386

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?