We could include the magic comments in the PR template so the various automated comments were always in the same order, if we wanted.
81 lines
3.7 KiB
YAML
81 lines
3.7 KiB
YAML
name: Upload Preview Build to Netlify
|
|
on:
|
|
workflow_run:
|
|
workflows: ["Layered Preview Build"]
|
|
types:
|
|
- completed
|
|
jobs:
|
|
build:
|
|
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@v3.1.0
|
|
with:
|
|
script: |
|
|
var artifacts = await github.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.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 contextArtifact = artifacts.data.artifacts.filter((artifact) => {
|
|
return artifact.name == "context.json"
|
|
})[0];
|
|
var download = await github.actions.downloadArtifact({
|
|
owner: context.repo.owner,
|
|
repo: context.repo.repo,
|
|
artifact_id: contextArtifact.id,
|
|
archive_format: 'zip',
|
|
});
|
|
var fs = require('fs');
|
|
fs.writeFileSync('${{github.workspace}}/context.json.zip', Buffer.from(download.data));
|
|
- name: Extract Artifacts
|
|
run: unzip -d webapp previewbuild.zip && rm previewbuild.zip && unzip context.json && rm context.json.zip
|
|
- name: 'Read Context'
|
|
id: readctx
|
|
uses: actions/github-script@v3.1.0
|
|
with:
|
|
script: |
|
|
var fs = require('fs');
|
|
var ctx = JSON.parse(fs.readFileSync('${{github.workspace}}/context.json'));
|
|
console.log(`::set-output name=prnumber::${ctx.payload.pull_request.number}`);
|
|
- name: Deploy to Netlify
|
|
id: netlify
|
|
uses: nwtgck/actions-netlify@v1.2
|
|
with:
|
|
publish-dir: webapp
|
|
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_SITE_ID }}
|
|
timeout-minutes: 1
|
|
- name: Edit PR Description
|
|
uses: velas/pr-description@v1.0.1
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
with:
|
|
pull-request-number: ${{ steps.readctx.outputs.prnumber }}
|
|
description-message: |
|
|
Preview: ${{ steps.netlify.outputs.deploy-url }}
|
|
⚠️ Do you trust the author of this PR? Maybe this build will steal your keys or give you malware. Exercise caution. Use test accounts.
|
|
|