如何在另一个工作流程中下载工件/发布资产

Nic*_*ion 27 github-actions

Github 操作是否可以上传构建工件以在发布分支上提交,然后让另一个工作流程下载并使用该工件?

name: Deploy release to UAT & archive artifact
on:
  release:
    types: [published]
jobs:
  package:
    name: package and archive
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v1
        with:
          node-version: '12'
      - name: serverless package
        uses: serverless/github-action@master
        with:
          args: package --stage=prod
      - name: Upload Release Asset
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ github.event.release.upload_url }}
          asset_path: .serverless
          asset_name: release-asset-${{ github.event.release.name }}.zip
          asset_content_type: application/zip
      - name: Upload Artifact
        uses: actions/upload-artifact@v2
        with:
          name: release-artifact-${{ github.event.release.name }}
          path: .serverless

Run Code Online (Sandbox Code Playgroud)

...但是如何下载资产/工件?我认为up/download-artifact只能在同一工作流程中使用,并且似乎没有下载发布资产的操作。

name: Deploy to production
on:
  workflow_dispatch:
    inputs:
      release:
        description: Name of release to deploy
        required: true
        default: v1.0.0

jobs:
  deploy:
    name: deploy
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - uses: actions/setup-node@v1
      with:
        node-version: '12'
    - run: npm ci --only=prod
    - name: Download the release artifact
      uses: actions/download-artifact@v2
      with:
        name: release-${{ github.event.inputs.release }}
        path: .serverless
    - name: serverless deploy
      uses: serverless/github-action@master
      with:
        args: deploy --stage=prod --package=.serverless
      env:
        AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
        AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
Run Code Online (Sandbox Code Playgroud)

Nic*_*ion 5

我的一位队友做到了这一点:

      - id: download-release-asset
        name: Download release asset
        uses: dsaltares/fetch-gh-release-asset@master
        with:
          version: tags/${{ env.RELEASE }}
          file: myproject-${{ env.RELEASE }}.tar.gz
          target: release.tar.gz
          token: ${{ secrets.DEPLOY_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,这仅适用于 Linux,不适用于 Windows。 (2认同)