Skip to content

Registry Auto Deploy #197

Registry Auto Deploy

Registry Auto Deploy #197

Workflow file for this run

name: Deploy to GitHub Pages
on:
push:
branches: [main]
schedule:
- cron: '0 * * * *'
workflow_dispatch:
permissions:
contents: write
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
check-changes:
runs-on: ubuntu-latest
outputs:
should_deploy: ${{ steps.check.outputs.should_deploy }}
has_submodule_changes: ${{ steps.check.outputs.has_submodule_changes }}
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Detect changes
id: check
run: |
echo "should_deploy=false" >> $GITHUB_OUTPUT
echo "has_submodule_changes=false" >> $GITHUB_OUTPUT
git submodule update --init --recursive --remote
if ! git diff --quiet; then
echo "Submodule changes detected!"
git diff --stat
echo "has_submodule_changes=true" >> $GITHUB_OUTPUT
echo "should_deploy=true" >> $GITHUB_OUTPUT
fi
- name: Commit submodule update
if: steps.check.outputs.has_submodule_changes == 'true'
run: |
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add -A
git commit -m "Update registry submodule"
# IMPORTANT: pull latest remote before pushing
git pull --rebase https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }}.git main
# Now push safely without conflict
git push https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/${{ github.repository }}.git HEAD:main
build:
needs: check-changes
if: needs.check-changes.outputs.should_deploy == 'true'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0
- name: Build Astro site
uses: withastro/action@v3
with:
package-manager: bun@latest
env:
PUBLIC_SITE_NAME: Zig Index
PUBLIC_SITE_URL: https://zig-index.github.io
PUBLIC_REPO_URL: https://github.com/Zig-Index/zig-index.github.io
- name: Upload Artifact for Pages
uses: actions/upload-pages-artifact@v3
with:
path: ./dist
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
steps:
- name: Deploy to GitHub Pages
uses: actions/deploy-pages@v4