git » homepage.git » master » tree

[master] / .forgejo / workflows / ci.yml

name: Check

on:
  push:
  pull_request:
  workflow_dispatch:
  workflow_call:
    inputs:
      deploy:
        type: boolean
        default: false
      dry_run:
        type: boolean
        default: false

jobs:
  check:
    runs-on: homepage
    timeout-minutes: 40
    steps:
      - name: Checkout source
        env:
          CHECKOUT_TOKEN: ${{ github.token }}
          GIT_LFS_SKIP_SMUDGE: '1'
        run: |
          git init -q
          git remote add origin "$GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git"
          auth=$(printf 'x-access-token:%s' "$CHECKOUT_TOKEN" | base64 -w0)
          export GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=http.extraHeader
          export GIT_CONFIG_VALUE_0="Authorization: Basic $auth"
          git fetch --no-tags --depth=1 origin "$GITHUB_SHA"
          git checkout --detach FETCH_HEAD
      - name: Verify deployment source
        if: inputs.deploy
        env:
          CHECK_TOKEN: ${{ github.token }}
        run: python3 tools/deploy.py check
      - name: Build pinned toolchain
        run: make container-image
      - name: Fetch website media with pinned Git LFS
        env:
          CHECKOUT_TOKEN: ${{ github.token }}
        run: |
          auth=$(printf 'x-access-token:%s' "$CHECKOUT_TOKEN" | base64 -w0)
          export GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=http.extraHeader
          export GIT_CONFIG_VALUE_0="Authorization: Basic $auth"
          podman --remote run --rm --userns=keep-id --network=host \
            --add-host minerva:100.66.91.20 \
            --volume "$PWD:/workspace:Z" --workdir /workspace \
            --volume /etc/forgejo-runner-blacktide/ca-certificates.crt:/etc/ssl/certs/ca-certificates.crt:ro \
            --env GIT_CONFIG_COUNT --env GIT_CONFIG_KEY_0 --env GIT_CONFIG_VALUE_0 \
            localhost/homepage-builder:2026-07-15 \
            sh -c "git lfs fetch --include='md/**' --exclude='' origin HEAD && git lfs checkout md"
      - name: Test and verify reproducible output
        run: make verify-reproducible
      - name: Build website
        run: make container-build
      - name: Deploy website and request source publication
        if: inputs.deploy
        env:
          CHECK_TOKEN: ${{ github.token }}
          SITE_DEPLOY_KEY: ${{ secrets.SITE_DEPLOY_KEY }}
          PUBLISH_TOKEN: ${{ secrets.PUBLISH_TOKEN }}
        run: python3 tools/deploy.py deploy ${{ inputs.dry_run && '--dry-run' || '' }}