name: Release on: release: types: [published] permissions: contents: write packages: write id-token: write # needed for signing jobs: goreleaser: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 with: fetch-depth: 0 - name: Set up Go uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 with: go-version-file: 'go.mod' cache: true - name: Install cosign uses: sigstore/cosign-installer@faadad0cce49287aee09b3a48701e75088a2c6ad # v4.0.0 - name: Install Syft uses: anchore/sbom-action/download-syft@v0.21.1 - name: Run GoReleaser uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a with: distribution: goreleaser version: v2.12.0 args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ko-push: name: Build and Push Image with ko runs-on: ubuntu-latest needs: goreleaser steps: - name: Checkout uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 - name: Set up Go uses: actions/setup-go@7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5 with: go-version-file: 'go.mod' cache: true - name: Set up ko uses: ko-build/setup-ko@v0.9 - name: Log in to Container Registry uses: docker/login-action@5e57cd118135c172c3672efd75eb46360885c0ef with: registry: ghcr.io username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} - name: Get build timestamp and version id: build-info run: | echo "timestamp=$(date -u +%Y-%m-%dT%H:%M:%SZ)" >> $GITHUB_OUTPUT # Extract version from tag and strip 'v' prefix (e.g., refs/tags/v1.2.3 -> 1.2.3) VERSION="${GITHUB_REF#refs/tags/}" VERSION="${VERSION#v}" echo "version=$VERSION" >> $GITHUB_OUTPUT - name: Build and push with ko env: KO_DOCKER_REPO: ghcr.io/${{ github.repository }} VERSION: ${{ steps.build-info.outputs.version }} GIT_COMMIT: ${{ github.sha }} BUILD_TIME: ${{ steps.build-info.outputs.timestamp }} run: | # Build and push multi-platform image with version tag and latest ko build ./cmd/registry \ --bare \ --platform=linux/amd64,linux/arm64 \ --tags=${{ steps.build-info.outputs.version }},latest