jobs:
build-pull-request:
+ name: 'Build pull request'
runs-on: ubuntu-latest
env:
PR_NUMBER: ${{github.event.number}}
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
-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 artifact
- uses: actions/github-script@v6.2.0
+ - name: Download pr number
+ uses: dawidd6/action-download-artifact@7847792dd435a50521b8e3bd3576dae7459d1fa8
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
+ 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
+ uses: dawidd6/action-download-artifact@7847792dd435a50521b8e3bd3576dae7459d1fa8
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
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
jobs:
deploy-to-netlify:
- name: 'Deploy'
+ name: 'Deploy to Netlify'
runs-on: ubuntu-latest
- permissions:
- contents: read
steps:
- name: Checkout repository
uses: actions/checkout@v3.0.2
uses: actions/setup-node@v3.4.1
with:
node-version: 17.9.0
- - name: Build and deploy to Netlify
- uses: jsmrcaga/action-netlify-deploy@53de32e559b0b3833615b9788c7a090cd2fddb03
+ cache: 'npm'
+ - name: Install dependencies
+ run: npm ci
+ - name: Build app
+ run: npm run build
+ - name: Deploy to Netlify
+ uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99
with:
- install_command: "npm ci"
+ publish-dir: dist
+ deploy-message: "Dev deploy ${{ github.sha }}"
+ enable-commit-comment: false
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ production-deploy: true
+ github-deployment-environment: nightly
+ github-deployment-description: 'Nightly deployment on each commit to dev branch'
+ env:
NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE2_ID }}
- BUILD_DIRECTORY: "dist"
- NETLIFY_DEPLOY_MESSAGE: "Dev deploy v${{ github.ref }}"
- NETLIFY_DEPLOY_TO_PROD: true
+ timeout-minutes: 1
types: [published]
jobs:
- create-release-tar:
- name: 'Create release tar'
+ deploy-and-tarball:
+ name: 'Netlify deploy and tarball'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/setup-node@v3.4.1
with:
node-version: 17.9.0
- - name: Build
- run: |
- npm ci
- npm run build
+ cache: 'npm'
+ - name: Install dependencies
+ run: npm ci
+ - name: Build app
+ run: npm run build
+ - name: Deploy to Netlify
+ uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99
+ with:
+ publish-dir: dist
+ deploy-message: "Prod deploy ${{ github.ref_name }}"
+ enable-commit-comment: false
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ production-deploy: true
+ github-deployment-environment: stable
+ github-deployment-description: 'Stable deployment on each release'
+ env:
+ NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
+ NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
+ timeout-minutes: 1
- name: Get version from tag
id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
cinny-${{ steps.vars.outputs.tag }}.tar.gz
cinny-${{ steps.vars.outputs.tag }}.tar.gz.asc
- deploy-to-netlify:
- name: 'Deploy to Netlify'
- runs-on: ubuntu-latest
- permissions:
- contents: read
- steps:
- - name: Checkout repository
- uses: actions/checkout@v3.0.2
- - name: Setup node
- uses: actions/setup-node@v3.4.1
- with:
- node-version: 17.9.0
- - name: Build and deploy to Netlify
- uses: jsmrcaga/action-netlify-deploy@53de32e559b0b3833615b9788c7a090cd2fddb03
- with:
- install_command: "npm ci"
- NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
- NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
- BUILD_DIRECTORY: "dist"
- NETLIFY_DEPLOY_MESSAGE: "Prod deploy v${{ github.ref }}"
- NETLIFY_DEPLOY_TO_PROD: true
-
- push-to-dockerhub:
+ publish-image:
name: Push Docker image to Docker Hub, ghcr
runs-on: ubuntu-latest
permissions: