Skip to content

Commit

Permalink
create a github action workflow for preview deployments (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
HarshCasper authored Feb 29, 2024
1 parent c28f68a commit 21d2afe
Show file tree
Hide file tree
Showing 3 changed files with 146 additions and 0 deletions.
50 changes: 50 additions & 0 deletions .github/workflows/preview-build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
name: Preview Build

on:
pull_request:
types: [opened, synchronize, reopened]

jobs:
build-preview:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
submodules: recursive
fetch-depth: 0

- name: Setup Hugo
uses: peaceiris/actions-hugo@v2
with:
hugo-version: '0.101.0'
extended: true

- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: '16'

- name: Install and Build
run: |
npm ci
hugo --gc --minify
- name: Upload dist artifact
uses: actions/upload-artifact@v4
with:
name: dist
path: ./public
retention-days: 7

- name: Save PR number
if: ${{ always() }}
run: echo ${{ github.event.number }} > ./pr-id.txt

- name: Upload PR number
if: ${{ always() }}
uses: actions/upload-artifact@v4
with:
name: pr
path: ./pr-id.txt
80 changes: 80 additions & 0 deletions .github/workflows/preview-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
name: Preview Deploy

on:
workflow_run:
workflows: ["Preview Build"]
types:
- completed

jobs:
success:
runs-on: ubuntu-latest
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
steps:
- name: download pr artifact
uses: dawidd6/action-download-artifact@v3
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
name: pr

- name: Save the PR ID
id: pr
run: echo "::set-output name=id::$(<pr-id.txt)"

- name: Download dist artifact
uses: dawidd6/action-download-artifact@v3
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
workflow_conclusion: success
name: dist

- name: Upload on Surge
id: deploy
run: |
export DEPLOY_DOMAIN=https://localstack-snowflake-docs-preview-pr-${{ steps.pr.outputs.id }}.surge.sh
npx surge --project ./ --domain $DEPLOY_DOMAIN --token ${{ secrets.SURGE_TOKEN }}
- name: Update status Comment
uses: actions-cool/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
body: |
🎊 PR Preview has been successfully built and deployed to https://localstack-snowflake-docs-preview-pr-${{ steps.pr.outputs.id }}.surge.sh 🎊
<!-- Sticky Pull Request Comment -->
body-include: '<!-- Sticky Pull Request Comment -->'
number: ${{ steps.pr.outputs.id }}

- name: Job failure
if: ${{ failure() }}
uses: actions-cool/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
body: |
Deploy PR Preview failed.
<!-- Sticky Pull Request Comment -->
body-include: '<!-- Sticky Pull Request Comment -->'
number: ${{ steps.pr.outputs.id }}

failed:
runs-on: ubuntu-latest
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'failure'
steps:
- name: Download PR artifact
uses: dawidd6/action-download-artifact@v3
with:
workflow: ${{ github.event.workflow_run.workflow_id }}
name: pr

- name: Save the PR ID
id: pr
run: echo "::set-output name=id::$(<pr-id.txt)"

- name: Job failure
uses: actions-cool/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
body: |
Deploy PR Preview failed.
<!-- Sticky Pull Request Comment -->
body-include: '<!-- Sticky Pull Request Comment -->'
number: ${{ steps.pr.outputs.id }}
16 changes: 16 additions & 0 deletions .github/workflows/preview-start.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
name: Preview Start

on: pull_request_target

jobs:
preview:
runs-on: ubuntu-latest
steps:
- name: create
uses: actions-cool/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
body: |
⚡️ Deploying PR Preview...
<!-- Sticky Pull Request Comment -->
body-include: '<!-- Sticky Pull Request Comment -->'

0 comments on commit 21d2afe

Please sign in to comment.