Simplify PR actions

This commit is contained in:
Krishan 2022-09-07 12:24:16 +05:30
parent 382d880110
commit 8e18cc918f
2 changed files with 36 additions and 64 deletions

View file

@ -6,6 +6,7 @@ on:
jobs: jobs:
build-pull-request: build-pull-request:
name: 'Build pull request'
runs-on: ubuntu-latest runs-on: ubuntu-latest
env: env:
PR_NUMBER: ${{github.event.number}} PR_NUMBER: ${{github.event.number}}
@ -16,23 +17,22 @@ jobs:
uses: actions/setup-node@v3.4.1 uses: actions/setup-node@v3.4.1
with: with:
node-version: 17.9.0 node-version: 17.9.0
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build app - name: Build app
run: npm ci && npm run build run: npm run build
- name: Upload artifact - name: Upload artifact
uses: actions/upload-artifact@v3.1.0 uses: actions/upload-artifact@v3.1.0
with: with:
name: previewbuild name: preview
path: dist path: dist
retention-days: 1 retention-days: 1
- name: Get PR info - name: Save pr number
uses: actions/github-script@v6.2.0 run: echo ${PR_NUMBER} > ./pr.txt
with: - name: Upload pr number
script: |
var fs = require('fs');
fs.writeFileSync('${{github.workspace}}/pr.json', JSON.stringify(context.payload.pull_request));
- name: Upload PR Info
uses: actions/upload-artifact@v3.1.0 uses: actions/upload-artifact@v3.1.0
with: with:
name: pr.json name: pr
path: pr.json path: ./pr.txt
retention-days: 1 retention-days: 1

View file

@ -1,68 +1,40 @@
name: Upload Preview Build to Netlify name: Deploy PR to Netlify
on: on:
workflow_run: workflow_run:
workflows: ["Build pull request"] workflows: ["Build pull request"]
types: types: [completed]
- completed
jobs: jobs:
get-build-and-deploy: deploy-pull-request:
name: 'Deploy pull request'
runs-on: ubuntu-latest
permissions: permissions:
contents: read contents: read
pull-requests: write pull-requests: write
runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion == 'success' }}
if: >
${{ github.event.workflow_run.conclusion == 'success' }}
steps: steps:
# There's a 'download artifact' action but it hasn't been updated for the - name: Download pr number
# workflow_run action (https://github.com/actions/download-artifact/issues/60) uses: dawidd6/action-download-artifact@7847792dd435a50521b8e3bd3576dae7459d1fa8
# so instead we get this mess: 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::$(<pr.txt)"
- name: Download artifact - name: Download artifact
uses: actions/github-script@v6.2.0 uses: dawidd6/action-download-artifact@7847792dd435a50521b8e3bd3576dae7459d1fa8
with: with:
script: | workflow: ${{ github.event.workflow.id }}
var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ run_id: ${{ github.event.workflow_run.id }}
owner: context.repo.owner, name: preview
repo: context.repo.repo, path: dist
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 - name: Deploy to Netlify
id: netlify id: netlify
uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99 uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99
with: with:
publish-dir: dist 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 # These don't work because we're in workflow_run
enable-pull-request-comment: false enable-pull-request-comment: false
enable-commit-comment: false enable-commit-comment: false
@ -75,7 +47,7 @@ jobs:
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with: with:
pull-request-number: ${{ steps.readctx.outputs.prnumber }} pull-request-number: ${{ steps.pr.outputs.id }}
description-message: | description-message: |
Preview: ${{ steps.netlify.outputs.deploy-url }} Preview: ${{ steps.netlify.outputs.deploy-url }}
⚠️ Exercise caution. Use test accounts. ⚠️ ⚠️ Exercise caution. Use test accounts. ⚠️