diff --git a/.github/workflows/build-pull-request.yml b/.github/workflows/build-pull-request.yml index 1b7e0aa8..c43d007a 100644 --- a/.github/workflows/build-pull-request.yml +++ b/.github/workflows/build-pull-request.yml @@ -6,6 +6,7 @@ on: jobs: build-pull-request: + name: 'Build pull request' runs-on: ubuntu-latest env: PR_NUMBER: ${{github.event.number}} @@ -16,23 +17,22 @@ jobs: uses: actions/setup-node@v3.4.1 with: node-version: 17.9.0 + cache: 'npm' + - name: Install dependencies + run: npm ci - name: Build app - run: npm ci && npm run build + run: npm run build - name: Upload artifact uses: actions/upload-artifact@v3.1.0 with: - name: previewbuild + name: preview path: dist retention-days: 1 - - name: Get PR info - uses: actions/github-script@v6.2.0 - with: - script: | - var fs = require('fs'); - fs.writeFileSync('${{github.workspace}}/pr.json', JSON.stringify(context.payload.pull_request)); - - name: Upload PR Info + - name: Save pr number + run: echo ${PR_NUMBER} > ./pr.txt + - name: Upload pr number uses: actions/upload-artifact@v3.1.0 with: - name: pr.json - path: pr.json - retention-days: 1 + name: pr + path: ./pr.txt + retention-days: 1 \ No newline at end of file diff --git a/.github/workflows/deploy-pull-request.yml b/.github/workflows/deploy-pull-request.yml index 97aba4a3..f5dbacc5 100644 --- a/.github/workflows/deploy-pull-request.yml +++ b/.github/workflows/deploy-pull-request.yml @@ -1,68 +1,40 @@ -name: Upload Preview Build to Netlify +name: Deploy PR to Netlify on: workflow_run: workflows: ["Build pull request"] - types: - - completed + types: [completed] jobs: - get-build-and-deploy: + deploy-pull-request: + name: 'Deploy pull request' + runs-on: ubuntu-latest permissions: contents: read pull-requests: write - runs-on: ubuntu-latest - if: > - ${{ github.event.workflow_run.conclusion == 'success' }} + 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 pr number + uses: dawidd6/action-download-artifact@7847792dd435a50521b8e3bd3576dae7459d1fa8 + with: + workflow: ${{ github.event.workflow.id }} + run_id: ${{ github.event.workflow_run.id }} + name: pr + - name: Output pr number + id: pr + run: echo "::set-output name=id::$( { - 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}`); + workflow: ${{ github.event.workflow.id }} + run_id: ${{ github.event.workflow_run.id }} + name: preview + path: dist - name: Deploy to Netlify id: netlify uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99 with: publish-dir: dist - deploy-message: "Deploy from GitHub Actions" + deploy-message: "Deploy PR ${{ steps.pr.outputs.id }}" + alias: ${{ steps.pr.outputs.id }} # These don't work because we're in workflow_run enable-pull-request-comment: false enable-commit-comment: false @@ -75,7 +47,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - pull-request-number: ${{ steps.readctx.outputs.prnumber }} + pull-request-number: ${{ steps.pr.outputs.id }} description-message: | Preview: ${{ steps.netlify.outputs.deploy-url }} - ⚠️ Exercise caution. Use test accounts. ⚠️ + ⚠️ Exercise caution. Use test accounts. ⚠️ \ No newline at end of file