From c3c9b18830c24b2ef29dea4f3c116533359784bc Mon Sep 17 00:00:00 2001 From: jinnrry Date: Sun, 18 Feb 2024 14:30:38 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BD=BF=E7=94=A8Mackfile=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E7=BC=96=E8=AF=91=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DockerfileGithubAction | 26 ++++++++++++++++++++++++++ Makefile | 23 +++++++++++++++++++++++ build.sh | 26 -------------------------- server/config/config.go | 2 +- 4 files changed, 50 insertions(+), 27 deletions(-) create mode 100644 DockerfileGithubAction create mode 100644 Makefile delete mode 100755 build.sh diff --git a/DockerfileGithubAction b/DockerfileGithubAction new file mode 100644 index 0000000..922056b --- /dev/null +++ b/DockerfileGithubAction @@ -0,0 +1,26 @@ +FROM golang:alpine as serverbuild + +WORKDIR /work + +COPY server . + +RUN apk update && apk add git +RUN go build -ldflags "-X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail main.go + + +FROM alpine + +WORKDIR /work + +# 设置时区 +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories +RUN apk add --no-cache tzdata \ + && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ + && echo "Asia/Shanghai" > /etc/timezone \ + &&rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache + + +COPY --from=serverbuild /work/pmail . + + +CMD /work/pmail diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..24e973c --- /dev/null +++ b/Makefile @@ -0,0 +1,23 @@ +build: build_fe build_server package + +clean: + rm -rf output + +build_fe: + cd fe && yarn && yarn build + cd server && cp -rf ../fe/dist http_server + +build_server: + cd server && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_linux_amd64 main.go + cd server && CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_windows_amd64.exe main.go + cd server && CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_mac_amd64 main.go + cd server && CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_mac_arm64 main.go + +package: clean + mkdir output + mv server/pmail* output/ + mkdir config + cp -r server/config/dkim output/config/ + cp -r server/config/ssl output/config/ + cp -r server/config/config.json output/config/ + cp README.md output/ diff --git a/build.sh b/build.sh deleted file mode 100755 index 9cb7521..0000000 --- a/build.sh +++ /dev/null @@ -1,26 +0,0 @@ -# 编译前端代码 -cd fe && yarn && yarn build - -# 编译后端代码 -cd ../server && cp -rf ../fe/dist http_server - - -CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_linux_amd64 main.go - -CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_windows_amd64.exe main.go - -CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_mac_amd64 main.go - -CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -ldflags "-s -w -X 'main.goVersion=$(go version)' -X 'main.gitHash=$(git show -s --format=%H)' -X 'main.buildTime=$(TZ=UTC-8 date +%Y-%m-%d" "%H:%M:%S)'" -o pmail_mac_arm64 main.go - -# 整理输出文件 -cd .. -rm -rf output -mkdir output -cd output -mv ../server/pmail* . -mkdir config -cp -r ../server/config/dkim config/ -cp -r ../server/config/ssl config/ -cp -r ../server/config/config.json config/ -cp ../README.md . \ No newline at end of file diff --git a/server/config/config.go b/server/config/config.go index c96ad56..5dd20c7 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -39,7 +39,7 @@ type Config struct { //go:embed tables/* var tableConfig embed.FS -const Version = "2.3.7" +const Version = "2.3.8" const DBTypeMySQL = "mysql" const DBTypeSQLite = "sqlite" From d7dbf1109b1b988bfa9d4eba1755687b57a5f16d Mon Sep 17 00:00:00 2001 From: Jinnrry Date: Sun, 18 Feb 2024 14:37:01 +0800 Subject: [PATCH 2/2] Update docker_build_pre.yml --- .github/workflows/docker_build_pre.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docker_build_pre.yml b/.github/workflows/docker_build_pre.yml index 4f69b9c..a439e0a 100644 --- a/.github/workflows/docker_build_pre.yml +++ b/.github/workflows/docker_build_pre.yml @@ -35,7 +35,12 @@ jobs: - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 - + + - uses: actions/setup-node@v4 + + - name: Build FE + run: make build_fe + - name: Log in to the Container registry uses: docker/login-action@v2.1.0 with: @@ -47,6 +52,7 @@ jobs: uses: docker/build-push-action@v4 with: context: . + file: ./DockerfileGithubAction platforms: | linux/386 linux/amd64