From 21f901d9f38ede08f22fdf733166b0283ae4bde2 Mon Sep 17 00:00:00 2001 From: Brian Goff Date: Tue, 24 Aug 2021 17:51:15 +0000 Subject: [PATCH] Clean up build stuff 1. Uses modern go in Dockerfile 2. Fix `make build` pre-reqs 3. Remove interim BUILDFLAGS handling Signed-off-by: Brian Goff --- .github/workflows/test.yml | 10 +++++----- Dockerfile | 19 ++++++------------- Makefile | 39 ++++++++++++++++++++++++++++++++------ 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7606818..b4a0182 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,4 +1,4 @@ -name: Go +name: CI on: push: @@ -11,7 +11,7 @@ jobs: name: Build strategy: matrix: - go-version: [1.13.x, 1.15.x, 1.16.x, 1.17.x, 1.18.x] + go-version: [1.18.x, 1.19.x, 1.20.x, 1.21.x] platform: [ubuntu-20.04] runs-on: ${{ matrix.platform }} steps: @@ -24,10 +24,10 @@ jobs: uses: actions/checkout@v4 - name: Build - run: go build -v ./... + run: make build - name: Test - run: go test -v ./... + run: make test lint: runs-on: ubuntu-20.04 @@ -35,4 +35,4 @@ jobs: - uses: actions/checkout@v4 - uses: golangci/golangci-lint-action@v3.7.0 with: - version: v1.51 + version: v1.55 diff --git a/Dockerfile b/Dockerfile index 7181c53..a435359 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,13 @@ -ARG GO_VERSION=1.18 -ARG GO_IMAGE=golang:${GO_VERSION} +ARG GO_VERSION=1.21 -FROM --platform=$BUILDPLATFORM $GO_IMAGE AS build +FROM golang:${GO_VERSION} AS build COPY . /go/src/github.com/cpuguy83/go-md2man WORKDIR /go/src/github.com/cpuguy83/go-md2man -ARG TARGETOS -ARG TARGETARCH -ARG TARGETVARIANT RUN \ - export GOOS="${TARGETOS}"; \ - export GOARCH="${TARGETARCH}"; \ - if [ "${TARGETARCH}" = "arm" ] && [ "${TARGETVARIANT}" ]; then \ - export GOARM="${TARGETVARIANT#v}"; \ - fi; \ - CGO_ENABLED=0 go build + --mount=type=cache,target=/go/pkg/mod \ + --mount=type=cache,target=/root/.cache/go-build \ + make build FROM scratch -COPY --from=build /go/src/github.com/cpuguy83/go-md2man/go-md2man /go-md2man +COPY --from=build /go/src/github.com/cpuguy83/go-md2man/bin/go-md2man /go-md2man ENTRYPOINT ["/go-md2man"] diff --git a/Makefile b/Makefile index 437fc99..297a41d 100644 --- a/Makefile +++ b/Makefile @@ -3,6 +3,36 @@ LINTER_BIN ?= golangci-lint export GO111MODULE +GOOS ?= $(if $(TARGETOS),$(TARGETOS),) +GOARCH ?= $(if $(TARGETARCH),$(TARGETARCH),) + +ifeq ($(TARGETARCH),amd64) +GOAMD64 ?= $(TARGETVARIANT) +endif + +ifeq ($(TARGETARCH),arm) +GOARM ?= $(TARGETVARIANT:v%=%) +endif + +ifneq ($(GOOS),) +export GOOS +endif + +ifneq ($(GOARCH),) +export GOARCH +endif + +ifneq ($(GOAMD64),) +export GOAMD64 +endif + +ifneq ($(GOARM),) +export GOARM +endif + +vars: + @go env + .PHONY: build: bin/go-md2man @@ -14,12 +44,9 @@ clean: test: @go test $(TEST_FLAGS) ./... -bin/go-md2man: actual_build_flags := $(BUILD_FLAGS) -o bin/go-md2man -bin/go-md2man: bin - @CGO_ENABLED=0 go build $(actual_build_flags) - -bin: - @mkdir ./bin +bin/go-md2man: go.mod go.sum md2man/* *.go + @mkdir -p bin + CGO_ENABLED=0 go build $(BUILD_FLAGS) -o $@ .PHONY: mod mod: