diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 840f9ab5..efb9447c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,6 +34,9 @@ jobs: token: ${{ steps.app-token.outputs.token }} persist-credentials: true + - name: Set up QEMU + uses: docker/setup-qemu-action@ce360397dd3f832beb865e1373c09c0e9f86d70a # v4.0.0 + - name: Configure Git run: | git config user.name "planetscale-cli[bot]" diff --git a/.goreleaser.yml b/.goreleaser.yml index 9e5a66ed..21242866 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -58,16 +58,40 @@ builds: binary: "pscale" dockers: - image_templates: - - "planetscale/pscale:latest" - - "planetscale/pscale:{{ .Tag }}" + - "planetscale/pscale:{{ .Tag }}-amd64" + use: buildx + goarch: amd64 build_flag_templates: - "--pull" + - "--platform=linux/amd64" - "--label=org.opencontainers.image.created={{.Date}}" - "--label=org.opencontainers.image.title={{.ProjectName}}" - "--label=org.opencontainers.image.revision={{.FullCommit}}" - "--label=org.opencontainers.image.version={{.Version}}" - "--label=org.opencontainers.image.source={{.GitURL}}" dockerfile: Dockerfile.goreleaser + - image_templates: + - "planetscale/pscale:{{ .Tag }}-arm64" + use: buildx + goarch: arm64 + build_flag_templates: + - "--pull" + - "--platform=linux/arm64" + - "--label=org.opencontainers.image.created={{.Date}}" + - "--label=org.opencontainers.image.title={{.ProjectName}}" + - "--label=org.opencontainers.image.revision={{.FullCommit}}" + - "--label=org.opencontainers.image.version={{.Version}}" + - "--label=org.opencontainers.image.source={{.GitURL}}" + dockerfile: Dockerfile.goreleaser +docker_manifests: + - name_template: "planetscale/pscale:{{ .Tag }}" + image_templates: + - "planetscale/pscale:{{ .Tag }}-amd64" + - "planetscale/pscale:{{ .Tag }}-arm64" + - name_template: "planetscale/pscale:latest" + image_templates: + - "planetscale/pscale:{{ .Tag }}-amd64" + - "planetscale/pscale:{{ .Tag }}-arm64" aurs: - name: pscale-cli-bin diff --git a/docker/Dockerfile.goreleaser b/docker/Dockerfile.goreleaser index 30ee5c35..527fa349 100644 --- a/docker/Dockerfile.goreleaser +++ b/docker/Dockerfile.goreleaser @@ -5,3 +5,8 @@ RUN apt-get update --allow-releaseinfo-change || apt-get update; apt-get install ARG SYFT_VERSION=1.38.0 RUN wget -O syft.deb https://github.com/anchore/syft/releases/download/v${SYFT_VERSION}/syft_${SYFT_VERSION}_linux_amd64.deb && dpkg -i syft.deb + +RUN mv /entrypoint.sh /base-entrypoint.sh +COPY docker/entrypoint.sh /entrypoint.sh +RUN chmod +x /entrypoint.sh +ENTRYPOINT ["/usr/bin/tini", "--", "/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100755 index 00000000..2dc8def1 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,8 @@ +#!/bin/sh +set -eu + +docker buildx inspect goreleaser >/dev/null 2>&1 \ + || docker buildx create --name goreleaser --driver docker-container --use +docker buildx use goreleaser + +exec /base-entrypoint.sh "$@"