name: Build CI Docker Images # Rebuilds the pre-baked builder images and pushes them to ghcr.io. # # WHEN TO RUN: # - Automatically: whenever a Dockerfile under .docker/ changes on main. # - Manually: via workflow_dispatch (e.g. first-time setup, forced rebuild). # # Images produced: # ghcr.io/tftsr/trcaa-linux-amd64:rust1.88-node22 # ghcr.io/tftsr/trcaa-windows-cross:rust1.88-node22 # ghcr.io/tftsr/trcaa-linux-arm64:rust1.88-node22 on: push: branches: - main paths: - '.docker/**' workflow_dispatch: concurrency: group: build-ci-images cancel-in-progress: false env: REGISTRY: ghcr.io REGISTRY_OWNER: tftsr permissions: contents: read packages: write jobs: linux-amd64: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 1 - name: Log in to ghcr.io run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build and push linux-amd64 builder run: | docker build \ -t $REGISTRY/$REGISTRY_OWNER/trcaa-linux-amd64:rust1.88-node22 \ -f .docker/Dockerfile.linux-amd64 . docker push $REGISTRY/$REGISTRY_OWNER/trcaa-linux-amd64:rust1.88-node22 echo "✓ Pushed $REGISTRY/$REGISTRY_OWNER/trcaa-linux-amd64:rust1.88-node22" windows-cross: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 1 - name: Log in to ghcr.io run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build and push windows-cross builder run: | docker build \ -t $REGISTRY/$REGISTRY_OWNER/trcaa-windows-cross:rust1.88-node22 \ -f .docker/Dockerfile.windows-cross . docker push $REGISTRY/$REGISTRY_OWNER/trcaa-windows-cross:rust1.88-node22 echo "✓ Pushed $REGISTRY/$REGISTRY_OWNER/trcaa-windows-cross:rust1.88-node22" linux-arm64: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v6 with: fetch-depth: 1 - name: Log in to ghcr.io run: echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io -u ${{ github.actor }} --password-stdin - name: Build and push linux-arm64 builder run: | docker build \ -t $REGISTRY/$REGISTRY_OWNER/trcaa-linux-arm64:rust1.88-node22 \ -f .docker/Dockerfile.linux-arm64 . docker push $REGISTRY/$REGISTRY_OWNER/trcaa-linux-arm64:rust1.88-node22 echo "✓ Pushed $REGISTRY/$REGISTRY_OWNER/trcaa-linux-arm64:rust1.88-node22"