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

Fix deploy workflow (take 2) #1126

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
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
40 changes: 18 additions & 22 deletions .github/workflows/build-and-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ on:
- main
workflow_dispatch: # Allows manual trigger

concurrency:
group: build-and-deploy
cancel-in-progress: false

jobs:
build_and_deploy:
runs-on: ubuntu-latest
Expand All @@ -16,7 +20,7 @@ jobs:
- name: Check out the repository
uses: actions/checkout@v4
with:
fetch-depth: 0 # Fetch full history to support rebasing
fetch-depth: 0 # Fetch full history for proper merging

- name: Set up SSH for Git (deploy key)
run: |
Expand All @@ -35,41 +39,33 @@ jobs:
python3 -m pip install --upgrade pip
pip install -r requirements.txt

- name: Generate Merged Data
run: |
python3 gh-data.py
python3 merge-data.py

- name: Switch to `gh-pages` and Preserve Changes
- name: Configure Git User
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
zcorpan marked this conversation as resolved.
Show resolved Hide resolved

# Stash changes to preserve them
git stash --include-untracked

# Fetch and switch to `gh-pages`
git fetch origin gh-pages:gh-pages || git checkout --orphan gh-pages
- name: Fetch and Check Out `gh-pages`
run: |
git fetch origin gh-pages:gh-pages
git checkout gh-pages

# Rebase `gh-pages` onto `main` to ensure a linear history
git rebase main
- name: Merge `main` into `gh-pages` with `-s theirs`
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
run: |
git merge ${{ github.sha }} -s theirs --no-edit

# Apply stashed changes
git stash pop || echo "No changes to apply."
- name: Generate Merged Data
run: |
python3 gh-data.py
python3 merge-data.py

- name: Commit and Push Updates
run: |
# Add changes
git add -f merged-data.json
git add .

# Commit changes if there are any
if git diff --cached --quiet; then
echo "No changes to commit."
else
git commit -m "Update GitHub Pages with latest data"
fi
git commit -m "Update GitHub Pages with latest data"

# Push changes back to `gh-pages`
git remote set-url origin git@github.com:${{ github.repository }}.git
Expand Down
Loading