Deploy Jekyll site to Pages #466
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # This workflow uses actions that are not certified by GitHub. | |
| # They are provided by a third-party and are governed by | |
| # separate terms of service, privacy policy, and support | |
| # documentation. | |
| # Sample workflow for building and deploying a Jekyll site to GitHub Pages | |
| name: Deploy Jekyll site to Pages | |
| on: | |
| push: | |
| branches: ["main"] | |
| # Allows you to run this workflow manually from the Actions tab | |
| workflow_dispatch: | |
| # Also run it every night, to update the index: | |
| schedule: | |
| - cron: "0 0 * * *" | |
| # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages | |
| permissions: | |
| contents: write | |
| pages: write | |
| id-token: write | |
| # Allow one concurrent deployment | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: true | |
| jobs: | |
| # Build job | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| CI_COMMIT_MESSAGE: Page Build Complete | |
| CI_COMMIT_AUTHOR: GitHub Action | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| - name: Setup Ruby | |
| # https://github.com/ruby/setup-ruby/releases/tag/v1.207.0 | |
| uses: ruby/setup-ruby@4a9ddd6f338a97768b8006bf671dfbad383215f4 | |
| with: | |
| ruby-version: '3.1' # Not needed with a .ruby-version file | |
| bundler-cache: true # runs 'bundle install' and caches installed gems automatically | |
| cache-version: 0 # Increment this number if you need to re-download cached gems | |
| # Set up and run the Awesome Indexer | |
| - name: Install uv | |
| uses: astral-sh/setup-uv@v6 | |
| with: | |
| python-version: 3.11 | |
| - name: Build the Awesome Index | |
| run: uvx --from git+https://github.com/digipres/awesome-indexer@main awindex -c _awindex/config.yaml -o ./awesome-index | |
| # Update a 'last modified' timestamp file: | |
| - name: Update last-modified date | |
| run: ./modified.sh | |
| # Set up GitHub Pages: | |
| - name: Setup Pages | |
| id: pages | |
| uses: actions/configure-pages@v5 | |
| # Build the Jekyll site: | |
| - name: Build with Jekyll | |
| # Outputs to the './_site' directory by default | |
| run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}" | |
| env: | |
| JEKYLL_ENV: production | |
| - name: Upload artifacts for publishing | |
| # Automatically uploads an artifact from the './_site' directory by default | |
| uses: actions/upload-pages-artifact@v3 | |
| # Record the successful site build outcome by committing the timestamp file: | |
| - name: Commit last-modified date | |
| run: | | |
| git config --global user.name "${{ env.CI_COMMIT_AUTHOR }}" | |
| git config --global user.email "anjackson@users.noreply.github.com" | |
| git add _data/awindex.yml | |
| git commit -m "${{ env.CI_COMMIT_MESSAGE }}" | |
| git push | |
| # 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 |