Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: Use GitHub Actions to perform deployment #53

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 39 additions & 17 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,18 @@ name: Deploy to GitHub Pages
on:
# Runs on pushes targeting the default branch
push:
branches: ["master"]
branches: ["main"]
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The default branch name is main


# Ensure the docs build on PR
pull_request:

# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:

# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: write
pages: write
id-token: write

# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is fine to cancel in progress if you scope to the branch level like is done here. If you are firing off another event trigger on the same branch the goal is to overwrite the previous anyway, so no harm in canceling.


jobs:
# Build job
Expand All @@ -40,11 +36,37 @@ jobs:
- name: Build website
run: make clean && make publish

- name: Commit output to gh-pages branch
- name: Fix permissions if needed
run: |
git config user.name "Automated"
git config user.email "[email protected]"
timestamp=$(date -u +%FT%T%z)
ghp-import -m "Generate Pelican site ${timestamp}" --no-history --cname 'conference.scipy.org' --branch gh-pages output
git push --force origin gh-pages

chmod -c -R +rX "output/" | while read line; do
echo "::warning title=Invalid file permissions automatically fixed::$line"
done

- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: 'output/'

deploy:
name: Deploy to GitHub Pages
# Deploy on push event to main or with any branch and workflow dispatch
if: (github.event_name == 'push' && github.ref == 'refs/heads/main') || github.event_name == 'workflow_dispatch'
needs: build
# Set permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
pages: write # to deploy to Pages
id-token: write # to verify the deployment originates from an appropriate source
Comment on lines +55 to +58
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
Comment on lines +60 to +62
Copy link
Contributor Author

@matthewfeickert matthewfeickert Mar 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

c.f. https://github.com/actions/deploy-pages?tab=readme-ov-file#usage again for why these choices but make sure to switch to using GitHub Actions under https://github.com/scipy-conference/conference.scipy.org/settings/pages

image

(for the conference website you also are going to want to make sure you're using the custom domain as well.)

and then set whatever branch protection rules you'd like for the github-pages environment under https://github.com/scipy-conference/conference.scipy.org/settings/environments


runs-on: ubuntu-latest

steps:
- name: Setup Pages
uses: actions/configure-pages@v4

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4