Как загрузить артефакт / релиз-ресурс в другой рабочий процесс

#github-actions

Вопрос:

Возможно ли, чтобы действия Github загружали артефакт сборки для фиксации в ветке выпуска, а затем для другого рабочего процесса загружали и использовали этот артефакт?

 name: Deploy release to UAT amp; 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

 

… но как вы загружаете ресурс / артефакт? Я думаю 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 }}
 

Ответ №1:

Вы можете использовать download-workflow-artifact действие.

Ответ №2:

Один из моих товарищей по команде получил эту работу:

       - 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 }}
 

Комментарии:

1. Обратите внимание, что это работает только в Linux, а не в Windows.