Skip to content

Commit

Permalink
build(docker): Fix version details in docker image
Browse files Browse the repository at this point in the history
As part of golangci#1383, multi-arch docker build was supported. However,
ldflags for version details was missing.

This commit is to add -ldflags
as part of Docker build.

Fixes golangci#1468

Signed-off-by: Tam Mach <sayboras@yahoo.com>
  • Loading branch information
sayboras committed Oct 26, 2020
1 parent f414375 commit 9744e3a
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 18 deletions.
66 changes: 50 additions & 16 deletions .github/workflows/tag.yml
Expand Up @@ -17,47 +17,81 @@ jobs:
go-version: 1.15
- name: Unshallow
run: git fetch --prune --unshallow
- name: Login do docker.io
run: docker login -u golangci -p ${{ secrets.GOLANGCI_LINT_DOCKER_TOKEN }}
- name: Create release
uses: goreleaser/goreleaser-action@v2

# - name: Create release
# uses: goreleaser/goreleaser-action@v2
# with:
# version: latest
# args: release --rm-dist
# env:
# GITHUB_TOKEN: ${{ secrets.GOLANGCI_LINT_TOKEN }}

docker-release:
needs: [ release ]
runs-on: ubuntu-latest
env:
GOLANGCI_LINT_DOCKER_TOKEN: ${{ secrets.GOLANGCI_LINT_DOCKER_TOKEN }}
steps:
- uses: actions/checkout@v2

- name: Install Go
uses: actions/setup-go@v2
with:
version: latest
args: release --rm-dist
env:
GITHUB_TOKEN: ${{ secrets.GOLANGCI_LINT_TOKEN }}
go-version: 1.15
- name: Unshallow
run: git fetch --prune --unshallow

- name: Prepare
id: prepare
run: |
TAG=${GITHUB_REF#refs/tags/}
MAJOR=${TAG%.*}
SHORT_COMMIT=${GITHUB_SHA::8}
DATE=$(date '+%Y-%m-%dT%H:%M:%SZ')
echo ::set-output name=tag_name::${TAG}
echo ::set-output name=major_tag::${MAJOR}
echo ::set-output name=short_commit::${SHORT_COMMIT}
echo ::set-output name=date::${DATE}
- name: Set up QEMU
uses: docker/setup-qemu-action@v1

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1
- name: build and publish main image

- name: Login do docker.io
run: docker login -u sayboras -p ${{ env.GOLANGCI_LINT_DOCKER_TOKEN }}

- name: Build and publish main image
id: docker_build
uses: docker/build-push-action@v2
with:
context: .
file: build/Dockerfile
platforms: linux/amd64,linux/arm64
push: true
build-args: |
VERSION=${{ steps.prepare.outputs.tag_name }}
SHORT_COMMIT=${{ steps.prepare.outputs.short_commit }}
DATE=${{ steps.prepare.outputs.date }}
tags: |
golangci/golangci-lint:${{ steps.prepare.outputs.tag_name }}
golangci/golangci-lint:${{ steps.prepare.outputs.major_tag }}
golangci/golangci-lint:latest
- name: build and publish alpine image
sayboras/golangci-lint:${{ steps.prepare.outputs.tag_name }}
sayboras/golangci-lint:${{ steps.prepare.outputs.major_tag }}
sayboras/golangci-lint:latest
- name: Build and publish alpine image
id: docker_build_alpine
uses: docker/build-push-action@v2
with:
context: .
file: build/Dockerfile.alpine
platforms: linux/amd64,linux/arm64
build-args: |
VERSION=${{ steps.prepare.outputs.tag_name }}
SHORT_COMMIT=${{ steps.prepare.outputs.short_commit }}
DATE=${{ steps.prepare.outputs.date }}
push: true
tags: |
golangci/golangci-lint:${{ steps.prepare.outputs.tag_name }}-alpine
golangci/golangci-lint:${{ steps.prepare.outputs.major_tag }}-alpine
golangci/golangci-lint:latest-alpine
sayboras/golangci-lint:${{ steps.prepare.outputs.tag_name }}-alpine
sayboras/golangci-lint:${{ steps.prepare.outputs.major_tag }}-alpine
sayboras/golangci-lint:latest-alpine
6 changes: 5 additions & 1 deletion build/Dockerfile
@@ -1,9 +1,13 @@
# stage 1 building the code
FROM golang:1.15 as builder

ARG VERSION
ARG SHORT_COMMIT
ARG DATE

COPY / /golangci
WORKDIR /golangci
RUN go build -o golangci-lint ./cmd/golangci-lint/main.go
RUN go build -ldflags "-s -w -X main.version=$VERSION -X main.commit=$SHORT_COMMIT -X main.date=$DATE" -o golangci-lint ./cmd/golangci-lint/main.go

# stage 2
FROM golang:1.15
Expand Down
11 changes: 10 additions & 1 deletion build/Dockerfile.alpine
@@ -1,9 +1,18 @@
# stage 1 building the code
FROM golang:1.15-alpine as builder

ARG VERSION
ARG SHORT_COMMIT
ARG DATE

COPY / /golangci
WORKDIR /golangci
RUN CGO_ENABLED=0 go build -o golangci-lint ./cmd/golangci-lint/main.go

# gcc is required to support cgo;
# git and mercurial are needed most times for go get`, etc.
# See https://github.com/docker-library/golang/issues/80
RUN apk --no-cache add gcc musl-dev git mercurial
RUN go build -ldflags "-s -w -X main.version=$VERSION -X main.commit=$SHORT_COMMIT -X main.date=$DATE" -o golangci-lint ./cmd/golangci-lint/main.go

# stage 2
FROM golang:1.15-alpine
Expand Down

0 comments on commit 9744e3a

Please sign in to comment.