将作业 ID 传递给下一个作业

Vij*_*jai 6 gitlab gitlab-ci

我正在尝试构建 Android 应用程序,然后通过以下方式将工件上传到另一个服务器:

  1. 作业完成后,通过传递作业 ID 和工件名称,cURL 该服务器中的 php 页面
  2. 使用 gitlab api 使用传递的作业 ID 和工件名称来获取工件的单个文件

到目前为止,我有 2 个阶段builddeploy。因此,一旦构建成功并且工件上传,部署作业就会启动,它应该能够传入build工件的作业 ID(工件名称是全局变量),最终将卷曲我的 php 页面以启动下载。这是我的 gitlab ci 配置:

stages:
  - buildRelease
  - deploy

variables:
    fileName: artifact-Name.apk


buildReleaseApp:
    variables:
        GIT_SUBMODULE_STRATEGY: recursive
    before_script:
        - chmod +x ./gradlew 
        - echo $setUpBuildScript | base64 -d > buildRelease.sh
        - chmod +x prepareConfig.sh
    stage: buildRelease
    script:
        - sh buildRelease.sh
    only:
        - tags
    artifacts:
        paths:
            - app/build/outputs/apk/playstore/release/*.apk
    after_script:
        - mv app/build/outputs/apk/playstore/release/*.apk app/build/outputs/apk/playstore/release/${fileName}

deployReleaseApp:
    variables: 
    dependencies: 
        - buildReleaseApp
    stage: deploy
    only:
        - tags 
    script:
        - echo $pushScript | base64 -d > deploy.sh
        - sh deploy.sh
Run Code Online (Sandbox Code Playgroud)

一切都对我有用,除了 php 接收部署作业的 ID 并且当 php 尝试下载工件时build,它会抛出 404。

有没有办法将buildReleasestage的job ID传递给deployjob?

小智 8

这可以帮助...

 after_script:
    - echo "JOB_ID=$CI_JOB_ID" >> job.env
  artifacts:
    reports:
      dotenv: job.env
Run Code Online (Sandbox Code Playgroud)

您可以在其他阶段访问此 job.env 并调用 $JOB_ID 来获取相关作业 ID 和状态

  • 您能详细说明一下您的答案吗?在接下来的工作中你会如何使用它? (2认同)