name: Build & Publish Static Preview on: workflow_call: inputs: sha-tag: description: "A short-form SHA tag for the commit that triggered this workflow" required: true type: string jobs: build: name: Build Static Preview runs-on: ubuntu-latest steps: - uses: actions/checkout@v5 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - name: Login to Github Container Registry uses: docker/login-action@v3 with: registry: ghcr.io username: ${{ github.repository_owner }} password: ${{ secrets.GITHUB_TOKEN }} # Build the container, including an inline cache manifest to # allow us to use the registry as a cache source. - name: Build Docker Image (Main) uses: docker/build-push-action@v6 if: github.ref == 'refs/heads/main' with: context: . push: true cache-from: type=registry,ref=ghcr.io/python-discord/static-site:latest cache-to: type=inline tags: | ghcr.io/python-discord/static-site:latest ghcr.io/python-discord/static-site:${{ inputs.sha-tag }} build-args: | git_sha=${{ github.sha }} STATIC_BUILD=TRUE - name: Extract Build From Docker Image (Main) if: github.ref == 'refs/heads/main' run: | mkdir docker_build \ && docker run --entrypoint /bin/echo --name site \ ghcr.io/python-discord/static-site:${{ inputs.sha-tag }} \ && docker cp site:/app docker_build/ # Build directly to a local folder - name: Build Docker Image (PR) uses: docker/build-push-action@v6 if: github.ref != 'refs/heads/main' with: context: . push: false cache-from: type=registry,ref=ghcr.io/python-discord/static-site:latest outputs: type=local,dest=docker_build/ build-args: | git_sha=${{ github.sha }} STATIC_BUILD=TRUE - name: Upload Build uses: actions/upload-artifact@v4 with: name: static-build path: docker_build/app/build/ if-no-files-found: error