From 1816e93170bb725f8da073b91070a981dd039fad Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sun, 13 Feb 2022 04:11:29 +0000 Subject: [PATCH] feat(release): setup for publishing docker images to ghcr --- .github/workflows/ci.yml | 8 ++++ .goreleaser.yml | 85 +++++++++++++++++++++++++++++++++++----- Dockerfile | 14 +------ 3 files changed, 84 insertions(+), 23 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dd8aecf..346e6bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -28,6 +28,14 @@ jobs: if: startsWith(github.ref, 'refs/tags/v') steps: - uses: actions/checkout@v2 + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Docker Login + uses: docker/login-action@v1 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ secrets.GITHUB_TOKEN }} - uses: actions/setup-go@v2 with: go-version: 1.16 diff --git a/.goreleaser.yml b/.goreleaser.yml index b2a8970..d6ab756 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -10,18 +10,18 @@ builds: ldflags: - "-s -w -X main.version={{ .Version }} -X main.commit={{ .Commit }}" goos: - - darwin - - freebsd - - linux - - windows + - "darwin" + - "freebsd" + - "linux" + - "windows" goarch: - - amd64 - - 386 - - arm - - arm64 + - "amd64" + - "386" + - "arm" + - "arm64" goarm: - - 6 - - 7 + - "6" + - "7" archives: - format: tar.gz @@ -42,3 +42,68 @@ changelog: exclude: - "^docs:" - "^test:" + +dockers: + - image_templates: + - "ghcr.io/jimeh/casecmp:{{ .Version }}-amd64" + - "ghcr.io/jimeh/casecmp:latest-amd64" + dockerfile: Dockerfile + use: buildx + goos: linux + goarch: amd64 + build_flag_templates: + - "--platform=linux/amd64" + - image_templates: + - "ghcr.io/jimeh/casecmp:{{ .Version }}-386" + - "ghcr.io/jimeh/casecmp:latest-386" + dockerfile: Dockerfile + use: buildx + goos: linux + goarch: "386" + build_flag_templates: + - "--platform=linux/386" + - image_templates: + - "ghcr.io/jimeh/casecmp:{{ .Version }}-arm64" + - "ghcr.io/jimeh/casecmp:latest-arm64" + use: buildx + goos: linux + goarch: arm64 + dockerfile: Dockerfile + build_flag_templates: + - "--platform=linux/arm64" + - image_templates: + - "ghcr.io/jimeh/casecmp:{{ .Version }}-armv6" + - "ghcr.io/jimeh/casecmp:latest-armv6" + use: buildx + goos: linux + goarch: arm + goarm: "6" + dockerfile: Dockerfile + build_flag_templates: + - "--platform=linux/arm/v6" + - image_templates: + - "ghcr.io/jimeh/casecmp:{{ .Version }}-armv7" + - "ghcr.io/jimeh/casecmp:latest-armv7" + use: buildx + goos: linux + goarch: arm + goarm: "7" + dockerfile: Dockerfile + build_flag_templates: + - "--platform=linux/arm/v7" + +docker_manifests: + - name_template: ghcr.io/jimeh/casecmp:{{ .Version }} + image_templates: + - ghcr.io/jimeh/casecmp:{{ .Version }}-amd64 + - ghcr.io/jimeh/casecmp:{{ .Version }}-386 + - ghcr.io/jimeh/casecmp:{{ .Version }}-arm64 + - ghcr.io/jimeh/casecmp:{{ .Version }}-armv6 + - ghcr.io/jimeh/casecmp:{{ .Version }}-armv7 + - name_template: ghcr.io/jimeh/casecmp:latest + image_templates: + - ghcr.io/jimeh/casecmp:latest-amd64 + - ghcr.io/jimeh/casecmp:latest-386 + - ghcr.io/jimeh/casecmp:latest-arm64 + - ghcr.io/jimeh/casecmp:latest-armv6 + - ghcr.io/jimeh/casecmp:latest-armv7 diff --git a/Dockerfile b/Dockerfile index ab51a34..0132c90 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,17 +1,5 @@ -FROM golang:1.16-alpine as builder -RUN apk add --no-cache \ - git - -WORKDIR /app -COPY . /app -RUN env CGO_ENABLED=0 \ - go build -a -o /casecmp -ldflags "-s -w \ - -X main.version=$(cat VERSION) \ - -X main.commit=$(git show --format='%h' --no-patch) \ - -X main.date=$(date +%Y-%m-%dT%T%z)" - FROM scratch -COPY --from=builder /casecmp / +COPY ./casecmp / ENV PORT 8080 EXPOSE 8080 WORKDIR /