feat: 添加版本号显示和自动构建/删除 Docker 镜像功能

- 添加前端版本号显示(桌面端和移动端)
- 实现 GitHub Actions 自动构建和推送 Docker 镜像
- 实现删除 release 时自动删除对应 Docker 镜像
- 支持版本号格式:v数字.数字.数字 或 v数字.数字.数字-后缀
- 添加版本号管理文档
- 更新 Dockerfile 和部署脚本支持版本号构建参数
This commit is contained in:
WrBug
2025-12-07 16:46:18 +08:00
parent 07d1b50b9b
commit b069e54b89
10 changed files with 499 additions and 9 deletions
+57 -7
View File
@@ -23,7 +23,7 @@ import {
} from '@ant-design/icons'
import type { MenuProps } from 'antd'
import type { ReactNode } from 'react'
import { removeToken } from '../utils'
import { removeToken, getVersionText, getGitHubTagUrl } from '../utils'
import { wsManager } from '../services/websocket'
import Logo from './Logo'
@@ -200,10 +200,33 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
alignItems: 'center',
justifyContent: 'space-between'
}}>
<Logo
size="normal"
darkMode={true}
/>
<div style={{ display: 'flex', alignItems: 'center', gap: '6px' }}>
<Logo
size="normal"
darkMode={true}
/>
<a
href={getGitHubTagUrl()}
target="_blank"
rel="noopener noreferrer"
onClick={(e) => {
const version = getVersionText()
if (version === 'dev') {
e.preventDefault()
}
}}
style={{
color: 'rgba(255, 255, 255, 0.7)',
fontSize: '12px',
fontWeight: 'normal',
textDecoration: 'none',
cursor: getVersionText() === 'dev' ? 'default' : 'pointer'
}}
title={getVersionText() === 'dev' ? '' : '查看版本发布'}
>
v{getVersionText()}
</a>
</div>
<div style={{ display: 'flex', alignItems: 'center', gap: '8px' }}>
<a
href="https://github.com/WrBug/PolyHermes"
@@ -292,9 +315,36 @@ const Layout: React.FC<LayoutProps> = ({ children }) => {
fontSize: '18px',
fontWeight: 'bold',
marginBottom: '12px',
textAlign: 'center'
textAlign: 'center',
display: 'flex',
alignItems: 'flex-end',
justifyContent: 'center',
gap: '6px'
}}>
PolyHermes
<span>PolyHermes</span>
<a
href={getGitHubTagUrl()}
target="_blank"
rel="noopener noreferrer"
onClick={(e) => {
const version = getVersionText()
if (version === 'dev') {
e.preventDefault()
}
}}
style={{
color: 'rgba(255, 255, 255, 0.7)',
fontSize: '12px',
fontWeight: 'normal',
textDecoration: 'none',
cursor: getVersionText() === 'dev' ? 'default' : 'pointer',
lineHeight: '1',
paddingBottom: '2px'
}}
title={getVersionText() === 'dev' ? '' : '查看版本发布'}
>
v{getVersionText()}
</a>
</div>
<div style={{
display: 'flex',