From 91cb3f8ef7aaabb3f91497371fa4d31ae990a569 Mon Sep 17 00:00:00 2001 From: mritd Date: Tue, 13 Apr 2021 20:05:10 +0800 Subject: [PATCH 1/5] chore(docker): update docker file, add ci support update docker file, add ci support Signed-off-by: mritd --- .github/workflows/docker.yaml | 43 +++++++++++++++++++++++++++++++++++ Dockerfile | 10 +++----- 2 files changed, 46 insertions(+), 7 deletions(-) create mode 100644 .github/workflows/docker.yaml diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 0000000..a169e18 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,43 @@ +name: Build Docker Image + +on: + push: + branches: + - 'v*' + +jobs: + docker: + runs-on: ubuntu-latest + steps: + - name: Check out + uses: actions/checkout@v2 + + - name: Get tag + uses: olegtarasov/get-tag@v2 + id: tagName + + - name: Get time + uses: gerred/actions/current-time@master + id: current-time + + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + + - name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + push: true + tags: tobyxdd/hysteria:latest,tobyxdd/hysteria:${{ env.GIT_TAG_NAME }} + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} diff --git a/Dockerfile b/Dockerfile index c023ea0..bb675a1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.14.7-alpine3.12 AS builder +FROM golang:alpine AS builder LABEL maintainer="mritd " @@ -19,14 +19,10 @@ ENV COMMIT ${COMMIT} ENV TIMESTAMP ${TIMESTAMP} ENV GOPROXY ${GOPROXY} -# go mod is always enabled -ENV GO111MODULE on - COPY . /go/src/github.com/tobyxdd/hysteria WORKDIR /go/src/github.com/tobyxdd/hysteria/cmd -# TODO: Is it necessary to remove "-w -s" to add debugging information? RUN set -ex \ && go build -o /go/bin/hysteria -ldflags \ "-w -s -X 'main.appVersion=${VERSION}' \ @@ -34,7 +30,7 @@ RUN set -ex \ -X 'main.appDate=${TIMESTAMP}'" # multi-stage builds to create the final image -FROM alpine:3.12 AS dist +FROM alpine AS dist LABEL maintainer="mritd " @@ -50,4 +46,4 @@ RUN set -ex \ COPY --from=builder /go/bin/hysteria /usr/local/bin/hysteria -ENTRYPOINT ["hysteria"] \ No newline at end of file +ENTRYPOINT ["hysteria"] From 71f3583deb354e9cc9db26a2a027f0cd97bf40cc Mon Sep 17 00:00:00 2001 From: mritd Date: Tue, 13 Apr 2021 20:27:32 +0800 Subject: [PATCH 2/5] chore(dockerfile): auto env from git repo auto env from git repo Signed-off-by: mritd --- Dockerfile | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/Dockerfile b/Dockerfile index bb675a1..100a5fc 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,21 +2,11 @@ FROM golang:alpine AS builder LABEL maintainer="mritd " -# The following parameters are used to set compilation information(such as compilation time, -# commit id, etc.). Use "docker build --build-arg VERSION=1.1.1 ..." to set these parameters. -# These parameters can be set automatically through CI Server. -ARG VERSION="Unknown" -ARG COMMIT="Unknown" -ARG TIMESTAMP="Unknown" - # GOPROXY is disabled by default, use: # docker build --build-arg GOPROXY="https://goproxy.io" ... # to enable GOPROXY. ARG GOPROXY="" -ENV VERSION ${VERSION} -ENV COMMIT ${COMMIT} -ENV TIMESTAMP ${TIMESTAMP} ENV GOPROXY ${GOPROXY} COPY . /go/src/github.com/tobyxdd/hysteria @@ -24,6 +14,9 @@ COPY . /go/src/github.com/tobyxdd/hysteria WORKDIR /go/src/github.com/tobyxdd/hysteria/cmd RUN set -ex \ + && export VERSION=$(git describe --tags) \ + && export COMMIT=$(git rev-parse HEAD) \ + && export TIMESTAMP=$(date "+%F %T") \ && go build -o /go/bin/hysteria -ldflags \ "-w -s -X 'main.appVersion=${VERSION}' \ -X 'main.appCommit=${COMMIT}' \ From 93a8bde9bc5f985c44ef32c2a1f7ee3179ab165f Mon Sep 17 00:00:00 2001 From: mritd Date: Tue, 13 Apr 2021 20:30:01 +0800 Subject: [PATCH 3/5] chore(dockerfile): fix git cmd missing fix git cmd missing Signed-off-by: mritd --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index 100a5fc..7e794f5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,6 +14,7 @@ COPY . /go/src/github.com/tobyxdd/hysteria WORKDIR /go/src/github.com/tobyxdd/hysteria/cmd RUN set -ex \ + && apk add git \ && export VERSION=$(git describe --tags) \ && export COMMIT=$(git rev-parse HEAD) \ && export TIMESTAMP=$(date "+%F %T") \ From db716f7a75fd9d3ff728de72470777d9c742ad6a Mon Sep 17 00:00:00 2001 From: mritd Date: Tue, 13 Apr 2021 20:38:43 +0800 Subject: [PATCH 4/5] chore(workflow): fix workflow trigger fix workflow trigger Signed-off-by: mritd --- .github/workflows/docker.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index a169e18..fce63a4 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -2,7 +2,7 @@ name: Build Docker Image on: push: - branches: + tags: - 'v*' jobs: @@ -16,10 +16,6 @@ jobs: uses: olegtarasov/get-tag@v2 id: tagName - - name: Get time - uses: gerred/actions/current-time@master - id: current-time - - name: Set up QEMU uses: docker/setup-qemu-action@v1 From 7e769e6b8a62ad6930d581948bc14c594a537aba Mon Sep 17 00:00:00 2001 From: mritd Date: Tue, 13 Apr 2021 20:42:33 +0800 Subject: [PATCH 5/5] chore(workflow): support Multi-platform build support Multi-platform build Signed-off-by: mritd --- .github/workflows/docker.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index fce63a4..68203da 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -32,7 +32,9 @@ jobs: id: docker_build uses: docker/build-push-action@v2 with: + context: . push: true + platforms: linux/amd64,linux/arm64 tags: tobyxdd/hysteria:latest,tobyxdd/hysteria:${{ env.GIT_TAG_NAME }} - name: Image digest