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' || '' }}