Skip to content

feat(topbar): add browse link and update category/tag breadcrumb labels #190

feat(topbar): add browse link and update category/tag breadcrumb labels

feat(topbar): add browse link and update category/tag breadcrumb labels #190

Workflow file for this run

name: "Build and Deploy"
on:
push:
branches:
- main
- master
paths-ignore:
- .gitignore
- README.md
- LICENSE
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
# Allow one concurrent deployment
concurrency:
group: "pages"
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
with:
fetch-depth: 0
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Setup Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 3.3
bundler-cache: true
- name: Setup Node.js
uses: actions/setup-node@v5
with:
node-version: 20
- name: Build JavaScript
run: npm ci && npm run build
- name: Install AWS CLI
run: pip install awscli --quiet
- name: Sync assets to R2 CDN bucket
env:
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
R2_CDN_BUCKET_NAME: ${{ secrets.R2_CDN_BUCKET_NAME }}
R2_CDN_PUBLIC_URL: ${{ secrets.R2_CDN_PUBLIC_URL }}
CF_ZONE_ID: ${{ secrets.CF_ZONE_ID }}
CF_API_TOKEN: ${{ secrets.CF_API_TOKEN }}
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
run: bash _scripts/sync-assets-r2.sh
- name: Generate gallery from R2
env:
R2_ACCOUNT_ID: ${{ secrets.R2_ACCOUNT_ID }}
R2_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
R2_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
R2_BUCKET_NAME: ${{ secrets.R2_CDN_BUCKET_NAME }}
R2_PUBLIC_URL: ${{ secrets.R2_CDN_PUBLIC_URL }}
R2_PREFIX: "gallery/"
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: auto
run: bash _scripts/generate-gallery-r2.sh
- name: Check friend links
run: |
pip install pyyaml --quiet
bash _scripts/check-friends.sh
- name: Build site
run: bundle exec jekyll b -d "_site${{ steps.pages.outputs.base_path }}"
env:
JEKYLL_ENV: "production"
- name: Test site
run: |
bundle exec htmlproofer _site \
\-\-disable-external \
\-\-ignore-urls "/^http:\/\/127.0.0.1/,/^http:\/\/0.0.0.0/,/^http:\/\/localhost/"
- name: Verify pages
run: |
echo "Checking generated pages..."
pages=("index.html" "browse/index.html" "archives/index.html" "about/index.html" "gallery/index.html" "friends/index.html" "tools/index.html" "feed.xml" "sitemap.xml")
failed=0
for p in "${pages[@]}"; do
if [ -f "_site/$p" ]; then
echo " ✓ $p"
else
echo " ✗ $p (MISSING)"
failed=1
fi
done
post_count=$(find _site -path "*/posts/*" -name "*.html" | wc -l)
echo " Posts: $post_count"
cat_count=$(find _site/categories -name "index.html" 2>/dev/null | wc -l)
echo " Category pages: $cat_count"
tag_count=$(find _site/tags -name "index.html" 2>/dev/null | wc -l)
echo " Tag pages: $tag_count"
if [ "$failed" -eq 1 ] || [ "$post_count" -eq 0 ]; then
echo "Page verification FAILED"
exit 1
fi
echo "All pages verified."
- name: Upload site artifact
uses: actions/upload-pages-artifact@v4
with:
path: "_site${{ steps.pages.outputs.base_path }}"
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4