From decabcca6abadfdd7971aff2ddfb0392ab531659 Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Fri, 22 Apr 2022 23:30:39 +0800 Subject: [PATCH] ci: build docker image for riscv64 platform --- .Dockerfile | 65 +++++++++++++++++++------------------ .github/workflows/build.yml | 5 +-- README.md | 2 +- go.mod | 4 +-- go.sum | 5 +++ 5 files changed, 42 insertions(+), 39 deletions(-) diff --git a/.Dockerfile b/.Dockerfile index dc38891..044feb0 100644 --- a/.Dockerfile +++ b/.Dockerfile @@ -1,39 +1,40 @@ -FROM alpine AS build-env +FROM --platform=$BUILDPLATFORM alpine as build-env COPY ./dist /dist -RUN arch="$(apk --print-arch)"; \ - case "$arch" in \ - 'x86_64') \ - export FOLDER='default_linux_amd64_v1'; \ - ;; \ - 'armhf') \ - export FOLDER='default_linux_arm_6'; \ - ;; \ - 'armv7') \ - export FOLDER='default_linux_arm_7'; \ - ;; \ - 'aarch64') \ - export FOLDER='default_linux_arm64'; \ - ;; \ - 'x86') \ - export FOLDER='default_linux_386'; \ - ;; \ - *) echo >&2 "error: unsupported architecture '$arch'"; exit 1 ;; \ - esac \ - && mv /dist/$FOLDER /app ; \ +RUN apk add --no-cache ca-certificates + +ARG TARGETPLATFORM +RUN case $TARGETPLATFORM in \ + 'linux/386') \ + export FOLDER='default_linux_386'; \ + ;; \ + 'linux/amd64') \ + export FOLDER='default_linux_amd64_v1'; \ + ;; \ + 'linux/arm/v6') \ + export FOLDER='default_linux_arm_6'; \ + ;; \ + 'linux/arm/v7') \ + export FOLDER='default_linux_arm_7'; \ + ;; \ + 'linux/arm64') \ + export FOLDER='default_linux_arm64'; \ + ;; \ + 'linux/riscv64') \ + export FOLDER='default_linux_riscv64'; \ + ;; \ + *) echo >&2 "error: unsupported architecture '$TARGETPLATFORM'"; exit 1 ;; \ +esac \ + && mv /dist/$FOLDER /app ; \ rm /dist -rf -FROM alpine + +FROM scratch WORKDIR /app -COPY --from=build-env /app /app +COPY --from=build-env \ + /etc/ssl/certs/ca-certificates.crt \ + /etc/ssl/certs/ca-certificates.crt +COPY --from=build-env --chown=1000:1000 /app /app -RUN apk -U upgrade --no-cache \ - && apk --no-cache add ca-certificates shadow tzdata \ - && groupadd -g 1000 glider \ - && useradd -r -u 1000 -g glider glider \ - && apk --no-cache del shadow \ - && chown -R glider:glider /app \ - && chmod +x /app/glider - -USER glider +USER 1000 ENTRYPOINT ["./glider"] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1d4736..f5d69e0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ env: APP_NAME: glider DOCKERHUB_REPO: nadoo/glider GHCR_REPO: ghcr.io/nadoo/glider - PLATFORMS: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64 + PLATFORMS: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/riscv64 jobs: build: @@ -97,9 +97,6 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - name: Docker - Set up QEMU - uses: docker/setup-qemu-action@v1 - - name: Docker - Set up Buildx id: buildx uses: docker/setup-buildx-action@v1 diff --git a/README.md b/README.md index e0e0612..9ae4361 100644 --- a/README.md +++ b/README.md @@ -428,7 +428,7 @@ Examples: ``` docker run -d --name glider --net host --restart=always \ -v /etc/glider:/etc/glider \ - -e "TZ=Europe/London" \ + -v /etc/localtime:/etc/localtime:ro \ nadoo/glider -config=/etc/glider/glider.conf ``` - run watchtower (if you need auto update for glider) diff --git a/go.mod b/go.mod index fbf32e5..99141d6 100644 --- a/go.mod +++ b/go.mod @@ -12,7 +12,7 @@ require ( github.com/nadoo/ipset v0.5.0 github.com/xtaci/kcp-go/v5 v5.6.1 golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 - golang.org/x/sys v0.0.0-20220412211240-33da011f77ad + golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 ) require ( @@ -26,7 +26,7 @@ require ( github.com/templexxx/xorsimd v0.4.1 // indirect github.com/tjfoc/gmsm v1.4.1 // indirect github.com/u-root/uio v0.0.0-20220204230159-dac05f7d2cb4 // indirect - golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 // indirect + golang.org/x/net v0.0.0-20220421235706-1d1ef9303861 // indirect ) // Replace dependency modules with local developing copy diff --git a/go.sum b/go.sum index 0c72f8e..3f3cfba 100644 --- a/go.sum +++ b/go.sum @@ -49,6 +49,7 @@ github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqo github.com/jsimonetti/rtnetlink v0.0.0-20201110080708-d2c240429e6c/go.mod h1:huN4d1phzjhlOsNIjFsw2SVRbwIHj3fJDMEU2SDPTmg= github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/klauspost/cpuid v1.2.4/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= +github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/klauspost/cpuid/v2 v2.0.12 h1:p9dKCg8i4gmOxtv35DvrYoWqYzQrvEVdjQ762Y0OqZE= @@ -138,6 +139,8 @@ golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2 h1:6mzvA99KwZxbOrxww4EvWVQUnN1+xEu9tafK5ZxkYeA= golang.org/x/net v0.0.0-20220418201149-a630d4f3e7a2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220421235706-1d1ef9303861 h1:yssD99+7tqHWO5Gwh81phT+67hg+KttniBr6UnEXOY8= +golang.org/x/net v0.0.0-20220421235706-1d1ef9303861/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -166,6 +169,8 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150 h1:xHms4gcpe1YE7A3yIllJXP16CMAGuqwO2lX1mTyyRRc= +golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=