【问题标题】:Download artifact after job ends in GitLab在 GitLab 中工作结束后下载工件
【发布时间】:2021-06-29 05:11:35
【问题描述】:

我的 Pipeline 中有两项工作,一项是创建 Android 应用程序 apk 并将其保存在工件中,另一项是调用外部 API 以通知它新的工件。

这是我的 gitlab-ci.yaml 的一部分

assembleProdRelease:
  stage: prod_release
  script:
    - ./gradlew assembleProdRelease
  artifacts:
    paths:
      - app/build/outputs/apk/

  only:
    - prod

    
updateReleaseMgmt:
  stage: update_release_mgmt
  before_script:
    - ''
  script:
    - JOBNAME=assemble"${CI_COMMIT_REF_NAME^}"Release
    - |
     curl --header "Content-Type: application/json" --request PUT --data '{"download_link": "https://xxxxxxxxxxxxx/api/v4/projects/30/jobs/artifacts/'$CI_COMMIT_REF_NAME'/download?job='$JOBNAME'", "access_token": "xxxxxxx", "branch": "$CI_COMMIT_REF_NAME"}' http://xxxxxxxxx/releases

当向我的 API 发送请求并下载工件时,它会获取上一个运行管道的内容,我如何修复和下载当前管道的工件?

【问题讨论】:

  • 1.确保您的阶段顺序正确,以便您的 updateReleaseMgmt 作业在创建工件的作业之后运行 2. 您的 updateReleaseMgmt 作业没有“唯一”键,但您的 assembleProdRelease 有。确保您的 updateReleaseMgmt 作业仅在另一个作业实际更新了工件后运行 3. 如果您可以控制目标服务器,则可以将工件直接发送到您的服务器,而不是向其发送下载链接。

标签: gitlab gitlab-ci gitlab-ce


【解决方案1】:

我没有向管道内的 API 发送请求,而是触发了一个 Webhook,该网络挂钩通知 API 管道的状态(已启动、已完成、失败等),并据此下载了工件。但我必须将下载 URL 添加到我的后端代码中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多