diff --git a/.gitignore b/.gitignore index 4f7e39cc..e9068081 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,7 @@ .idea .vscode !*.example -dist/ config.yaml *.log paopao-ce* +release/ \ No newline at end of file diff --git a/Makefile b/Makefile index ba019737..5cb4ebb9 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,66 @@ .PHONY: all build run test clean fmt help + +TARGET = paopao-ce +RELEASE_ROOT = release +RELEASE_FILES = LICENSE README.md config.yaml.sample scripts assets configs +RELEASE_LINUX_AMD64 = $(RELEASE_ROOT)/linux-amd64/$(TARGET) +RELEASE_DARWIN_AMD64 = $(RELEASE_ROOT)/darwin-amd64/$(TARGET) +RELEASE_DARWIN_ARM64 = $(RELEASE_ROOT)/darwin-arm64/$(TARGET) +RELEASE_WINDOWS_AMD64 = $(RELEASE_ROOT)/windows-amd64/$(TARGET) + BUILD_VERSION := $(shell cat version) BUILD_DATE := $(shell date +'%Y-%m-%d %H:%M:%S') SHA_SHORT := $(shell git rev-parse --short HEAD) + TAGS = "" +LDFLAGS = -X "main.version=${BUILD_VERSION}" -X "main.buildDate=${BUILD_DATE}" -X "main.commitID=${SHA_SHORT}" -w -s + all: fmt build + build: @go mod download @echo Build paopao-ce - bash build.sh paopao-ce + @go build -trimpath -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $(RELEASE_ROOT)/$(TARGET) + run: - @go run -tags '$(TAGS)' -ldflags "-X 'main.version=${BUILD_VERSION}' -X 'main.buildDate=${BUILD_DATE}' -X 'main.commitID=${SHA_SHORT}'" . + @go run -trimpath -gcflags "all=-N -l" -tags '$(TAGS)' -ldflags '$(LDFLAGS)' . + +.PHONY: release +release: linux-amd64 darwin-amd64 darwin-arm64 windows-x64 + @echo Package paopao-ce + @cp -rf $(RELEASE_FILES) $(RELEASE_LINUX_AMD64) + @cp -rf $(RELEASE_FILES) $(RELEASE_DARWIN_AMD64) + @cp -rf $(RELEASE_FILES) $(RELEASE_DARWIN_ARM64) + @cp -rf $(RELEASE_FILES) $(RELEASE_WINDOWS_AMD64) + @cd $(RELEASE_LINUX_AMD64)/.. && rm -f *.zip && zip -r $(TARGET)-linux_amd64.zip $(TARGET) && cd - + @cd $(RELEASE_DARWIN_AMD64)/.. && rm -f *.zip && zip -r $(TARGET)-darwin_amd64.zip $(TARGET) && cd - + @cd $(RELEASE_DARWIN_ARM64)/.. && rm -f *.zip && zip -r $(TARGET)-darwin_arm64.zip $(TARGET) && cd - + @cd $(RELEASE_WINDOWS_AMD64)/.. && rm -f *.zip && zip -r $(TARGET)-windows_amd64.zip $(TARGET) && cd - + +.PHONY: linux-amd64 +linux-amd64: + @echo Build paopao-ce [linux-amd64] + @CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -trimpath -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $(RELEASE_LINUX_AMD64)/$(TARGET) + +.PHONY: darwin-amd64 +darwin-amd64: + @echo Build paopao-ce [darwin-amd64] + @CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -trimpath -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $(RELEASE_DARWIN_AMD64)/$(TARGET) + +.PHONY: darwin-arm64 +darwin-arm64: + @echo Build paopao-ce [darwin-arm64] + @CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -trimpath -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $(RELEASE_DARWIN_ARM64)/$(TARGET) + +.PHONY: windows-x64 +windows-x64: + @echo Build paopao-ce [windows-x64] + @CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -trimpath -tags '$(TAGS)' -ldflags '$(LDFLAGS)' -o $(RELEASE_WINDOWS_AMD64)/$(TARGET).exe + clean: @go clean - @find ./dist -type f -exec rm -r {} + - @find ./tmp -type f -exec rm -r {} + + @find ./release -type f -exec rm -r {} + + fmt: @echo Formatting... @go fmt ./global/... @@ -22,14 +69,15 @@ fmt: @go vet -composites=false ./global/... @go vet -composites=false ./internal/... @go vet -composites=false ./pkg/... + test: @go test ./... + help: @echo "make: make" @echo "make run: start api server" - @echo "make build: build executables" - @echo "make build: build executables" + @echo "make build: build executable with debug information" + @echo "make release: build release executables" @echo "make run TAGS='embed': start api server and serve embed web frontend" - @echo "make build TAGS='embed': build executables with embed web frontend" -.EXPORT_ALL_VARIABLES: -GO111MODULE = on + @echo "make build TAGS='embed': build executable with embed web frontend" + @echo "make release TAGS='embed': build release executables with embed web frontend" diff --git a/README.md b/README.md index 4a46ce54..04ec6083 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ PaoPao主要由以下优秀的开源项目/工具构建 #### 后端 -1. 导入项目根目录下的 `paopao.sql` 文件至MySQL数据库 +1. 导入项目根目录下的 `scripts/paopao.sql` 文件至MySQL数据库 2. 拷贝项目根目录下 `config.yaml.sample` 文件至 `config.yaml`,按照注释完成配置编辑 3. 编译后端 编译api服务: diff --git a/build.sh b/build.sh deleted file mode 100644 index f49c00c8..00000000 --- a/build.sh +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -# shellcheck disable=SC2155 -set -e -DIST_PREFIX=${1} -DEBUG_MODE=${2} -TARGET_DIR="dist" -PLATFORMS="darwin/amd64 darwin/arm64 linux/amd64 windows/amd64" - -rm -rf ${TARGET_DIR} -mkdir ${TARGET_DIR} - -for pl in ${PLATFORMS}; do - export CGO_ENABLED=0 - export GOOS=$(echo "${pl}" | cut -d'/' -f1) - export GOARCH=$(echo "${pl}" | cut -d'/' -f2) - export TARGET=${TARGET_DIR}/${DIST_PREFIX}_${GOOS}_${GOARCH} - if [ "${GOOS}" == "windows" ]; then - export TARGET=${TARGET_DIR}/${DIST_PREFIX}_${GOOS}_${GOARCH}.exe - fi - - echo "build => ${TARGET}" - if [ "${DEBUG_MODE}" == "debug" ]; then - go build -trimpath -gcflags "all=-N -l" -o "${TARGET}" -tags "${TAGS}" \ - -ldflags "-X 'main.version=${BUILD_VERSION}' \ - -X 'main.buildDate=${BUILD_DATE}' \ - -X 'main.commitID=${SHA_SHORT}'\ - -w -s" - else - go build -trimpath -o "${TARGET}" -tags "${TAGS}" \ - -ldflags "-X 'main.version=${BUILD_VERSION}' \ - -X 'main.buildDate=${BUILD_DATE}' \ - -X 'main.commitID=${SHA_SHORT}'\ - -w -s" - fi -done diff --git a/scripts/README b/scripts/README new file mode 100644 index 00000000..fddd5ac9 --- /dev/null +++ b/scripts/README @@ -0,0 +1 @@ +All files in subdirectories are templates, do modifications based on your environment first. \ No newline at end of file diff --git a/scripts/launchd/info.paopao.web.plist b/scripts/launchd/info.paopao.web.plist new file mode 100644 index 00000000..d4a2fc87 --- /dev/null +++ b/scripts/launchd/info.paopao.web.plist @@ -0,0 +1,32 @@ + + + + + Label + info.paopao.web + + + UserName + paopao + GroupName + paopao + ProgramArguments + + + + /Users/paopao/app/paopao-ce + + RunAtLoad + + KeepAlive + + + + WorkingDirectory + /Users/paopao/app/ + StandardOutPath + /Users/paopao/app/log/stdout.log + StandardErrorPath + /Users/paopao/app/log/stderr.log + + diff --git a/paopao.sql b/scripts/paopao.sql similarity index 100% rename from paopao.sql rename to scripts/paopao.sql diff --git a/scripts/systemd/paopao.service b/scripts/systemd/paopao.service new file mode 100644 index 00000000..00dff061 --- /dev/null +++ b/scripts/systemd/paopao.service @@ -0,0 +1,17 @@ +[Unit] +Description=paopao-ce +After=syslog.target +After=network.target +After=mariadb.service mysqld.service redis.service + +[Service] +Type=simple +User=paopao +Group=paopao +WorkingDirectory=/home/paopao/app +ExecStart=/home/paopao/app/paopao-ce +Restart=always +Environment=USER=paopao HOME=/home/paopao + +[Install] +WantedBy=multi-user.target