diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index ed9ab361..583748b8 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -194,7 +194,9 @@ jobs: CGO_ENABLED: "0" GOOS: linux GOARCH: amd64 - run: go build -o coder-k8s ./ + run: | + mkdir -p linux/amd64 + go build -o linux/amd64/coder-k8s ./ - name: Build and load image if: github.event_name != 'pull_request' @@ -425,7 +427,9 @@ jobs: CGO_ENABLED: "0" GOOS: linux GOARCH: amd64 - run: go build -o coder-k8s ./ + run: | + mkdir -p linux/amd64 + go build -o linux/amd64/coder-k8s ./ - name: Set up Docker Buildx uses: docker/setup-buildx-action@8d2750c68a42422c14e847fe6c8ac0403b4cbd6f # v3.12.0 diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index 0ff1e3df..0a344c49 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -39,7 +39,7 @@ jobs: uses: goreleaser/goreleaser-action@e435ccd777264be153ace6237001ef4d979d3a7a # v6.4.0 with: distribution: goreleaser - version: latest + version: "~> v2" args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 7e157cd7..1c297aa3 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -1,3 +1,5 @@ +version: 2 + project_name: coder-k8s before: @@ -19,31 +21,39 @@ builds: archives: - id: default - format: tar.gz + formats: [tar.gz] files: - - none* + - LICENSE + - README.md -dockers: +dockers_v2: - id: coder-k8s-image - image_templates: - - "ghcr.io/coder/coder-k8s:{{ .Version }}" - - "ghcr.io/coder/coder-k8s:latest" dockerfile: Dockerfile.goreleaser - use: buildx - build_flag_templates: - - "--pull" - - "--platform=linux/amd64" - - "--label=org.opencontainers.image.created={{ .Date }}" - - "--label=org.opencontainers.image.source=https://github.com/coder/coder-k8s" - - "--label=org.opencontainers.image.url=https://coder.github.io/coder-k8s/" - - "--label=org.opencontainers.image.documentation=https://coder.github.io/coder-k8s/" - - "--label=org.opencontainers.image.title=coder-k8s" - - "--label=org.opencontainers.image.description=Kubernetes operator for Coder" - - "--label=org.opencontainers.image.version={{ .Version }}" - - "--label=org.opencontainers.image.revision={{ .FullCommit }}" - - "--label=org.opencontainers.image.vendor=Coder" - - "--label=org.opencontainers.image.licenses=Apache-2.0" - - "--label=org.opencontainers.image.authors=Coder" + ids: + - coder-k8s + images: + - ghcr.io/coder/coder-k8s + tags: + - "{{ .Version }}" + - latest + platforms: + - linux/amd64 + sbom: false + labels: + org.opencontainers.image.created: "{{ .Date }}" + org.opencontainers.image.source: https://github.com/coder/coder-k8s + org.opencontainers.image.url: https://coder.github.io/coder-k8s/ + org.opencontainers.image.documentation: https://coder.github.io/coder-k8s/ + org.opencontainers.image.title: coder-k8s + org.opencontainers.image.description: Kubernetes operator for Coder + org.opencontainers.image.version: "{{ .Version }}" + org.opencontainers.image.revision: "{{ .FullCommit }}" + org.opencontainers.image.vendor: Coder + org.opencontainers.image.licenses: Apache-2.0 + org.opencontainers.image.authors: Coder + flags: + - "--pull=true" + - "--provenance=false" changelog: use: github diff --git a/Dockerfile.goreleaser b/Dockerfile.goreleaser index 63bcd79e..c3e5804a 100644 --- a/Dockerfile.goreleaser +++ b/Dockerfile.goreleaser @@ -1,5 +1,7 @@ FROM gcr.io/distroless/static:nonroot +ARG TARGETPLATFORM + ENTRYPOINT ["/coder-k8s"] -COPY coder-k8s /coder-k8s +COPY $TARGETPLATFORM/coder-k8s /coder-k8s USER nonroot:nonroot diff --git a/hack/kind-dev.sh b/hack/kind-dev.sh index b8ba2ee3..878ca306 100755 --- a/hack/kind-dev.sh +++ b/hack/kind-dev.sh @@ -109,7 +109,22 @@ build_binary() { fi fi - GOFLAGS=-mod=vendor CGO_ENABLED=0 GOOS=linux GOARCH="${resolved_goarch}" go build -o coder-k8s ./ + local resolved_goarm="" + local target_platform="linux/${resolved_goarch}" + if [[ "${resolved_goarch}" == "arm" ]]; then + resolved_goarm="${GOARM:-}" + if [[ -z "${resolved_goarm}" ]]; then + resolved_goarm="$(go env GOARM)" + if [[ -z "${resolved_goarm}" ]]; then + echo "assertion failed: go env GOARM returned an empty value for GOARCH=arm" >&2 + exit 1 + fi + fi + target_platform="linux/arm/v${resolved_goarm}" + fi + + mkdir -p "${target_platform}" + GOFLAGS=-mod=vendor CGO_ENABLED=0 GOOS=linux GOARCH="${resolved_goarch}" GOARM="${resolved_goarm}" go build -o "${target_platform}/coder-k8s" ./ } build_and_load_image() {