-
Notifications
You must be signed in to change notification settings - Fork 46
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #56 from brian-rose/better-preview
New and improved preview actions ala Radar Cookbook
- Loading branch information
Showing
5 changed files
with
161 additions
and
54 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,17 @@ | ||
name: preview-book | ||
name: build-book | ||
on: | ||
pull_request: | ||
workflow_dispatch: | ||
|
||
jobs: | ||
build: | ||
build-and-upload: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash -l {0} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- uses: conda-incubator/setup-miniconda@master | ||
- name: Setup conda environment | ||
uses: conda-incubator/setup-miniconda@master | ||
with: | ||
channels: conda-forge | ||
channel-priority: strict | ||
|
@@ -21,17 +21,19 @@ jobs: | |
environment-file: render-environment.yml | ||
mamba-version: '*' | ||
use-mamba: true | ||
|
||
# Build the book | ||
- name: Build the book | ||
run: | | ||
jupyter-book build . | ||
# Push the book's HTML to github-pages | ||
# This will be published at /_preview/PRnumber/ relative to the main site | ||
- name: Deploy to GitHub pages | ||
uses: peaceiris/[email protected] | ||
- name: Zip the book | ||
run: | | ||
set -x | ||
set -e | ||
if [ -f book.zip ]; then | ||
rm -rf book.zip | ||
fi | ||
zip -r book.zip _build/html | ||
- name: Upload zipped book artifact | ||
uses: actions/upload-artifact@v3 | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
publish_dir: ./_build/html | ||
enable_jekyll: false | ||
destination_dir: _preview/${{github.event.number}} | ||
name: book-zip-${{github.event.number}} | ||
path: ./book.zip |
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
name: deploy-preview | ||
on: | ||
workflow_run: | ||
workflows: | ||
- build-book | ||
types: | ||
- requested | ||
- completed | ||
|
||
jobs: | ||
deploy: | ||
runs-on: ubuntu-latest | ||
defaults: | ||
run: | ||
shell: bash -l {0} | ||
steps: | ||
- uses: actions/checkout@v3 | ||
- name: Fetch Repo Name | ||
id: repo-name | ||
run: echo "::set-output name=value::$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" # just the repo name, not owner | ||
|
||
- name: Set message value | ||
run: | | ||
echo "comment_message=👋 Thanks for opening this PR! The book will be automatically built with [GitHub Actions](https://github.com/features/actions). To see the status of your deployment, click below." >> $GITHUB_ENV | ||
- name: Find Pull Request | ||
uses: actions/github-script@v6 | ||
id: find-pull-request | ||
with: | ||
script: | | ||
let pullRequestNumber = '' | ||
let pullRequestHeadSHA = '' | ||
core.info('Finding pull request...') | ||
const pullRequests = await github.rest.pulls.list({owner: context.repo.owner, repo: context.repo.repo}) | ||
for (let pullRequest of pullRequests.data) { | ||
if(pullRequest.head.sha === context.payload.workflow_run.head_commit.id) { | ||
pullRequestHeadSHA = pullRequest.head.sha | ||
pullRequestNumber = pullRequest.number | ||
break | ||
} | ||
} | ||
core.setOutput('number', pullRequestNumber) | ||
core.setOutput('sha', pullRequestHeadSHA) | ||
if(pullRequestNumber === '') { | ||
core.info( | ||
`No pull request associated with git commit SHA: ${context.payload.workflow_run.head_commit.id}` | ||
) | ||
} | ||
else{ | ||
core.info(`Found pull request ${pullRequestNumber}, with head sha: ${pullRequestHeadSHA}`) | ||
} | ||
- name: Find preview comment | ||
uses: peter-evans/find-comment@v2 | ||
if: steps.find-pull-request.outputs.number != '' | ||
id: fc | ||
with: | ||
issue-number: '${{ steps.find-pull-request.outputs.number }}' | ||
comment-author: 'github-actions[bot]' | ||
body-includes: '${{ env.comment_message }}' | ||
|
||
- name: Create preview comment | ||
if: | | ||
github.event.workflow_run.conclusion != 'success' | ||
&& steps.find-pull-request.outputs.number != '' | ||
&& steps.fc.outputs.comment-id == '' | ||
uses: peter-evans/create-or-update-comment@v2 | ||
with: | ||
issue-number: ${{ steps.find-pull-request.outputs.number }} | ||
body: | | ||
${{ env.comment_message }} | ||
🔍 Git commit SHA: ${{ steps.find-pull-request.outputs.sha }} | ||
✅ Deployment Preview URL: In Progress | ||
- name: Update preview comment | ||
if: | | ||
github.event.workflow_run.conclusion != 'success' | ||
&& steps.find-pull-request.outputs.number != '' | ||
&& steps.fc.outputs.comment-id != '' | ||
uses: peter-evans/create-or-update-comment@v2 | ||
with: | ||
comment-id: ${{ steps.fc.outputs.comment-id }} | ||
edit-mode: replace | ||
body: | | ||
${{ env.comment_message }} | ||
🔍 Git commit SHA: ${{ steps.find-pull-request.outputs.sha }} | ||
✅ Deployment Preview URL: In Progress | ||
- name: Download Artifact Book | ||
if: | | ||
github.event.workflow_run.conclusion == 'success' | ||
&& steps.find-pull-request.outputs.number != '' | ||
&& steps.fc.outputs.comment-id != '' | ||
uses: dawidd6/[email protected] | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
workflow: build-book.yaml | ||
run_id: ${{ github.event.workflow_run.id }} | ||
name: book-zip-${{ steps.find-pull-request.outputs.number }} | ||
|
||
- name: Unzip the book | ||
if: | | ||
github.event.workflow_run.conclusion == 'success' | ||
&& steps.find-pull-request.outputs.number != '' | ||
&& steps.fc.outputs.comment-id != '' | ||
run: | | ||
rm -rf notebooks/_build/html | ||
unzip book.zip | ||
rm -f book.zip | ||
# Push the book's HTML to github-pages | ||
# This will be published at /_preview/PRnumber/ relative to the main site | ||
- name: Deploy to GitHub pages | ||
if: | | ||
github.event.workflow_run.conclusion == 'success' | ||
&& steps.find-pull-request.outputs.number != '' | ||
&& steps.fc.outputs.comment-id != '' | ||
uses: peaceiris/[email protected] | ||
with: | ||
github_token: ${{ secrets.GITHUB_TOKEN }} | ||
publish_dir: notebooks/_build/html | ||
enable_jekyll: false | ||
destination_dir: _preview/${{ steps.find-pull-request.outputs.number }} | ||
|
||
- name: Finalize preview comment | ||
if: | | ||
github.event.workflow_run.conclusion == 'success' | ||
&& steps.find-pull-request.outputs.number != '' | ||
&& steps.fc.outputs.comment-id != '' | ||
uses: peter-evans/create-or-update-comment@v2 | ||
with: | ||
comment-id: ${{ steps.fc.outputs.comment-id }} | ||
edit-mode: replace | ||
body: | | ||
${{ env.comment_message }} | ||
🔍 Git commit SHA: ${{ steps.find-pull-request.outputs.sha }} | ||
✅ Deployment Preview URL: https://${{ github.repository_owner }}.github.io/${{ steps.repo-name.outputs.value }}/_preview/${{ steps.find-pull-request.outputs.number }} |
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
This file was deleted.
Oops, something went wrong.