From ac5f8bc1ca72ca6f0d059335b101e15410be39d8 Mon Sep 17 00:00:00 2001 From: Paul Montag Date: Mon, 28 Jul 2025 23:03:50 -0500 Subject: [PATCH] I bet this doesn't work --- .github/workflows/hugo.yaml | 120 ++++++++++++++++++++++++++++-------- config.yml | 3 + 2 files changed, 98 insertions(+), 25 deletions(-) diff --git a/.github/workflows/hugo.yaml b/.github/workflows/hugo.yaml index 99f599a..89a9d09 100644 --- a/.github/workflows/hugo.yaml +++ b/.github/workflows/hugo.yaml @@ -1,30 +1,100 @@ - name: Deploy Hugo site to GitHub Pages +name: Deploy Hugo site to Pages - on: - push: - branches: - - main # Adjust to your main branch name +on: + # Runs on pushes targeting the default branch + push: + branches: + - main - jobs: - build-and-deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - submodules: recursive # If you use themes as submodules + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: - - name: Setup Hugo - uses: peaceiris/actions-hugo@v3 - with: - hugo-version: 'latest' # Or specify a version like '0.127.0' - extended: true # Use Hugo extended if needed +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write - - name: Build Hugo site - run: hugo --minify +# 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 - - name: Deploy to GitHub Pages - uses: peaceiris/actions-gh-pages@v4 - with: - github_token: ${{ secrets.GITHUB_TOKEN }} - publish_dir: ./public +# Default to bash +defaults: + run: + # GitHub-hosted runners automatically enable `set -eo pipefail` for Bash shells. + shell: bash + +jobs: + # Build job + build: + runs-on: ubuntu-latest + env: + DART_SASS_VERSION: 1.89.2 + HUGO_VERSION: 0.148.0 + HUGO_ENVIRONMENT: production + TZ: America/Los_Angeles + steps: + - name: Install Hugo CLI + run: | + wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb + sudo dpkg -i ${{ runner.temp }}/hugo.deb + - name: Install Dart Sass + run: | + wget -O ${{ runner.temp }}/dart-sass.tar.gz https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz + tar -xf ${{ runner.temp }}/dart-sass.tar.gz --directory ${{ runner.temp }} + mv ${{ runner.temp }}/dart-sass/ /usr/local/bin + echo "/usr/local/bin/dart-sass" >> $GITHUB_PATH + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + fetch-depth: 0 + - name: Setup Pages + id: pages + uses: actions/configure-pages@v5 + - name: Install Node.js dependencies + run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true" + - name: Cache Restore + id: cache-restore + uses: actions/cache/restore@v4 + with: + path: | + ${{ runner.temp }}/hugo_cache + key: hugo-${{ github.run_id }} + restore-keys: + hugo- + - name: Configure Git + run: git config core.quotepath false + - name: Build with Hugo + run: | + hugo \ + --gc \ + --minify \ + --baseURL "${{ steps.pages.outputs.base_url }}/" \ + --cacheDir "${{ runner.temp }}/hugo_cache" + - name: Cache Save + id: cache-save + uses: actions/cache/save@v4 + with: + path: | + ${{ runner.temp }}/hugo_cache + key: ${{ steps.cache-restore.outputs.cache-primary-key }} + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ./public + + # Deployment job + 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 diff --git a/config.yml b/config.yml index dd65b04..6ebf689 100644 --- a/config.yml +++ b/config.yml @@ -129,3 +129,6 @@ markup: # guessSyntax: true # lineNos: true # style: monokai +caches: + images: + dir: :cacheDir/images