Browse Source
chore(build): add go-task support (#1608)
chore(build): add go-task support (#1608)
* chore(build): add go-task support add go-task support Signed-off-by: kovacs <mritd@linux.com> * chore(docker): build with go-task build with go-task Signed-off-by: kovacs <mritd@linux.com> * chore(task): support cross compile support cross compile Signed-off-by: kovacs <mritd@linux.com> * chore(task): remove GCC build remove GCC build Signed-off-by: kovacs <mritd@linux.com> * docs(task): update README update README Signed-off-by: kovacs <mritd@linux.com> --------- Signed-off-by: kovacs <mritd@linux.com>pull/1638/head

committed by
GitHub

No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 555 additions and 81 deletions
-
64Dockerfile
-
79README.md
-
79README_zh-CN.md
-
414Taskfile.yaml
@ -1,49 +1,59 @@ |
|||
# 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 |
|||
# !!! Doesn't require any cleanup, as multi-stage builds are removed after completion |
|||
FROM node:16-alpine as 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 |
|||
RUN set -e \ |
|||
&& apk update \ |
|||
&& apk add bash wget curl git zip \ |
|||
&& sh -c "$(curl -sSL https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin |
|||
# Maybe copying the current directory is more accurate? |
|||
# && git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git /cloudreve |
|||
|
|||
# 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 |
|||
COPY . /cloudreve |
|||
|
|||
WORKDIR /cloudreve |
|||
|
|||
RUN task clean-frontend build-frontend |
|||
|
|||
|
|||
# the backend builder |
|||
# cloudreve backend needs golang 1.18* to build |
|||
FROM golang:1.18-alpine as cloudreve_backend_builder |
|||
# !!! Doesn't require any cleanup, as multi-stage builds are removed after completion |
|||
FROM golang:1.18-alpine as 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 |
|||
RUN set -e \ |
|||
&& apk update \ |
|||
&& apk add bash wget curl git build-base \ |
|||
&& sh -c "$(curl -sSL https://taskfile.dev/install.sh)" -- -d -b /usr/local/bin |
|||
# Maybe copying the current directory is more accurate? |
|||
# && git clone --recurse-submodules https://github.com/cloudreve/Cloudreve.git /cloudreve |
|||
|
|||
WORKDIR /cloudreve_backend |
|||
COPY --from=cloudreve_frontend_builder /cloudreve_frontend/assets.zip ./ |
|||
RUN chmod +x ./build.sh && ./build.sh -c |
|||
COPY . /cloudreve |
|||
|
|||
WORKDIR /cloudreve |
|||
|
|||
COPY --from=frontend_builder /cloudreve/assets.zip ./ |
|||
|
|||
# TODO: merge the frontend build and backend build into a single one image |
|||
# the final published image |
|||
RUN task clean-backend build-backend "PLATFORM=docker" |
|||
|
|||
|
|||
# the final builder |
|||
FROM alpine:latest |
|||
|
|||
WORKDIR /cloudreve |
|||
COPY --from=cloudreve_backend_builder /cloudreve_backend/cloudreve ./cloudreve |
|||
|
|||
RUN apk update \ |
|||
&& apk add --no-cache tzdata \ |
|||
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ |
|||
&& echo "Asia/Shanghai" > /etc/timezone \ |
|||
&& chmod +x ./cloudreve \ |
|||
&& mkdir -p /data/aria2 \ |
|||
&& chmod -R 766 /data/aria2 |
|||
COPY --from=backend_builder /cloudreve/release/cloudreve-docker ./cloudreve |
|||
|
|||
# !!! For i18n users, do not set timezone |
|||
RUN set -e \ |
|||
&& apk update \ |
|||
&& apk add bash ca-certificates tzdata \ |
|||
&& rm -f /var/cache/apk/* |
|||
|
|||
EXPOSE 5212 |
|||
|
|||
VOLUME ["/cloudreve/uploads", "/cloudreve/avatar", "/data"] |
|||
|
|||
ENTRYPOINT ["./cloudreve"] |
@ -0,0 +1,414 @@ |
|||
version: '3' |
|||
|
|||
vars: |
|||
VERSION: |
|||
sh: git describe --tags --always |
|||
COMMIT_SHA: |
|||
sh: git rev-parse --short HEAD |
|||
CGO_ENABLED: 0 |
|||
DEFAULT_PLATFORM: "{{OS}}-{{ARCH}}" |
|||
|
|||
tasks: |
|||
clean-frontend: |
|||
desc: Clean Frontend Build Cache |
|||
cmds: |
|||
- rm -rf assets/build assets/node_modules assets.zip |
|||
status: |
|||
- test ! -d assets/build |
|||
- test ! -d assets/node_modules |
|||
- test ! -f assets.zip |
|||
|
|||
clean-backend: |
|||
desc: Clean Backend Build Cache |
|||
cmds: |
|||
- rm -rf release |
|||
status: |
|||
- test ! -d release |
|||
|
|||
clean: |
|||
desc: Clean All Build Cache |
|||
cmds: |
|||
- task: clean-frontend |
|||
- task: clean-backend |
|||
|
|||
mkdir: |
|||
cmds: |
|||
- mkdir -p release |
|||
status: |
|||
- test -d release |
|||
|
|||
build-frontend: |
|||
desc: Build Frontend |
|||
vars: |
|||
CI: false |
|||
GENERATE_SOURCEMAP: false |
|||
dir: assets |
|||
cmds: |
|||
- yarn install |
|||
- yarn build |
|||
- cd .. && zip -r - assets/build > assets.zip |
|||
status: |
|||
- test -d node_modules |
|||
- test -d build |
|||
|
|||
build-backend: |
|||
desc: Build Backend |
|||
label: build-{{.PLATFORM | default "backend"}} |
|||
cmds: |
|||
- task: mkdir |
|||
- | |
|||
GOOS={{.GOOS}} GOARCH={{.GOARCH}} GOARM={{.GOARM}} GOMIPS={{.GOMIPS}} CGO_ENABLED={{.CGO_ENABLED}} CC={{.CC}} \ |
|||
go build -trimpath -o release/cloudreve-{{.PLATFORM}}{{.BINEXT}} -ldflags \ |
|||
"-w -s -X github.com/cloudreve/Cloudreve/v3/pkg/conf.BackendVersion={{.VERSION}} \ |
|||
-X github.com/cloudreve/Cloudreve/v3/pkg/conf.LastCommit={{.COMMIT_SHA}}" |
|||
|
|||
|
|||
linux-amd64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: amd64 |
|||
} |
|||
linux-amd64-v2: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: amd64, |
|||
GOAMD64: v2 |
|||
} |
|||
linux-amd64-v3: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: amd64, |
|||
GOAMD64: v3 |
|||
} |
|||
linux-amd64-v4: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: amd64, |
|||
GOAMD64: v4 |
|||
} |
|||
linux-armv5: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: arm, |
|||
GOARM: 5 |
|||
} |
|||
linux-armv6: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: arm, |
|||
GOARM: 6 |
|||
} |
|||
linux-armv7: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: arm, |
|||
GOARM: 7 |
|||
} |
|||
linux-armv8: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: linux, |
|||
GOARCH: arm64 |
|||
} |
|||
# |
|||
# !!! modernc.org/libc doesn't support mips architecture yet |
|||
# |
|||
# linux-mips-hardfloat: |
|||
# desc: Build Backend({{.TASK}}) |
|||
# cmds: |
|||
# - task: build-backend |
|||
# vars: { |
|||
# PLATFORM: "{{.TASK}}", |
|||
# GOOS: linux, |
|||
# GOARCH: mips, |
|||
# GOMIPS: hardfloat |
|||
# } |
|||
# linux-mipsle-softfloat: |
|||
# desc: Build Backend({{.TASK}}) |
|||
# cmds: |
|||
# - task: build-backend |
|||
# vars: { |
|||
# PLATFORM: "{{.TASK}}", |
|||
# GOOS: linux, |
|||
# GOARCH: mipsle, |
|||
# GOMIPS: softfloat |
|||
# } |
|||
# linux-mipsle-hardfloat: |
|||
# desc: Build Backend({{.TASK}}) |
|||
# cmds: |
|||
# - task: build-backend |
|||
# vars: { |
|||
# PLATFORM: "{{.TASK}}", |
|||
# GOOS: linux, |
|||
# GOARCH: mipsle, |
|||
# GOMIPS: hardfloat |
|||
# } |
|||
# linux-mips64: |
|||
# desc: Build Backend({{.TASK}}) |
|||
# cmds: |
|||
# - task: build-backend |
|||
# vars: { |
|||
# PLATFORM: "{{.TASK}}", |
|||
# GOOS: linux, |
|||
# GOARCH: mips64 |
|||
# } |
|||
# linux-mips64le: |
|||
# desc: Build Backend({{.TASK}}) |
|||
# cmds: |
|||
# - task: build-backend |
|||
# vars: { |
|||
# PLATFORM: "{{.TASK}}", |
|||
# GOOS: linux, |
|||
# GOARCH: mips64le |
|||
# } |
|||
darwin-amd64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: darwin, |
|||
GOARCH: amd64 |
|||
} |
|||
darwin-amd64-v2: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: darwin, |
|||
GOARCH: amd64, |
|||
GOAMD64: v2 |
|||
} |
|||
darwin-amd64-v3: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: darwin, |
|||
GOARCH: amd64, |
|||
GOAMD64: v3 |
|||
} |
|||
darwin-amd64-v4: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: darwin, |
|||
GOARCH: amd64, |
|||
GOAMD64: v4 |
|||
} |
|||
darwin-arm64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: darwin, |
|||
GOARCH: arm64 |
|||
} |
|||
freebsd-386: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: 386 |
|||
} |
|||
freebsd-amd64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: amd64 |
|||
} |
|||
freebsd-amd64-v2: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: amd64, |
|||
GOAMD64: v2 |
|||
} |
|||
freebsd-amd64-v3: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: amd64, |
|||
GOAMD64: v3 |
|||
} |
|||
freebsd-amd64-v4: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: amd64, |
|||
GOAMD64: v4 |
|||
} |
|||
freebsd-arm: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: arm |
|||
} |
|||
freebsd-arm64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
GOOS: freebsd, |
|||
GOARCH: arm64 |
|||
} |
|||
# |
|||
# The sqlite library does not support the windows 386 architecture |
|||
# https://gitlab.com/cznic/sqlite/-/issues/86 |
|||
# |
|||
# windows-386: |
|||
# cmds: |
|||
# - task: build-backend |
|||
# vars: { |
|||
# PLATFORM: "{{.TASK}}", |
|||
# BINEXT: ".exe", |
|||
# GOOS: windows, |
|||
# GOARCH: 386 |
|||
# } |
|||
windows-amd64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
BINEXT: ".exe", |
|||
GOOS: windows, |
|||
GOARCH: amd64 |
|||
} |
|||
windows-amd64-v2: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
BINEXT: ".exe", |
|||
GOOS: windows, |
|||
GOARCH: amd64, |
|||
GOAMD64: v2 |
|||
} |
|||
windows-amd64-v3: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
BINEXT: ".exe", |
|||
GOOS: windows, |
|||
GOARCH: amd64, |
|||
GOAMD64: v3 |
|||
} |
|||
windows-amd64-v4: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
BINEXT: ".exe", |
|||
GOOS: windows, |
|||
GOARCH: amd64, |
|||
GOAMD64: v4 |
|||
} |
|||
windows-arm64: |
|||
desc: Build Backend({{.TASK}}) |
|||
cmds: |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.TASK}}", |
|||
BINEXT: ".exe", |
|||
GOOS: windows, |
|||
GOARCH: arm64 |
|||
} |
|||
|
|||
build: |
|||
desc: Build Cloudreve |
|||
cmds: |
|||
- task: clean |
|||
- task: build-frontend |
|||
- task: build-backend |
|||
vars: { |
|||
PLATFORM: "{{.DEFAULT_PLATFORM}}", |
|||
BINEXT: "{{exeExt}}" |
|||
} |
|||
|
|||
default: |
|||
cmds: |
|||
- task: build |
|||
|
|||
all: |
|||
desc: Build All Platform |
|||
cmds: |
|||
- task: clean |
|||
- task: build-frontend |
|||
- task: linux-amd64 |
|||
- task: linux-amd64-v2 |
|||
- task: linux-amd64-v3 |
|||
- task: linux-amd64-v4 |
|||
- task: linux-armv5 |
|||
- task: linux-armv6 |
|||
- task: linux-armv7 |
|||
- task: linux-armv8 |
|||
- task: darwin-amd64 |
|||
- task: darwin-amd64-v2 |
|||
- task: darwin-amd64-v3 |
|||
- task: darwin-amd64-v4 |
|||
- task: darwin-arm64 |
|||
- task: windows-amd64 |
|||
- task: windows-amd64-v2 |
|||
- task: windows-amd64-v3 |
|||
- task: windows-amd64-v4 |
|||
- task: windows-arm64 |
|||
|
Write
Preview
Loading…
Cancel
Save
Reference in new issue