GitLab:如何将前一个工作的工件作为发布资产包含在内?

Vis*_*han 12 continuous-integration continuous-deployment gitlab gitlab-ci

该任务create:release创建一个新版本。core.zip我们如何在任务中添加工件create:release

prepare:release:
  stage: prepare_release
  before_script:
    - echo "Setting up packages for Build"
    - apk --no-cache add zip
  script:
    - echo "Preparing release"
    - echo "Build Core"
    - yarn --cwd ./core/ install && yarn --cwd ./core/ build
    - echo "Zip distribution folder for Core"
    - zip -r core.zip ./core/dist ./core/node_modules ./core/package.json
  artifacts:
     paths:
       - core.zip
     expire_in: never

create:release:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  needs:
    - job: prepare:release
      artifacts: true
  variables:
    TAG: '$CI_COMMIT_SHA'
  script:
    - echo "Create Release $TAG"
  release:
    name: 'Release $TAG'
    tag_name: '$TAG'
    ref: '$TAG'
    description: 'Release $TAG'
Run Code Online (Sandbox Code Playgroud)

Vis*_*han 20

我已经解决了这个问题。在prepare:release作业中,将作业ID保存在环境文件中,并且该文件应该位于artifacts.reports.env该作业的目录中。稍后,在create:release作业中,使用 API"https://gitlab.com/<namespace>/<project_name>/-/jobs/<job_id>/artifacts/download"来引用工件。

更新的管道:

prepare:release:
  stage: prepare_release
  before_script:
    - echo "Setting up packages for Build"
    - apk --no-cache add zip
  script:
    - echo "Preparing release"
    - echo "Build Core"
    - yarn --cwd ./core/ install && yarn --cwd ./core/ build
    - echo "Zip distribution folder for Core"
    - zip -r core.zip ./core/dist ./core/node_modules ./core/package.json
  after_script:
    - echo "JOB_ID=$CI_JOB_ID" >> job.env
  artifacts:
     paths:
       - core.zip
     expire_in: never
     reports:
       dotenv: job.env

create:release:
  stage: release
  image: registry.gitlab.com/gitlab-org/release-cli:latest
  needs:
    - job: prepare:release
      artifacts: true
  variables:
    TAG: '$CI_COMMIT_SHA'
  script:
    - echo "Create Release $TAG"
    - echo $JOB_ID  
  release:
    name: 'Release $TAG'
    tag_name: '$TAG'
    ref: '$TAG'
    description: 'Release $TAG'
    assets:
      links:
        - name: "core.zip"
          url: "https://gitlab.com/<namespace>/<project_name>/-/jobs/$JOB_ID/artifacts/download"
Run Code Online (Sandbox Code Playgroud)

  • 在最后一行,发布资产链接 URL 包含“&lt;job_id&gt;”。这是自动替换的东西吗?它似乎没有使用您的“job.env”。 (2认同)
  • @StealthRabbi 一个非常好的发现。我现在已经编辑了答案。`&lt;job_id&gt;` 应该是 `$JOB_ID`,它来自作业 `prepare:release` 的环境变量 (2认同)