You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Pipeline B的作业获得访问Pipeline A制品的权限

解决Pipeline B访问Pipeline A Artifact的权限配置方案

不同CI/CD平台的权限配置逻辑略有差异,以下是主流平台的具体操作步骤:

GitHub Actions

  • 配置令牌权限:
    • 若Pipeline A和B在同一仓库,只需在B的workflow文件中添加权限声明,确保GITHUB_TOKEN有读取权限:
      permissions:
        contents: read
        actions: read
      
    • 若A和B在不同仓库,需要生成一个带repo权限的个人访问令牌(PAT),将其存入B仓库的Secrets(命名为PAT_TOKEN),然后在下载Artifact时指定该令牌:
      - name: 下载Pipeline A的CSV文件
        uses: actions/download-artifact@v4
        with:
          name: <A的Artifact名称>
          repository: <用户名>/<A仓库名>
          workflow: <A的工作流文件名>
          token: ${{ secrets.PAT_TOKEN }}
      

GitLab CI

  • 使用CI_JOB_TOKEN访问:
    1. 进入Pipeline A的项目设置,开启允许来自其他项目的CI/CD作业访问选项;
    2. 在Pipeline B的作业脚本中,通过GitLab API下载Artifact,利用内置的CI_JOB_TOKEN验证:
    curl --header "JOB-TOKEN: $CI_JOB_TOKEN" \
      "https://gitlab.example.com/api/v4/projects/<A项目ID>/jobs/artifacts/main/download?job=<A的作业名>" \
      -o artifact.zip && unzip artifact.zip
    
  • 使用项目访问令牌:
    在A项目生成一个拥有read_repository和read_artifacts权限的访问令牌,存入B项目的CI/CD变量(如A_PROJECT_TOKEN),替换上述命令中的CI_JOB_TOKEN为该变量即可。

Azure DevOps

  • 配置服务主体权限:
    1. 进入Azure DevOps项目设置,找到Pipeline A所在的项目,在权限中添加Pipeline B的服务主体,授予读取Artifact的权限;
    2. 在Pipeline B中使用Download Pipeline Artifact任务,指定来源为Pipeline A:
    - task: DownloadPipelineArtifact@2
      inputs:
        source: 'specific'
        project: '<A项目名称>'
        pipeline: '<A流水线ID>'
        artifact: '<A的Artifact名称>'
        path: '$(System.ArtifactsDirectory)'
    

通用检查项

  • 确认Pipeline A已正确上传目标CSV文件为Artifact,且Artifact的保留时长足够;
  • 检查Pipeline B脚本中下载后的文件路径是否正确,避免因路径错误导致"无法访问";
  • 权限配置完成后,重新运行Pipeline B验证访问效果。

内容的提问来源于stack exchange,提问作者awesomness03

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 07:57:33