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

无法获取已上传Artifact ID,GitHub Actions跨仓库下载求助

跨私有仓库下载GitHub Actions Artifact解决方案

问题1:获取Artifact ID的curl命令无输出

你的curl命令存在三个关键问题:

  1. Authorization令牌未填充:-H "Authorization: Bearer "后缺少实际的PAT令牌,需替换为-H "Authorization: Bearer ${{secrets.PAT_TOKEN}}"
  2. 命令换行格式错误:Workflow中多行bash命令必须用\结尾,否则会被截断执行
  3. PAT权限不足:需确保你的PAT拥有repo和actions权限(私有仓库必须)

修复后的获取Artifact ID命令:

- name: Get artifact ID
  run: |
    curl -L \
    -H "Accept: application/vnd.github+json" \
    -H "Authorization: Bearer ${{secrets.PAT_TOKEN}}" \
    -H "X-GitHub-Api-Version: 2022-11-28" \
    https://api.github.com/repos/OWNER/REPO_A/actions/artifacts -o artifact.json
- name: Extract artifact ID
  run: |
    # 假设取最新的artifact ID,可根据name筛选
    ARTIFACT_ID=$(jq -r '.artifacts[0].id' artifact.json)
    echo "ARTIFACT_ID=$ARTIFACT_ID" >> $GITHUB_ENV

问题2:用run_id下载得到URL而非zip文件

你使用的API端点错误,/runs/${{github.run_id}}artifacts/zip不是有效的下载端点。正确流程是:

  1. 先获取目标run的所有artifacts列表
  2. 提取对应artifact的ID
  3. 使用/artifacts/{ARTIFACT_ID}/zip端点下载

完整的跨仓库下载Workflow示例(仓库B中执行):

jobs:
  build:
    runs_on: [self-hosted]
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: JDK 11 setup
        uses: actions/setup-java@v2
        with:
          java-version: '11'
          distribution: 'zulu'

      - name: Fetch artifacts from Repo A
        run: |
          curl -L \
          -H "Accept: application/vnd.github+json" \
          -H "Authorization: Bearer ${{secrets.PAT_TOKEN}}" \
          -H "X-GitHub-Api-Version: 2022-11-28" \
          https://api.github.com/repos/OWNER/REPO_A/actions/runs/{TARGET_RUN_ID}/artifacts -o run_artifacts.json
          # 替换{TARGET_RUN_ID}为仓库A中生成artifact的run ID,或根据name筛选
          ARTIFACT_ID=$(jq -r '.artifacts[] | select(.name=="YOUR_ARTIFACT_NAME").id' run_artifacts.json)
          echo "ARTIFACT_ID=$ARTIFACT_ID" >> $GITHUB_ENV

      - name: Download artifact from Repo A
        run: |
          curl -L \
          -u ${{secrets.PAT_TOKEN}}: \
          -o myartifact.zip \
          https://api.github.com/repos/OWNER/REPO_A/actions/artifacts/${{env.ARTIFACT_ID}}/zip

      - name: Verify artifact
        run: |
          unzip -t myartifact.zip

额外优化建议

  • 若知道仓库A中artifact的名称,可直接用actions/download-artifact action简化流程(需传递PAT):
- name: Download artifact from Repo A
  uses: actions/download-artifact@v3
  with:
    name: YOUR_ARTIFACT_NAME
    repo: OWNER/REPO_A
    path: ./downloads
  env:
    GITHUB_TOKEN: ${{secrets.PAT_TOKEN}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 05:30:02