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

如何在GitHub Action中获取新构建Artifact链接以创建Release?

获取GitHub Actions构建产物链接用于创建Release

两种实现方案


方案一:通过GitHub API直接获取Artifact下载链接

在现有工作流中新增一个依赖build-android的job,调用GitHub API解析出Artifact的下载链接,可直接用于后续Release操作:

on:
  workflow_dispatch:

name: Build  
jobs:
  install-and-test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install npm dependencies
        run: npm install
  build-android:
    needs: install-and-test
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Install npm dependencies
        run: npm install
      - name: Build Android Release
        run: cd android && ./gradlew assembleRelease
      - name: Upload Artifact
        uses: actions/upload-artifact@v1
        with:
          name: app-release.apk
          path: android/app/build/outputs/apk/release/
  get-artifact-and-create-release:
    needs: build-android
    runs-on: ubuntu-latest
    steps:
      - name: 获取Artifact下载链接
        id: fetch_artifact_url
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          RUN_ID: ${{ github.run_id }}
          ARTIFACT_NAME: app-release.apk
        run: |
          # 调用GitHub API拉取当前运行的Artifact列表
          ARTIFACT_RESPONSE=$(curl -s -H "Authorization: token $GITHUB_TOKEN" \
            "https://api.github.com/repos/${{ github.repository }}/actions/runs/$RUN_ID/artifacts")
          # 用jq筛选目标Artifact的下载链接
          DOWNLOAD_URL=$(echo "$ARTIFACT_RESPONSE" | jq -r ".artifacts[] | select(.name == \"$ARTIFACT_NAME\") | .archive_download_url")
          # 将链接存入步骤变量
          echo "download_url=$DOWNLOAD_URL" >> $GITHUB_OUTPUT
      - name: 打印Artifact链接
        run: echo "Artifact下载地址: ${{ steps.fetch_artifact_url.outputs.download_url }}"
      # 以下是创建Release并上传产物的步骤
      - name: 创建Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: v1.0.${{ github.run_number }}
          release_name: Release v1.0.${{ github.run_number }}
          body: 自动构建的Android正式版本
          draft: false
          prerelease: false
      - name: 上传产物到Release
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: android/app/build/outputs/apk/release/app-release.apk
          asset_name: app-release.apk
          asset_content_type: application/vnd.android.package-archive

方案二:先下载Artifact再创建Release

如果不需要单独获取链接,可直接在后续job中下载已上传的Artifact,再关联到Release:

# 省略前面的install-and-test和build-android步骤,仅展示新增的Release job
  create-release-with-artifact:
    needs: build-android
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: 下载构建产物
        uses: actions/download-artifact@v1
        with:
          name: app-release.apk
          path: ./artifact
      - name: 创建Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: v1.0.${{ github.run_number }}
          release_name: Release v1.0.${{ github.run_number }}
          body: 自动构建的Android正式版本
          draft: false
          prerelease: false
      - name: 上传产物到Release
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./artifact/app-release.apk
          asset_name: app-release.apk
          asset_content_type: application/vnd.android.package-archive

核心注意事项

  • ${{ secrets.GITHUB_TOKEN }}是GitHub自动生成的令牌,默认拥有仓库读写权限,无需手动配置。
  • Ubuntu-latest环境默认预装jq工具,用于解析API返回的JSON数据。
  • 若使用actions/upload-artifact@v2+版本,配置参数会略有差异,但核心逻辑保持一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:02:42