Preview doc in PRs #124
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Preview doc in PRs | |
on: | |
workflow_run: | |
workflows: ["Build documentation"] | |
types: | |
- completed | |
jobs: | |
pr_doc_preview: | |
runs-on: ubuntu-latest | |
if: ${{github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'}} | |
steps: | |
- name: 'Commit Status: Set Workflow Status as Pending' | |
uses: myrotvorets/[email protected] | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: pending | |
sha: ${{ github.event.workflow_run.head_sha }} | |
context: 'Doc preview' | |
- uses: dawidd6/action-download-artifact@v2 | |
with: | |
github_token: ${{secrets.GITHUB_TOKEN}} | |
workflow: push_doc.yml | |
run_id: ${{ github.event.workflow_run.id }} | |
name: doc-preview | |
- name: Get pull request number | |
id: pull-request-number | |
run: | | |
export PULL_REQUEST_NUMBER=`cat pull_request_number` | |
echo "PULL_REQUEST_NUMBER=$PULL_REQUEST_NUMBER" | |
echo "result=${PULL_REQUEST_NUMBER}" >> $GITHUB_OUTPUT | |
- uses: actions/setup-node@v3 | |
with: | |
node-version: '16' | |
- run: npm install --global netlify-cli@6 | |
- name: Deploy to Netlify | |
# The github secrets hold a Personal Access Token (PAT) managed by | |
# ogrisel on Netlify. I should allow to programmatically upload doc | |
# previews under the hazardous-doc.netlify.app domain. | |
# | |
# The netlify site id can be inspected from the CLI using: | |
# netlify sites:list | |
env: | |
NETLIFY_SITE_ID: ${{secrets.NETLIFY_SITE_ID}} | |
NETLIFY_AUTH_TOKEN: ${{secrets.NETLIFY_AUTH_TOKEN}} | |
run: | | |
echo "Deploying PR ${{steps.pull-request-number.outputs.result}} to Netlify" | |
netlify deploy --dir=build --alias=pull-request-${{steps.pull-request-number.outputs.result}} | |
- name: 'Commit Status: Update deployment status' | |
uses: myrotvorets/[email protected] | |
# Always run this step regardless of job failing early | |
if: always() | |
env: | |
DEPLOY_SUCCESS: Successfully deployed preview. | |
DEPLOY_FAILURE: Failed to deploy preview. | |
TARGET_URL_SUCCESS: https://pull-request-${{steps.pull-request-number.outputs.result}}--hazardous-doc.netlify.app/ | |
TARGET_URL_FAILURE: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
status: ${{ job.status == 'success' && 'success' || 'failure' }} | |
sha: ${{ github.event.workflow_run.head_sha }} | |
context: 'Doc preview' | |
description: ${{ job.status == 'success' && env.DEPLOY_SUCCESS || env.DEPLOY_FAILURE }} | |
targetUrl: ${{ job.status == 'success' && env.TARGET_URL_SUCCESS || env.TARGET_URL_FAILURE }} |