name: Upload Preview Build to Netlify on: workflow_run: workflows: ["Build pull request"] types: - completed jobs: get-build-and-deploy: permissions: contents: read pull-requests: write runs-on: ubuntu-latest if: > ${{ github.event.workflow_run.conclusion == 'success' }} steps: # There's a 'download artifact' action but it hasn't been updated for the # workflow_run action (https://github.com/actions/download-artifact/issues/60) # so instead we get this mess: - name: Download artifact uses: actions/github-script@v6.2.0 with: script: | var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ owner: context.repo.owner, repo: context.repo.repo, run_id: ${{github.event.workflow_run.id }}, }); var matchArtifact = artifacts.data.artifacts.filter((artifact) => { return artifact.name == "previewbuild" })[0]; var download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, artifact_id: matchArtifact.id, archive_format: 'zip', }); var fs = require('fs'); fs.writeFileSync('${{github.workspace}}/previewbuild.zip', Buffer.from(download.data)); var prInfoArtifact = artifacts.data.artifacts.filter((artifact) => { return artifact.name == "pr.json" })[0]; var download = await github.rest.actions.downloadArtifact({ owner: context.repo.owner, repo: context.repo.repo, artifact_id: prInfoArtifact.id, archive_format: 'zip', }); var fs = require('fs'); fs.writeFileSync('${{github.workspace}}/pr.json.zip', Buffer.from(download.data)); - name: Extract Artifacts run: unzip -d dist previewbuild.zip && rm previewbuild.zip && unzip pr.json.zip && rm pr.json.zip - name: Read PR Info id: readctx uses: actions/github-script@v6.2.0 with: script: | var fs = require('fs'); var pr = JSON.parse(fs.readFileSync('${{github.workspace}}/pr.json')); console.log(`::set-output name=prnumber::${pr.number}`); - name: Deploy to Netlify id: netlify uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99 with: publish-dir: dist deploy-message: "Deploy from GitHub Actions" # These don't work because we're in workflow_run enable-pull-request-comment: false enable-commit-comment: false env: NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE3_ID }} timeout-minutes: 1 - name: Edit PR Description uses: Beakyn/gha-comment-pull-request@2167a7aee24f9e61ce76a23039f322e49a990409 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: pull-request-number: ${{ steps.readctx.outputs.prnumber }} description-message: | Preview: ${{ steps.netlify.outputs.deploy-url }} ⚠️ Exercise caution. Use test accounts. ⚠️