From ceca23c4c44f30c355ed47b15e85d3c0ca0e2b0b Mon Sep 17 00:00:00 2001 From: Colin Chamber Date: Sat, 22 Jul 2023 14:38:44 +0800 Subject: [PATCH 1/2] add docker build workflow --- .github/workflows/docker-build-push.yaml | 43 ++++++++++++++++++++++++ Dockerfile | 16 +++++++-- Makefile | 9 +++-- 3 files changed, 61 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/docker-build-push.yaml diff --git a/.github/workflows/docker-build-push.yaml b/.github/workflows/docker-build-push.yaml new file mode 100644 index 00000000..1f61955d --- /dev/null +++ b/.github/workflows/docker-build-push.yaml @@ -0,0 +1,43 @@ +name: docker-build-push + +on: + workflow_dispatch: + + push: + branches: + - 'master' + +jobs: + docker-build-push: + runs-on: ubuntu-20.04 + steps: + - name: Checkout + uses: actions/checkout@v3 + with: + fetch-depth: 1 + name: Set up QEMU + uses: docker/setup-qemu-action@v2 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + driver-opts: network=host + + - name: Login to docker hub + uses: docker/login-action@v2 + with: + registry: docker.io + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: build and publish image + env: + DOCKER_REPO: docker.io/${{ secrets.DOCKER_USERNAME }}/kvrocks-exporter + run: | + docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --label "org.opencontainers.image.source=https://github.com/${{ github.repository_owner }}/kvrocks-exporter" \ + --label "org.opencontainers.image.description=kvrocks-exporter image" \ + --label "org.opencontainers.image.licenses=Apache-2.0" \ + --push \ + -t ${DOCKER_REPO}:latest \ + -f Dockerfile \ + . diff --git a/Dockerfile b/Dockerfile index 541c32d0..df9e47f0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,17 @@ -FROM alpine -COPY /kvrocks_exporter /kvrocks_exporter +FROM golang:1.19-alpine3.18 as build + +ARG TARGETARCH + +RUN apk update && apk add make +WORKDIR /kvrocks_exporter + +COPY . . +RUN make build-binaries ARCH=${TARGETARCH} + + +FROM alpine:3.18 + +COPY --from=build /kvrocks_exporter/.build/kvrocks_exporter /kvrocks_exporter EXPOSE 9121 diff --git a/Makefile b/Makefile index 15ac116d..93b154dd 100644 --- a/Makefile +++ b/Makefile @@ -67,16 +67,15 @@ upload-coverage: BUILD_DT:=$(shell date +%F-%T) GO_LDFLAGS:="-s -w -extldflags \"-static\" -X main.BuildVersion=${DRONE_TAG} -X main.BuildCommitSha=${DRONE_COMMIT_SHA} -X main.BuildDate=$(BUILD_DT)" +OS ?= linux +ARCH ?= amd64 .PHONE: build-binaries build-binaries: - go get github.com/oliver006/gox@master + go install github.com/oliver006/gox@master rm -rf .build | true export CGO_ENABLED=0 ; \ - gox -os="linux windows freebsd netbsd openbsd" -arch="amd64 386" -verbose -rebuild -ldflags $(GO_LDFLAGS) -output ".build/redis_exporter-${DRONE_TAG}.{{.OS}}-{{.Arch}}/{{.Dir}}" && \ - gox -os="darwin solaris illumos" -arch="amd64" -verbose -rebuild -ldflags $(GO_LDFLAGS) -output ".build/redis_exporter-${DRONE_TAG}.{{.OS}}-{{.Arch}}/{{.Dir}}" && \ - gox -os="linux freebsd netbsd" -arch="arm" -verbose -rebuild -ldflags $(GO_LDFLAGS) -output ".build/redis_exporter-${DRONE_TAG}.{{.OS}}-{{.Arch}}/{{.Dir}}" && \ - gox -os="linux" -arch="arm64 mips64 mips64le ppc64 ppc64le s390x" -verbose -rebuild -ldflags $(GO_LDFLAGS) -output ".build/redis_exporter-${DRONE_TAG}.{{.OS}}-{{.Arch}}/{{.Dir}}" && \ + gox -os=$(OS) -arch=$(ARCH) -verbose -rebuild -ldflags $(GO_LDFLAGS) -output ".build/kvrocks_exporter" && \ echo "done" From 7eba0fd529939eaf4444f7dfda8a117d27f370a6 Mon Sep 17 00:00:00 2001 From: ColinChamber Date: Sun, 23 Jul 2023 14:23:31 +0800 Subject: [PATCH 2/2] Update docker-build-push.yaml --- .github/workflows/docker-build-push.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/docker-build-push.yaml b/.github/workflows/docker-build-push.yaml index 1f61955d..b636d574 100644 --- a/.github/workflows/docker-build-push.yaml +++ b/.github/workflows/docker-build-push.yaml @@ -15,7 +15,7 @@ jobs: uses: actions/checkout@v3 with: fetch-depth: 1 - name: Set up QEMU + - name: Set up QEMU uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2