Update and simplify actions (#831)

* Replace action with one we use already

* Simplify PR actions

* fix name
This commit is contained in:
Krishan 2022-09-07 13:46:44 +05:30 committed by GitHub
parent b8a8babc88
commit 831bb83f4e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 75 additions and 102 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. ⚠️

View file

@ -7,10 +7,8 @@ on:
jobs: jobs:
deploy-to-netlify: deploy-to-netlify:
name: 'Deploy' name: 'Deploy to Netlify'
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions:
contents: read
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v3.0.2 uses: actions/checkout@v3.0.2
@ -18,12 +16,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
- name: Build and deploy to Netlify cache: 'npm'
uses: jsmrcaga/action-netlify-deploy@53de32e559b0b3833615b9788c7a090cd2fddb03 - name: Install dependencies
run: npm ci
- name: Build app
run: npm run build
- name: Deploy to Netlify
uses: nwtgck/actions-netlify@b7c1504e00c6b8a249d1848cc1b522a4865eed99
with: 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_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE2_ID }} NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE2_ID }}
BUILD_DIRECTORY: "dist" timeout-minutes: 1
NETLIFY_DEPLOY_MESSAGE: "Dev deploy v${{ github.ref }}"
NETLIFY_DEPLOY_TO_PROD: true

View file

@ -5,8 +5,8 @@ on:
types: [published] types: [published]
jobs: jobs:
create-release-tar: deploy-and-tarball:
name: 'Create release tar' name: 'Netlify deploy and tarball'
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repository - name: Checkout repository
@ -15,10 +15,25 @@ 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
- name: Build cache: 'npm'
run: | - name: Install dependencies
npm ci run: npm ci
npm run build - 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 - name: Get version from tag
id: vars id: vars
run: echo ::set-output name=tag::${GITHUB_REF#refs/*/} run: echo ::set-output name=tag::${GITHUB_REF#refs/*/}
@ -41,29 +56,7 @@ jobs:
cinny-${{ steps.vars.outputs.tag }}.tar.gz cinny-${{ steps.vars.outputs.tag }}.tar.gz
cinny-${{ steps.vars.outputs.tag }}.tar.gz.asc cinny-${{ steps.vars.outputs.tag }}.tar.gz.asc
deploy-to-netlify: publish-image:
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:
name: Push Docker image to Docker Hub, ghcr name: Push Docker image to Docker Hub, ghcr
runs-on: ubuntu-latest runs-on: ubuntu-latest
permissions: permissions: