From e7b4917b3da40adc3fd5643155d0deb33628714b Mon Sep 17 00:00:00 2001 From: engigu Date: Mon, 29 Jan 2024 22:00:13 +0800 Subject: [PATCH] feat: support read site version from release tag --- .github/workflows/release.yml | 7 ++ .gitignore | 2 + .release_log | 18 ++++++ main.go | 5 ++ pkg/constant/release_log.go | 117 +++++++--------------------------- pkg/setting/setting.go | 1 + 6 files changed, 55 insertions(+), 95 deletions(-) create mode 100644 .release_log diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3948c4d..f604c98 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -59,6 +59,13 @@ jobs: run: git checkout . working-directory: web/ + - name: Get Release version + id: get_version + run: echo "VERSION=${GITHUB_REF/refs\/tags\//}" >> $GITHUB_OUTPUT + + - name: Update Local Version File + run: echo ${{ steps.get_version.outputs.VERSION }} > .release_version + # More assembly might be required: Docker logins, GPG, etc. It all depends # on your needs. - uses: goreleaser/goreleaser-action@v5 diff --git a/.gitignore b/.gitignore index e9b893f..f83ffad 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,5 @@ go.work /conf/app.ini /runtime .idea/ +.release_version + diff --git a/.release_log b/.release_log new file mode 100644 index 0000000..5e5507f --- /dev/null +++ b/.release_log @@ -0,0 +1,18 @@ +1. 单应用打包 +2. 支持邮件发送 +3. 用户密码设置 +4. 支持用户定时任务清理,更新定时时间 +5. 查看定时清理日志 +6. 单应用的html浏览器自动缓存 +7. gin的日志使用logrus +8. 支持异步发送 +9. 支持钉钉消息推送 +10. 支持自定义的webhook推送 +11. 支持自动初始化表,以及初始化账号 +12. 调整日志格式 +13. 支持更多的api接入示例 +14. 支持发送实例的暂停与开启 +15. 支持企业微信消息发送 +16. 支持站点信息自定义 +17. 支持数据统计展示 +18. 支持docker部署,从环境变量启动 \ No newline at end of file diff --git a/main.go b/main.go index 7bfd06b..3d69cae 100644 --- a/main.go +++ b/main.go @@ -7,6 +7,7 @@ import ( "github.com/sirupsen/logrus" "message-nest/migrate" "message-nest/models" + "message-nest/pkg/constant" "message-nest/pkg/logging" "message-nest/pkg/setting" "message-nest/routers" @@ -18,9 +19,13 @@ import ( var ( //go:embed web/dist/* f embed.FS + + //go:embed .release* + rf embed.FS ) func init() { + constant.InitReleaseInfo(rf) setting.Setup() logging.Setup() migrate.Setup() diff --git a/pkg/constant/release_log.go b/pkg/constant/release_log.go index 5e48af0..8a96c8a 100644 --- a/pkg/constant/release_log.go +++ b/pkg/constant/release_log.go @@ -1,102 +1,29 @@ package constant -import "strings" +import ( + "embed" + "io/fs" + "log" + "strings" +) var LatestVersion = map[string]string{} -//var V1Version = "v0.0.1" -//var V1VersionDesc = ` -//1. 单应用打包 -//2. 支持邮件发送 -//3. 用户密码设置 -//4. 支持用户定时任务清理,更新定时时间 -//5. 查看定时清理日志 -//6. 单应用的html浏览器自动缓存 -//7. gin的日志使用logrus -//8. 支持异步发送 -//` -// -//var V2Version = "v0.0.2" -//var V2VersionDesc = ` -//1. 单应用打包 -//2. 支持邮件发送 -//3. 用户密码设置 -//4. 支持用户定时任务清理,更新定时时间 -//5. 查看定时清理日志 -//6. 单应用的html浏览器自动缓存 -//7. gin的日志使用logrus -//8. 支持异步发送 -//9. 支持钉钉消息推送 -//` -// -//var V3Version = "v0.0.3" -//var V3VersionDesc = ` -//1. 单应用打包 -//2. 支持邮件发送 -//3. 用户密码设置 -//4. 支持用户定时任务清理,更新定时时间 -//5. 查看定时清理日志 -//6. 单应用的html浏览器自动缓存 -//7. gin的日志使用logrus -//8. 支持异步发送 -//9. 支持钉钉消息推送 -//10. 支持自定义的webhook推送 -//` -// -//var V4Version = "v0.0.4" -//var V4VersionDesc = ` -//1. 单应用打包 -//2. 支持邮件发送 -//3. 用户密码设置 -//4. 支持用户定时任务清理,更新定时时间 -//5. 查看定时清理日志 -//6. 单应用的html浏览器自动缓存 -//7. gin的日志使用logrus -//8. 支持异步发送 -//9. 支持钉钉消息推送 -//10. 支持自定义的webhook推送 -//11. 支持自动初始化表,以及初始化账号 -//` +func readFileContent(path string, f embed.FS) string { + data, err := fs.ReadFile(f, path) + if err != nil { + return "" + } + return string(data) +} -//var V5Version = "v0.0.5" -//var V5VersionDesc = ` -//1. 单应用打包 -//2. 支持邮件发送 -//3. 用户密码设置 -//4. 支持用户定时任务清理,更新定时时间 -//5. 查看定时清理日志 -//6. 单应用的html浏览器自动缓存 -//7. gin的日志使用logrus -//8. 支持异步发送 -//9. 支持钉钉消息推送 -//10. 支持自定义的webhook推送 -//11. 支持自动初始化表,以及初始化账号 -//12. 调整日志格式 -//13. 支持更多的api接入示例 -//` - -var LatestVersionS = "v0.1.0" -var LatestVersionDesc = ` -1. 单应用打包 -2. 支持邮件发送 -3. 用户密码设置 -4. 支持用户定时任务清理,更新定时时间 -5. 查看定时清理日志 -6. 单应用的html浏览器自动缓存 -7. gin的日志使用logrus -8. 支持异步发送 -9. 支持钉钉消息推送 -10. 支持自定义的webhook推送 -11. 支持自动初始化表,以及初始化账号 -12. 调整日志格式 -13. 支持更多的api接入示例 -14. 支持发送实例的暂停与开启 -15. 支持企业微信消息发送 -16. 支持站点信息自定义 -17. 支持数据统计展示 -` - -func init() { - LatestVersion["version"] = LatestVersionS - LatestVersion["desc"] = strings.TrimSpace(LatestVersionDesc) +func InitReleaseInfo(releaseInfo embed.FS) { + version := strings.Trim(readFileContent(".release_version", releaseInfo), "\n\r") + if version == "" { + version = "default" + } + desc := strings.Trim(readFileContent(".release_log", releaseInfo), "\n\r") + log.Printf("[message-nest] release version: %s", version) + LatestVersion["version"] = version + LatestVersion["desc"] = desc } diff --git a/pkg/setting/setting.go b/pkg/setting/setting.go index 1197c33..95b9868 100644 --- a/pkg/setting/setting.go +++ b/pkg/setting/setting.go @@ -71,6 +71,7 @@ func Setup() { ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second ServerSetting.WriteTimeout = ServerSetting.WriteTimeout * time.Second + } // mapTo map section