diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7af858c..a4ce8e6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,3 +27,5 @@ jobs: distribution: goreleaser version: latest args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }} \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 95630b6..350bc58 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -11,7 +11,7 @@ builds: - CGO_ENABLED=0 ldflags: - - -X 'github.com/cloudreve/Cloudreve/v3/pkg/conf.BackendVersion={{.Version}}' -X 'github.com/cloudreve/Cloudreve/v3/pkg/conf.LastCommit={{.ShortCommit}}' + - -X 'github.com/cloudreve/Cloudreve/v3/pkg/conf.BackendVersion={{.Tag}}' -X 'github.com/cloudreve/Cloudreve/v3/pkg/conf.LastCommit={{.ShortCommit}}' goos: - linux @@ -66,3 +66,57 @@ release: prerelease: auto target_commitish: '{{ .Commit }}' name_template: "{{.Version}}" + +dockers: + - + dockerfile: Dockerfile + use: buildx + build_flag_templates: + - "--platform=linux/amd64" + goos: linux + goarch: amd64 + image_templates: + - "cloudreve/cloudreve:{{ .Tag }}-amd64" + - + dockerfile: Dockerfile + use: buildx + build_flag_templates: + - "--platform=linux/arm64" + goos: linux + goarch: arm64 + image_templates: + - "cloudreve/cloudreve:{{ .Tag }}-arm64" + - + dockerfile: Dockerfile + use: buildx + build_flag_templates: + - "--platform=linux/arm/v6" + goos: linux + goarch: arm + goarm: '6' + image_templates: + - "cloudreve/cloudreve:{{ .Tag }}-armv6" + - + dockerfile: Dockerfile + use: buildx + build_flag_templates: + - "--platform=linux/arm/v7" + goos: linux + goarch: arm + goarm: '7' + image_templates: + - "cloudreve/cloudreve:{{ .Tag }}-armv7" + +docker_manifests: + - name_template: "cloudreve/cloudreve:latest" + image_templates: + - "cloudreve/cloudreve:{{ .Tag }}-amd64" + - "cloudreve/cloudreve:{{ .Tag }}-arm64" + - "cloudreve/cloudreve:{{ .Tag }}-armv6" + - "cloudreve/cloudreve:{{ .Tag }}-armv7" + - name_template: "cloudreve/cloudreve:{{ .Tag }}" + image_templates: + - "cloudreve/cloudreve:{{ .Tag }}-amd64" + - "cloudreve/cloudreve:{{ .Tag }}-arm64" + - "cloudreve/cloudreve:{{ .Tag }}-armv6" + - "cloudreve/cloudreve:{{ .Tag }}-armv7" \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index d3d5caa..7b2f5ae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,39 +1,7 @@ -# the frontend builder -# cloudreve need node.js 16* to build frontend, -# separate build step and custom image tag will resolve this -FROM node:16-alpine as cloudreve_frontend_builder - -RUN apk update \ - && apk add --no-cache wget curl git yarn zip bash \ - && git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git /cloudreve_frontend - -# build frontend assets using build script, make sure all the steps just follow the regular release -WORKDIR /cloudreve_frontend -ENV GENERATE_SOURCEMAP false -RUN chmod +x ./build.sh && ./build.sh -a - - -# the backend builder -# cloudreve backend needs golang 1.18* to build -FROM golang:1.18-alpine as cloudreve_backend_builder - -# install dependencies and build tools -RUN apk update \ - # install dependencies and build tools - && apk add --no-cache wget curl git build-base gcc abuild binutils binutils-doc gcc-doc zip bash \ - && git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git /cloudreve_backend - -WORKDIR /cloudreve_backend -COPY --from=cloudreve_frontend_builder /cloudreve_frontend/assets.zip ./ -RUN chmod +x ./build.sh && ./build.sh -c - - -# TODO: merge the frontend build and backend build into a single one image -# the final published image FROM alpine:latest WORKDIR /cloudreve -COPY --from=cloudreve_backend_builder /cloudreve_backend/cloudreve ./cloudreve +COPY cloudreve ./cloudreve RUN apk update \ && apk add --no-cache tzdata \