name: Build proof image
on:
workflow_dispatch:
push:
branches: [main]
paths:
- ".github/docker/fstar-proof.Dockerfile"
- ".github/workflows/proof-image.yml"
pull_request:
paths:
- ".github/docker/fstar-proof.Dockerfile"
- ".github/workflows/proof-image.yml"
permissions:
contents: read
packages: write
env:
IMAGE_TAG: hax-a914ac7-fstar-v2026.03.24
jobs:
build:
name: build + push fstar-proof image
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 - name: Log in to GHCR
run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u "${{ github.actor }}" --password-stdin
- name: Build and push
run: |
set -euo pipefail
img="ghcr.io/${{ github.repository }}/fstar-proof"
img="${img,,}" # GHCR requires a lowercase image path
echo "image: $img:${IMAGE_TAG}"
# The Dockerfile pulls everything itself (no COPY), so the build context
# is just the docker dir - keeps it tiny.
docker build \
-f .github/docker/fstar-proof.Dockerfile \
-t "$img:${IMAGE_TAG}" -t "$img:latest" \
.github/docker
docker push "$img:${IMAGE_TAG}"
docker push "$img:latest"