febus982/cloudevents-pydantic

View on GitHub
.github/workflows/reusable-github-pages.yml

Summary

Maintainability
Test Coverage
on:
  workflow_call:
    inputs:
      site-version:
        required: true
        type: string
      version-alias:
        required: false
        type: string
        default: ""
      branch:
        required: false
        type: string
        default: "gh-pages"
      set-default:
        required: false
        type: boolean
        default: false

# 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.
# NOTE: There's no option to not cancel pending jobs, but we should be able to avoid race conditions on
# the published gh-pages branch anyway. The expectation is to have at maximum one running process
# (after merging to main) and one release process waiting.
concurrency:
  group: "pages"
  cancel-in-progress: false

jobs:
  build_deploy_pages:
    runs-on: ubuntu-latest
    environment:
      name: github-pages

    permissions:
      contents: write

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Set up Python 3.12
        uses: actions/setup-python@v5
        with:
          python-version: "3.12"

      # Here we want to install the current package in editable mode,
      # in case mkdocs needs the package (i.e. we are building a mkdocs plugin).
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          python -m pip install poetry
          poetry config virtualenvs.create false
          poetry install --with dev

      - name: Configure Git user
        run: |
          git config --local user.email "github-actions[bot]@users.noreply.github.com"
          git config --local user.name "github-actions[bot]"

      - name: Make sure previous versions are available to mike
        run: |
          git fetch origin gh-pages --depth=1

      - name: Build and deploy static pages
        run: |
          mike deploy ${{ inputs.site-version }} ${{ inputs.version-alias }} --update-aliases --push --branch ${{ inputs.branch }}

      - name: Set default site version
        if: ${{ inputs.set-default }}
        run: |
          mike set-default ${{ inputs.site-version }} --push --branch ${{ inputs.branch }}

      #  `mike` is specifically built to be used together with GitHub pages.
      # To upload the website to another service (i.e. AWS S3) uncomment
      # the following step to download the rendered HTML documentation to ./site directory.
      # You'll need to implement the upload steps for your provider.

#      - name: Download artifact to ./site
#        run: |
#          rm -rf ./site
#          git archive -o site.tar ${{ inputs.branch }}
#          mkdir -p ./site
#          tar xf site.tar -C ./site