This project follows a Zero Pin + Lockfile + Automated Updates strategy:
Gemfile has no version constraints → allows flexibilityGemfile.lock commits exact versions → reproducibilitybundle updateGemfile.lockbundle update
git add Gemfile.lock
git commit -m "chore(deps): update all Ruby gems"
git push origin main
bundle update github-pages
git add Gemfile.lock
git commit -m "chore(deps): update github-pages"
git push origin main
bundle update --patch
git add Gemfile.lock
git commit -m "chore(deps): patch updates for security fixes"
git push origin main
bundle outdated
If automated PR shows CI failures:
gh pr checkout <PR-number>
docker-compose up # Test locally
Check gem changelogs:
bundle outdated | grep "jekyll\|github-pages"
A. Pin the Problematic Gem (temporary):
# Gemfile
gem "problematic-gem", "~> 1.2.0" # Pin to working version
B. Fix Code Compatibility:
# Update code to work with new version
# Then commit fixes to the PR branch
C. Wait and Skip:
# Close the automated PR
# Wait for next version or upstream fix
Gemfile.lock committed to gitGemfile unless absolutely necessaryGemfile.lock from git (breaks reproducibility)Cause: Already on latest versions
Action: Close PR, no action needed
Cause: Workflow error or permissions issue
Action: Check workflow run logs, verify GitHub token permissions
Cause: Incompatible gem versions
Action:
docker/Dockerfile for version constraintsCause: Environment differences (Ruby version, OS)
Action:
ruby-version in workflow)Gemfile.lockdocker-compose up --buildgithub-pages gem versions (pins Jekyll)