cf8ee19e23
Some absolutely horrenous hacks to upload the context as an artifact then download it, unzip it and set the PR number as a variable we can use, because GitHub Actions just doesn't offer any other way of doing this. Maybe we'd be better off going back to Netlify...
79 lines
3.7 KiB
YAML
79 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: .
|
|
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: Comment on PR
|
|
uses: phulsechinmay/rewritable-pr-comment@v0.3.0
|
|
with:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
ISSUE_ID: ${{ steps.readctx.outputs.prnumber }}
|
|
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.
|
|
|