功能开发完成
This commit is contained in:
188
scripts/BUILD.md
Normal file
188
scripts/BUILD.md
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
# GitCodeStatic 打包脚本说明文档
|
||||||
|
|
||||||
|
## 打包脚本概述
|
||||||
|
|
||||||
|
本项目提供了多个构建脚本,支持在不同平台下构建和打包 GitCodeStatic 项目:
|
||||||
|
|
||||||
|
- `build-all.sh` - Unix/Linux/macOS 下的全平台构建脚本
|
||||||
|
- `build-all.bat` - Windows 下的全平台构建脚本
|
||||||
|
- `build.ps1` - Windows PowerShell 构建脚本(单平台)
|
||||||
|
- `build-linux.sh` - Linux 专用构建脚本
|
||||||
|
- `build-macos.sh` - macOS 专用构建脚本
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
### 快速构建全平台包
|
||||||
|
|
||||||
|
**Linux/macOS:**
|
||||||
|
```bash
|
||||||
|
cd scripts
|
||||||
|
chmod +x build-all.sh
|
||||||
|
./build-all.sh [版本号] [输出目录]
|
||||||
|
```
|
||||||
|
|
||||||
|
**Windows:**
|
||||||
|
```batch
|
||||||
|
cd scripts
|
||||||
|
build-all.bat [版本号] [输出目录]
|
||||||
|
```
|
||||||
|
|
||||||
|
### 参数说明
|
||||||
|
|
||||||
|
- `版本号`: 可选,默认为 "latest"
|
||||||
|
- `输出目录`: 可选,默认为 "dist"
|
||||||
|
|
||||||
|
### 示例
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 使用默认参数构建
|
||||||
|
./build-all.sh
|
||||||
|
|
||||||
|
# 指定版本号
|
||||||
|
./build-all.sh v1.2.3
|
||||||
|
|
||||||
|
# 指定版本号和输出目录
|
||||||
|
./build-all.sh v1.2.3 releases
|
||||||
|
```
|
||||||
|
|
||||||
|
## 支持的平台
|
||||||
|
|
||||||
|
脚本会为以下平台构建二进制文件和安装包:
|
||||||
|
|
||||||
|
| 平台 | 架构 | 二进制文件 | 压缩包格式 |
|
||||||
|
|------|------|-----------|-----------|
|
||||||
|
| Windows | amd64 | gitcodestatic.exe | .zip |
|
||||||
|
| Linux | amd64 | gitcodestatic | .tar.gz |
|
||||||
|
| Linux | arm64 | gitcodestatic | .tar.gz |
|
||||||
|
| macOS | amd64 | gitcodestatic | .tar.gz |
|
||||||
|
| macOS | arm64 | gitcodestatic | .tar.gz |
|
||||||
|
|
||||||
|
## 输出结构
|
||||||
|
|
||||||
|
构建完成后,每个平台的包都包含以下文件:
|
||||||
|
|
||||||
|
```
|
||||||
|
gitcodestatic-{平台}-{架构}-{版本}/
|
||||||
|
├── gitcodestatic[.exe] # 主程序
|
||||||
|
├── web/ # Web 前端文件
|
||||||
|
│ ├── index.html
|
||||||
|
│ └── static/
|
||||||
|
├── configs/ # 配置文件
|
||||||
|
│ └── config.yaml
|
||||||
|
├── README.md # 项目说明
|
||||||
|
├── QUICKSTART.md # 快速开始指南
|
||||||
|
├── start.[sh|bat] # 启动脚本
|
||||||
|
└── [使用说明.txt|README_{平台}.md] # 平台特定说明
|
||||||
|
```
|
||||||
|
|
||||||
|
## 启动脚本
|
||||||
|
|
||||||
|
每个包都包含平台特定的启动脚本:
|
||||||
|
|
||||||
|
**Windows (`start.bat`):**
|
||||||
|
```batch
|
||||||
|
@echo off
|
||||||
|
echo Starting GitCodeStatic Server...
|
||||||
|
echo Web UI: http://localhost:8080
|
||||||
|
gitcodestatic.exe
|
||||||
|
pause
|
||||||
|
```
|
||||||
|
|
||||||
|
**Unix/Linux (`start.sh`):**
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
echo "Starting GitCodeStatic Server..."
|
||||||
|
echo "Web UI: http://localhost:8080"
|
||||||
|
chmod +x "./gitcodestatic"
|
||||||
|
./gitcodestatic
|
||||||
|
```
|
||||||
|
|
||||||
|
## 特殊说明
|
||||||
|
|
||||||
|
### CGO 处理
|
||||||
|
|
||||||
|
- **Windows amd64**: 启用 CGO (CGO_ENABLED=1) 用于 SQLite 支持
|
||||||
|
- **其他平台**: 禁用 CGO (CGO_ENABLED=0) 以简化交叉编译
|
||||||
|
|
||||||
|
### 压缩格式
|
||||||
|
|
||||||
|
- **Windows**: 使用 ZIP 格式压缩
|
||||||
|
- **Unix/Linux/macOS**: 使用 tar.gz 格式压缩
|
||||||
|
|
||||||
|
### 兼容性
|
||||||
|
|
||||||
|
- 构建脚本自动检测可用的压缩工具
|
||||||
|
- 如果系统缺少特定工具,会尝试使用替代方案
|
||||||
|
|
||||||
|
## 前置要求
|
||||||
|
|
||||||
|
### 必需:
|
||||||
|
- Go 1.21+
|
||||||
|
- Git (用于版本信息)
|
||||||
|
|
||||||
|
### 可选(用于压缩):
|
||||||
|
- **Linux/macOS**: tar, gzip
|
||||||
|
- **Windows**: PowerShell (内置压缩) 或 zip 命令
|
||||||
|
|
||||||
|
## 故障排除
|
||||||
|
|
||||||
|
### 常见问题
|
||||||
|
|
||||||
|
1. **权限错误**
|
||||||
|
```bash
|
||||||
|
chmod +x scripts/*.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Go 模块错误**
|
||||||
|
```bash
|
||||||
|
go mod tidy
|
||||||
|
go mod download
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **交叉编译失败**
|
||||||
|
- 确保 Go 版本 >= 1.21
|
||||||
|
- 检查网络连接(可能需要下载工具链)
|
||||||
|
|
||||||
|
4. **压缩失败**
|
||||||
|
- Windows: 确保 PowerShell 可用
|
||||||
|
- Unix: 安装 tar 和 gzip
|
||||||
|
|
||||||
|
### 调试模式
|
||||||
|
|
||||||
|
设置环境变量启用详细输出:
|
||||||
|
```bash
|
||||||
|
export GOOS_DEBUG=1
|
||||||
|
./build-all.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 自定义构建
|
||||||
|
|
||||||
|
如需自定义构建过程,可以修改脚本中的以下部分:
|
||||||
|
|
||||||
|
1. **平台列表**: 编辑 `PLATFORMS` 数组
|
||||||
|
2. **构建标志**: 修改 `go build -ldflags` 参数
|
||||||
|
3. **包含文件**: 调整文件复制逻辑
|
||||||
|
4. **压缩设置**: 更改压缩格式或参数
|
||||||
|
|
||||||
|
## 部署建议
|
||||||
|
|
||||||
|
构建完成后的包可以直接部署到目标服务器:
|
||||||
|
|
||||||
|
1. **解压包文件**到目标目录
|
||||||
|
2. **运行启动脚本**或直接执行二进制文件
|
||||||
|
3. **访问 Web 界面**: http://localhost:8080
|
||||||
|
4. **查看 API 文档**: http://localhost:8080/swagger/
|
||||||
|
|
||||||
|
## 版本管理
|
||||||
|
|
||||||
|
脚本会在构建时自动注入版本信息:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
go build -ldflags "-X main.Version=v1.2.3"
|
||||||
|
```
|
||||||
|
|
||||||
|
版本号可通过程序参数或环境变量查看:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gitcodestatic --version
|
||||||
|
```
|
||||||
218
scripts/build-all.bat
Normal file
218
scripts/build-all.bat
Normal file
@@ -0,0 +1,218 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal enabledelayedexpansion
|
||||||
|
|
||||||
|
REM GitCodeStatic Windows 全平台构建脚本
|
||||||
|
REM 使用 PowerShell 的交叉编译功能构建所有平台的包
|
||||||
|
|
||||||
|
set "VERSION=%1"
|
||||||
|
set "OUTPUT_DIR=%2"
|
||||||
|
|
||||||
|
if "%VERSION%"=="" set "VERSION=latest"
|
||||||
|
if "%OUTPUT_DIR%"=="" set "OUTPUT_DIR=dist"
|
||||||
|
|
||||||
|
echo 开始全平台构建 GitCodeStatic v%VERSION%...
|
||||||
|
|
||||||
|
REM 设置变量
|
||||||
|
set "PROJECT_ROOT=%~dp0\.."
|
||||||
|
set "OUTPUT_PATH=%PROJECT_ROOT%\%OUTPUT_DIR%"
|
||||||
|
|
||||||
|
REM 清理输出目录
|
||||||
|
if exist "%OUTPUT_PATH%" (
|
||||||
|
echo 清理旧的输出目录...
|
||||||
|
rmdir /s /q "%OUTPUT_PATH%"
|
||||||
|
)
|
||||||
|
mkdir "%OUTPUT_PATH%"
|
||||||
|
|
||||||
|
REM 平台列表
|
||||||
|
set PLATFORMS=windows/amd64 linux/amd64 darwin/amd64 linux/arm64 darwin/arm64
|
||||||
|
|
||||||
|
cd /d "%PROJECT_ROOT%"
|
||||||
|
|
||||||
|
for %%P in (%PLATFORMS%) do (
|
||||||
|
echo.
|
||||||
|
echo 构建 %%P...
|
||||||
|
|
||||||
|
REM 解析平台字符串
|
||||||
|
for /f "tokens=1,2 delims=/" %%A in ("%%P") do (
|
||||||
|
set "GOOS=%%A"
|
||||||
|
set "GOARCH=%%B"
|
||||||
|
)
|
||||||
|
|
||||||
|
REM 设置输出文件名
|
||||||
|
set "BINARY_NAME=gitcodestatic"
|
||||||
|
if "!GOOS!"=="windows" set "BINARY_NAME=gitcodestatic.exe"
|
||||||
|
|
||||||
|
REM 设置包名
|
||||||
|
set "PACKAGE_NAME=gitcodestatic-!GOOS!-!GOARCH!-!VERSION!"
|
||||||
|
set "PACKAGE_PATH=!OUTPUT_PATH!\!PACKAGE_NAME!"
|
||||||
|
|
||||||
|
mkdir "!PACKAGE_PATH!"
|
||||||
|
|
||||||
|
REM 设置构建环境
|
||||||
|
set "GOOS=!GOOS!"
|
||||||
|
set "GOARCH=!GOARCH!"
|
||||||
|
set "CGO_ENABLED=1"
|
||||||
|
|
||||||
|
REM ARM64 和交叉编译时禁用 CGO
|
||||||
|
if "!GOARCH!"=="arm64" set "CGO_ENABLED=0"
|
||||||
|
if not "!GOOS!"=="windows" set "CGO_ENABLED=0"
|
||||||
|
|
||||||
|
echo 构建二进制文件...
|
||||||
|
go build -ldflags "-s -w -X main.Version=!VERSION!" -o "!PACKAGE_PATH!\!BINARY_NAME!" cmd\server\main.go
|
||||||
|
|
||||||
|
if !errorlevel! neq 0 (
|
||||||
|
echo 构建 %%P 失败!
|
||||||
|
continue
|
||||||
|
)
|
||||||
|
|
||||||
|
echo 复制文件...
|
||||||
|
|
||||||
|
REM 复制通用文件
|
||||||
|
xcopy /E /I /Y web "!PACKAGE_PATH!\web\" > nul
|
||||||
|
xcopy /E /I /Y configs "!PACKAGE_PATH!\configs\" > nul
|
||||||
|
copy /Y README.md "!PACKAGE_PATH!\" > nul
|
||||||
|
copy /Y QUICKSTART.md "!PACKAGE_PATH!\" > nul
|
||||||
|
|
||||||
|
REM 根据平台创建特定的启动脚本
|
||||||
|
if "!GOOS!"=="windows" (
|
||||||
|
REM Windows 启动脚本
|
||||||
|
(
|
||||||
|
echo @echo off
|
||||||
|
echo echo Starting GitCodeStatic Server...
|
||||||
|
echo echo.
|
||||||
|
echo echo Web UI: http://localhost:8080
|
||||||
|
echo echo API Docs: http://localhost:8080/swagger/
|
||||||
|
echo echo.
|
||||||
|
echo gitcodestatic.exe
|
||||||
|
echo pause
|
||||||
|
) > "!PACKAGE_PATH!\start.bat"
|
||||||
|
|
||||||
|
REM Windows 配置说明
|
||||||
|
(
|
||||||
|
echo GitCodeStatic Windows 版本
|
||||||
|
echo.
|
||||||
|
echo ## 使用方法
|
||||||
|
echo 1. 双击 start.bat 启动服务器
|
||||||
|
echo 2. 打开浏览器访问 http://localhost:8080
|
||||||
|
echo 3. 查看 API 文档: http://localhost:8080/swagger/
|
||||||
|
echo.
|
||||||
|
echo ## 配置文件
|
||||||
|
echo - configs/config.yaml: 主配置文件
|
||||||
|
echo.
|
||||||
|
echo ## 停止服务
|
||||||
|
echo - 在命令窗口中按 Ctrl+C 停止服务器
|
||||||
|
) > "!PACKAGE_PATH!\使用说明.txt"
|
||||||
|
|
||||||
|
) else (
|
||||||
|
REM Unix 启动脚本
|
||||||
|
(
|
||||||
|
echo #!/bin/bash
|
||||||
|
echo echo "Starting GitCodeStatic Server..."
|
||||||
|
echo echo ""
|
||||||
|
echo echo "Web UI: http://localhost:8080"
|
||||||
|
echo echo "API Docs: http://localhost:8080/swagger/"
|
||||||
|
echo echo ""
|
||||||
|
echo echo "Press Ctrl+C to stop the server"
|
||||||
|
echo echo ""
|
||||||
|
echo.
|
||||||
|
echo chmod +x "./gitcodestatic"
|
||||||
|
echo ./gitcodestatic
|
||||||
|
) > "!PACKAGE_PATH!\start.sh"
|
||||||
|
|
||||||
|
REM Unix 说明文件
|
||||||
|
(
|
||||||
|
echo # GitCodeStatic !GOOS! 版本
|
||||||
|
echo.
|
||||||
|
echo ## 快速启动
|
||||||
|
echo ```bash
|
||||||
|
echo ./start.sh
|
||||||
|
echo # 或
|
||||||
|
echo ./gitcodestatic
|
||||||
|
echo ```
|
||||||
|
echo.
|
||||||
|
echo ## 配置文件
|
||||||
|
echo - configs/config.yaml: 主配置文件
|
||||||
|
echo.
|
||||||
|
echo ## 访问地址
|
||||||
|
echo - Web UI: http://localhost:8080
|
||||||
|
echo - API 文档: http://localhost:8080/swagger/
|
||||||
|
echo.
|
||||||
|
echo ## 停止服务
|
||||||
|
echo 按 Ctrl+C 停止服务器
|
||||||
|
) > "!PACKAGE_PATH!\README_!GOOS!.md"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo 创建压缩包...
|
||||||
|
cd /d "!OUTPUT_PATH!"
|
||||||
|
|
||||||
|
if "!GOOS!"=="windows" (
|
||||||
|
REM Windows 使用内置压缩
|
||||||
|
powershell -command "Compress-Archive -Path '!PACKAGE_NAME!' -DestinationPath '!PACKAGE_NAME!.zip' -Force" 2>nul
|
||||||
|
if !errorlevel! equ 0 (
|
||||||
|
echo ✓ 已创建 !PACKAGE_NAME!.zip
|
||||||
|
) else (
|
||||||
|
echo ⚠ 创建压缩包失败
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
REM Unix 平台压缩包(如果有 tar 命令)
|
||||||
|
where tar >nul 2>nul
|
||||||
|
if !errorlevel! equ 0 (
|
||||||
|
tar -czf "!PACKAGE_NAME!.tar.gz" "!PACKAGE_NAME!"
|
||||||
|
if !errorlevel! equ 0 (
|
||||||
|
echo ✓ 已创建 !PACKAGE_NAME!.tar.gz
|
||||||
|
) else (
|
||||||
|
echo ⚠ 创建 tar.gz 失败
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
powershell -command "Compress-Archive -Path '!PACKAGE_NAME!' -DestinationPath '!PACKAGE_NAME!.zip' -Force" 2>nul
|
||||||
|
if !errorlevel! equ 0 (
|
||||||
|
echo ✓ 已创建 !PACKAGE_NAME!.zip
|
||||||
|
) else (
|
||||||
|
echo ⚠ 创建压缩包失败
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
cd /d "%PROJECT_ROOT%"
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ===================================
|
||||||
|
echo 全平台构建完成!
|
||||||
|
echo ===================================
|
||||||
|
echo 输出目录: %OUTPUT_PATH%
|
||||||
|
echo.
|
||||||
|
echo 构建的平台:
|
||||||
|
|
||||||
|
cd /d "%OUTPUT_PATH%"
|
||||||
|
|
||||||
|
REM 显示构建结果
|
||||||
|
for %%P in (%PLATFORMS%) do (
|
||||||
|
for /f "tokens=1,2 delims=/" %%A in ("%%P") do (
|
||||||
|
set "GOOS=%%A"
|
||||||
|
set "GOARCH=%%B"
|
||||||
|
set "PACKAGE_NAME=gitcodestatic-!GOOS!-!GOARCH!-!VERSION!"
|
||||||
|
|
||||||
|
if "!GOOS!"=="windows" (
|
||||||
|
set "ARCHIVE=!PACKAGE_NAME!.zip"
|
||||||
|
) else (
|
||||||
|
set "ARCHIVE=!PACKAGE_NAME!.tar.gz"
|
||||||
|
if not exist "!ARCHIVE!" set "ARCHIVE=!PACKAGE_NAME!.zip"
|
||||||
|
)
|
||||||
|
|
||||||
|
if exist "!ARCHIVE!" (
|
||||||
|
for %%F in ("!ARCHIVE!") do echo ✓ !GOOS!/!GOARCH! - !ARCHIVE! ^(%%~zF 字节^)
|
||||||
|
) else (
|
||||||
|
echo ✗ !GOOS!/!GOARCH! - 构建失败
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
echo.
|
||||||
|
|
||||||
|
REM 统计文件
|
||||||
|
set /a COUNT=0
|
||||||
|
for %%F in (*.zip *.tar.gz) do set /a COUNT+=1
|
||||||
|
echo 总文件数: !COUNT!
|
||||||
|
|
||||||
|
pause
|
||||||
200
scripts/build-all.sh
Normal file
200
scripts/build-all.sh
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# GitCodeStatic 全平台构建脚本
|
||||||
|
# 在支持交叉编译的环境中构建所有平台的包
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
VERSION=${1:-"latest"}
|
||||||
|
OUTPUT_DIR=${2:-"dist"}
|
||||||
|
|
||||||
|
echo "开始全平台构建 GitCodeStatic v$VERSION..."
|
||||||
|
|
||||||
|
# 设置变量
|
||||||
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
OUTPUT_PATH="$PROJECT_ROOT/$OUTPUT_DIR"
|
||||||
|
|
||||||
|
# 清理输出目录
|
||||||
|
if [ -d "$OUTPUT_PATH" ]; then
|
||||||
|
echo "清理旧的输出目录..."
|
||||||
|
rm -rf "$OUTPUT_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$OUTPUT_PATH"
|
||||||
|
|
||||||
|
# 平台列表: OS/ARCH
|
||||||
|
PLATFORMS=(
|
||||||
|
"windows/amd64"
|
||||||
|
"linux/amd64"
|
||||||
|
"darwin/amd64"
|
||||||
|
"linux/arm64"
|
||||||
|
"darwin/arm64"
|
||||||
|
)
|
||||||
|
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
for platform in "${PLATFORMS[@]}"; do
|
||||||
|
IFS='/' read -r GOOS GOARCH <<< "$platform"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "构建 $GOOS/$GOARCH..."
|
||||||
|
|
||||||
|
# 设置输出文件名
|
||||||
|
BINARY_NAME="gitcodestatic"
|
||||||
|
if [ "$GOOS" = "windows" ]; then
|
||||||
|
BINARY_NAME="gitcodestatic.exe"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 设置包名
|
||||||
|
PACKAGE_NAME="gitcodestatic-$GOOS-$GOARCH-$VERSION"
|
||||||
|
PACKAGE_PATH="$OUTPUT_PATH/$PACKAGE_NAME"
|
||||||
|
|
||||||
|
mkdir -p "$PACKAGE_PATH"
|
||||||
|
|
||||||
|
# 设置构建环境
|
||||||
|
export GOOS="$GOOS"
|
||||||
|
export GOARCH="$GOARCH"
|
||||||
|
export CGO_ENABLED=1
|
||||||
|
|
||||||
|
# 特殊处理:ARM64 和交叉编译时禁用 CGO
|
||||||
|
if [ "$GOARCH" = "arm64" ] || [ "$(uname)" != "$(echo $GOOS | tr '[:lower:]' '[:upper:]')" ]; then
|
||||||
|
export CGO_ENABLED=0
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo " 构建二进制文件..."
|
||||||
|
go build -ldflags "-s -w -X main.Version=$VERSION" -o "$PACKAGE_PATH/$BINARY_NAME" cmd/server/main.go
|
||||||
|
|
||||||
|
echo " 复制文件..."
|
||||||
|
|
||||||
|
# 复制通用文件
|
||||||
|
cp -r web "$PACKAGE_PATH/"
|
||||||
|
cp -r configs "$PACKAGE_PATH/"
|
||||||
|
cp README.md "$PACKAGE_PATH/"
|
||||||
|
cp QUICKSTART.md "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 根据平台创建特定的启动脚本
|
||||||
|
if [ "$GOOS" = "windows" ]; then
|
||||||
|
# Windows 启动脚本
|
||||||
|
cat > "$PACKAGE_PATH/start.bat" << 'EOF'
|
||||||
|
@echo off
|
||||||
|
echo Starting GitCodeStatic Server...
|
||||||
|
echo.
|
||||||
|
echo Web UI: http://localhost:8080
|
||||||
|
echo API Docs: http://localhost:8080/swagger/
|
||||||
|
echo.
|
||||||
|
gitcodestatic.exe
|
||||||
|
pause
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Windows 配置说明
|
||||||
|
cat > "$PACKAGE_PATH/使用说明.txt" << 'EOF'
|
||||||
|
GitCodeStatic Windows 版本
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
1. 双击 start.bat 启动服务器
|
||||||
|
2. 打开浏览器访问 http://localhost:8080
|
||||||
|
3. 查看 API 文档: http://localhost:8080/swagger/
|
||||||
|
|
||||||
|
## 配置文件
|
||||||
|
- configs/config.yaml: 主配置文件
|
||||||
|
|
||||||
|
## 停止服务
|
||||||
|
- 在命令窗口中按 Ctrl+C 停止服务器
|
||||||
|
EOF
|
||||||
|
|
||||||
|
else
|
||||||
|
# Unix 启动脚本
|
||||||
|
cat > "$PACKAGE_PATH/start.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
echo "Starting GitCodeStatic Server..."
|
||||||
|
echo ""
|
||||||
|
echo "Web UI: http://localhost:8080"
|
||||||
|
echo "API Docs: http://localhost:8080/swagger/"
|
||||||
|
echo ""
|
||||||
|
echo "Press Ctrl+C to stop the server"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
chmod +x "./gitcodestatic"
|
||||||
|
./gitcodestatic
|
||||||
|
EOF
|
||||||
|
chmod +x "$PACKAGE_PATH/start.sh"
|
||||||
|
|
||||||
|
# Unix 说明文件
|
||||||
|
cat > "$PACKAGE_PATH/README_$GOOS.md" << EOF
|
||||||
|
# GitCodeStatic $GOOS 版本
|
||||||
|
|
||||||
|
## 快速启动
|
||||||
|
\`\`\`bash
|
||||||
|
./start.sh
|
||||||
|
# 或
|
||||||
|
./gitcodestatic
|
||||||
|
\`\`\`
|
||||||
|
|
||||||
|
## 配置文件
|
||||||
|
- configs/config.yaml: 主配置文件
|
||||||
|
|
||||||
|
## 访问地址
|
||||||
|
- Web UI: http://localhost:8080
|
||||||
|
- API 文档: http://localhost:8080/swagger/
|
||||||
|
|
||||||
|
## 停止服务
|
||||||
|
按 Ctrl+C 停止服务器
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 设置可执行权限
|
||||||
|
chmod +x "$PACKAGE_PATH/$BINARY_NAME"
|
||||||
|
|
||||||
|
# 创建压缩包
|
||||||
|
echo " 创建压缩包..."
|
||||||
|
cd "$OUTPUT_PATH"
|
||||||
|
|
||||||
|
if [ "$GOOS" = "windows" ]; then
|
||||||
|
# Windows 使用 zip
|
||||||
|
if command -v zip >/dev/null 2>&1; then
|
||||||
|
zip -r "$PACKAGE_NAME.zip" "$PACKAGE_NAME/" >/dev/null
|
||||||
|
echo " ✓ 已创建 $PACKAGE_NAME.zip"
|
||||||
|
else
|
||||||
|
echo " ⚠ 未找到 zip 命令,跳过压缩"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
# Unix 使用 tar.gz
|
||||||
|
tar -czf "$PACKAGE_NAME.tar.gz" "$PACKAGE_NAME"
|
||||||
|
echo " ✓ 已创建 $PACKAGE_NAME.tar.gz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "==================================="
|
||||||
|
echo "全平台构建完成!"
|
||||||
|
echo "==================================="
|
||||||
|
echo "输出目录: $OUTPUT_PATH"
|
||||||
|
echo ""
|
||||||
|
echo "构建的平台:"
|
||||||
|
|
||||||
|
# 显示构建结果
|
||||||
|
cd "$OUTPUT_PATH"
|
||||||
|
for platform in "${PLATFORMS[@]}"; do
|
||||||
|
IFS='/' read -r GOOS GOARCH <<< "$platform"
|
||||||
|
PACKAGE_NAME="gitcodestatic-$GOOS-$GOARCH-$VERSION"
|
||||||
|
|
||||||
|
if [ "$GOOS" = "windows" ]; then
|
||||||
|
ARCHIVE="$PACKAGE_NAME.zip"
|
||||||
|
else
|
||||||
|
ARCHIVE="$PACKAGE_NAME.tar.gz"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -f "$ARCHIVE" ]; then
|
||||||
|
SIZE=$(du -h "$ARCHIVE" | cut -f1)
|
||||||
|
echo " ✓ $GOOS/$GOARCH - $ARCHIVE ($SIZE)"
|
||||||
|
else
|
||||||
|
echo " ✗ $GOOS/$GOARCH - 构建失败"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "总文件数: $(ls -1 *.tar.gz *.zip 2>/dev/null | wc -l)"
|
||||||
|
TOTAL_SIZE=$(du -sh . | cut -f1)
|
||||||
|
echo "总大小: $TOTAL_SIZE"
|
||||||
204
scripts/build-linux.sh
Normal file
204
scripts/build-linux.sh
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# GitCodeStatic Linux 打包脚本
|
||||||
|
# Bash 脚本用于在 Linux 平台构建和打包
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
VERSION=${1:-"latest"}
|
||||||
|
OUTPUT_DIR=${2:-"dist"}
|
||||||
|
|
||||||
|
echo "开始构建 GitCodeStatic for Linux..."
|
||||||
|
|
||||||
|
# 设置变量
|
||||||
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
BINARY_NAME="gitcodestatic"
|
||||||
|
PACKAGE_NAME="gitcodestatic-linux-$VERSION"
|
||||||
|
OUTPUT_PATH="$PROJECT_ROOT/$OUTPUT_DIR"
|
||||||
|
PACKAGE_PATH="$OUTPUT_PATH/$PACKAGE_NAME"
|
||||||
|
|
||||||
|
# 清理输出目录
|
||||||
|
if [ -d "$PACKAGE_PATH" ]; then
|
||||||
|
echo "清理旧的输出目录..."
|
||||||
|
rm -rf "$PACKAGE_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建输出目录
|
||||||
|
mkdir -p "$PACKAGE_PATH"
|
||||||
|
|
||||||
|
# 设置构建环境
|
||||||
|
export GOOS=linux
|
||||||
|
export GOARCH=amd64
|
||||||
|
export CGO_ENABLED=1
|
||||||
|
|
||||||
|
echo "构建 Go 二进制文件..."
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
# 构建二进制文件
|
||||||
|
go build -ldflags "-s -w -X main.Version=$VERSION" -o "$PACKAGE_PATH/$BINARY_NAME" cmd/server/main.go
|
||||||
|
|
||||||
|
echo "复制必需的文件..."
|
||||||
|
|
||||||
|
# 复制 web 静态文件
|
||||||
|
cp -r web "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 复制配置文件
|
||||||
|
cp -r configs "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 复制文档文件
|
||||||
|
cp README.md "$PACKAGE_PATH/"
|
||||||
|
cp QUICKSTART.md "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 创建启动脚本
|
||||||
|
cat > "$PACKAGE_PATH/start.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Starting GitCodeStatic Server..."
|
||||||
|
echo ""
|
||||||
|
echo "Web UI: http://localhost:8080"
|
||||||
|
echo "API Docs: http://localhost:8080/swagger/"
|
||||||
|
echo ""
|
||||||
|
echo "Press Ctrl+C to stop the server"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 设置可执行权限
|
||||||
|
chmod +x "./gitcodestatic"
|
||||||
|
|
||||||
|
# 启动服务器
|
||||||
|
./gitcodestatic
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$PACKAGE_PATH/start.sh"
|
||||||
|
|
||||||
|
# 创建系统服务文件
|
||||||
|
cat > "$PACKAGE_PATH/gitcodestatic.service" << EOF
|
||||||
|
[Unit]
|
||||||
|
Description=GitCodeStatic Git Repository Statistics Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=gitcodestatic
|
||||||
|
WorkingDirectory=/opt/gitcodestatic
|
||||||
|
ExecStart=/opt/gitcodestatic/gitcodestatic
|
||||||
|
Restart=always
|
||||||
|
RestartSec=10
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建安装脚本
|
||||||
|
cat > "$PACKAGE_PATH/install.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# GitCodeStatic Linux 安装脚本
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "请使用 sudo 运行此安装脚本"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "安装 GitCodeStatic..."
|
||||||
|
|
||||||
|
# 创建用户
|
||||||
|
if ! id "gitcodestatic" &>/dev/null; then
|
||||||
|
echo "创建 gitcodestatic 用户..."
|
||||||
|
useradd -r -s /bin/false gitcodestatic
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建安装目录
|
||||||
|
INSTALL_DIR="/opt/gitcodestatic"
|
||||||
|
mkdir -p "$INSTALL_DIR"
|
||||||
|
|
||||||
|
# 复制文件
|
||||||
|
echo "复制文件到 $INSTALL_DIR..."
|
||||||
|
cp -r ./* "$INSTALL_DIR/"
|
||||||
|
|
||||||
|
# 设置权限
|
||||||
|
chown -R gitcodestatic:gitcodestatic "$INSTALL_DIR"
|
||||||
|
chmod +x "$INSTALL_DIR/gitcodestatic"
|
||||||
|
|
||||||
|
# 安装系统服务
|
||||||
|
echo "安装系统服务..."
|
||||||
|
cp "$INSTALL_DIR/gitcodestatic.service" /etc/systemd/system/
|
||||||
|
systemctl daemon-reload
|
||||||
|
|
||||||
|
echo "安装完成!"
|
||||||
|
echo ""
|
||||||
|
echo "使用以下命令管理服务:"
|
||||||
|
echo " 启动服务: sudo systemctl start gitcodestatic"
|
||||||
|
echo " 停止服务: sudo systemctl stop gitcodestatic"
|
||||||
|
echo " 开机自启: sudo systemctl enable gitcodestatic"
|
||||||
|
echo " 查看状态: sudo systemctl status gitcodestatic"
|
||||||
|
echo ""
|
||||||
|
echo "服务将在 http://localhost:8080 上运行"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$PACKAGE_PATH/install.sh"
|
||||||
|
|
||||||
|
# 创建配置说明
|
||||||
|
cat > "$PACKAGE_PATH/README_Linux.md" << 'EOF'
|
||||||
|
# GitCodeStatic Linux 版本
|
||||||
|
|
||||||
|
## 快速启动
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 直接运行
|
||||||
|
./start.sh
|
||||||
|
|
||||||
|
# 或者直接运行二进制文件
|
||||||
|
./gitcodestatic
|
||||||
|
```
|
||||||
|
|
||||||
|
## 系统服务安装
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 以 root 权限安装
|
||||||
|
sudo ./install.sh
|
||||||
|
|
||||||
|
# 启动服务
|
||||||
|
sudo systemctl start gitcodestatic
|
||||||
|
|
||||||
|
# 开机自启
|
||||||
|
sudo systemctl enable gitcodestatic
|
||||||
|
```
|
||||||
|
|
||||||
|
## 配置文件
|
||||||
|
|
||||||
|
- `configs/config.yaml`: 主配置文件
|
||||||
|
- 可以修改端口、数据库路径等配置
|
||||||
|
|
||||||
|
## 数据目录
|
||||||
|
|
||||||
|
- 日志文件: `logs/app.log`
|
||||||
|
- 数据库文件: `workspace/gitcodestatic.db`
|
||||||
|
- 仓库缓存: `workspace/repos/`
|
||||||
|
|
||||||
|
## 访问地址
|
||||||
|
|
||||||
|
- Web UI: http://localhost:8080
|
||||||
|
- API 文档: http://localhost:8080/swagger/
|
||||||
|
|
||||||
|
## 停止服务
|
||||||
|
|
||||||
|
- 直接运行: 按 `Ctrl+C`
|
||||||
|
- 系统服务: `sudo systemctl stop gitcodestatic`
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 设置二进制文件权限
|
||||||
|
chmod +x "$PACKAGE_PATH/$BINARY_NAME"
|
||||||
|
|
||||||
|
# 创建 tar.gz 包
|
||||||
|
echo "创建压缩包..."
|
||||||
|
cd "$OUTPUT_PATH"
|
||||||
|
tar -czf "$PACKAGE_NAME.tar.gz" "$PACKAGE_NAME"
|
||||||
|
|
||||||
|
echo "构建完成!"
|
||||||
|
echo "输出路径: $OUTPUT_PATH/$PACKAGE_NAME.tar.gz"
|
||||||
|
|
||||||
|
# 显示文件大小
|
||||||
|
FILE_SIZE=$(stat -c%s "$PACKAGE_NAME.tar.gz" 2>/dev/null || stat -f%z "$PACKAGE_NAME.tar.gz" 2>/dev/null)
|
||||||
|
echo "压缩包大小: $(echo "scale=2; $FILE_SIZE/1024/1024" | bc) MB"
|
||||||
256
scripts/build-macos.sh
Normal file
256
scripts/build-macos.sh
Normal file
@@ -0,0 +1,256 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# GitCodeStatic macOS 打包脚本
|
||||||
|
# Bash 脚本用于在 macOS 平台构建和打包
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
VERSION=${1:-"latest"}
|
||||||
|
OUTPUT_DIR=${2:-"dist"}
|
||||||
|
|
||||||
|
echo "开始构建 GitCodeStatic for macOS..."
|
||||||
|
|
||||||
|
# 设置变量
|
||||||
|
PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
BINARY_NAME="gitcodestatic"
|
||||||
|
PACKAGE_NAME="gitcodestatic-macos-$VERSION"
|
||||||
|
OUTPUT_PATH="$PROJECT_ROOT/$OUTPUT_DIR"
|
||||||
|
PACKAGE_PATH="$OUTPUT_PATH/$PACKAGE_NAME"
|
||||||
|
|
||||||
|
# 清理输出目录
|
||||||
|
if [ -d "$PACKAGE_PATH" ]; then
|
||||||
|
echo "清理旧的输出目录..."
|
||||||
|
rm -rf "$PACKAGE_PATH"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建输出目录
|
||||||
|
mkdir -p "$PACKAGE_PATH"
|
||||||
|
|
||||||
|
# 设置构建环境
|
||||||
|
export GOOS=darwin
|
||||||
|
export GOARCH=amd64
|
||||||
|
export CGO_ENABLED=1
|
||||||
|
|
||||||
|
echo "构建 Go 二进制文件..."
|
||||||
|
cd "$PROJECT_ROOT"
|
||||||
|
|
||||||
|
# 构建二进制文件
|
||||||
|
go build -ldflags "-s -w -X main.Version=$VERSION" -o "$PACKAGE_PATH/$BINARY_NAME" cmd/server/main.go
|
||||||
|
|
||||||
|
echo "复制必需的文件..."
|
||||||
|
|
||||||
|
# 复制 web 静态文件
|
||||||
|
cp -r web "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 复制配置文件
|
||||||
|
cp -r configs "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 复制文档文件
|
||||||
|
cp README.md "$PACKAGE_PATH/"
|
||||||
|
cp QUICKSTART.md "$PACKAGE_PATH/"
|
||||||
|
|
||||||
|
# 创建启动脚本
|
||||||
|
cat > "$PACKAGE_PATH/start.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Starting GitCodeStatic Server..."
|
||||||
|
echo ""
|
||||||
|
echo "Web UI: http://localhost:8080"
|
||||||
|
echo "API Docs: http://localhost:8080/swagger/"
|
||||||
|
echo ""
|
||||||
|
echo "Press Ctrl+C to stop the server"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 设置可执行权限
|
||||||
|
chmod +x "./gitcodestatic"
|
||||||
|
|
||||||
|
# 启动服务器
|
||||||
|
./gitcodestatic
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$PACKAGE_PATH/start.sh"
|
||||||
|
|
||||||
|
# 创建 LaunchAgent plist 文件
|
||||||
|
cat > "$PACKAGE_PATH/com.gitcodestatic.server.plist" << EOF
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>com.gitcodestatic.server</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/usr/local/bin/gitcodestatic</string>
|
||||||
|
</array>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
<key>KeepAlive</key>
|
||||||
|
<true/>
|
||||||
|
<key>WorkingDirectory</key>
|
||||||
|
<string>/usr/local/opt/gitcodestatic</string>
|
||||||
|
<key>StandardOutPath</key>
|
||||||
|
<string>/usr/local/var/log/gitcodestatic.log</string>
|
||||||
|
<key>StandardErrorPath</key>
|
||||||
|
<string>/usr/local/var/log/gitcodestatic.error.log</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 创建 Homebrew 安装脚本
|
||||||
|
cat > "$PACKAGE_PATH/install-macos.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# GitCodeStatic macOS 安装脚本
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "安装 GitCodeStatic for macOS..."
|
||||||
|
|
||||||
|
# 检查是否有管理员权限
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "注意:某些操作可能需要管理员权限"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 创建安装目录
|
||||||
|
INSTALL_DIR="/usr/local/opt/gitcodestatic"
|
||||||
|
BIN_DIR="/usr/local/bin"
|
||||||
|
|
||||||
|
echo "创建安装目录: $INSTALL_DIR"
|
||||||
|
sudo mkdir -p "$INSTALL_DIR"
|
||||||
|
sudo mkdir -p "/usr/local/var/log"
|
||||||
|
|
||||||
|
# 复制文件
|
||||||
|
echo "复制文件..."
|
||||||
|
sudo cp -r ./* "$INSTALL_DIR/"
|
||||||
|
|
||||||
|
# 创建符号链接
|
||||||
|
echo "创建符号链接..."
|
||||||
|
sudo ln -sf "$INSTALL_DIR/gitcodestatic" "$BIN_DIR/gitcodestatic"
|
||||||
|
|
||||||
|
# 设置权限
|
||||||
|
sudo chmod +x "$INSTALL_DIR/gitcodestatic"
|
||||||
|
sudo chmod +x "$BIN_DIR/gitcodestatic"
|
||||||
|
|
||||||
|
# 安装 LaunchAgent
|
||||||
|
echo "安装 LaunchAgent..."
|
||||||
|
LAUNCH_AGENTS_DIR="$HOME/Library/LaunchAgents"
|
||||||
|
mkdir -p "$LAUNCH_AGENTS_DIR"
|
||||||
|
cp "$INSTALL_DIR/com.gitcodestatic.server.plist" "$LAUNCH_AGENTS_DIR/"
|
||||||
|
|
||||||
|
echo "安装完成!"
|
||||||
|
echo ""
|
||||||
|
echo "使用方法:"
|
||||||
|
echo " 直接运行: gitcodestatic"
|
||||||
|
echo " 启动服务: launchctl load ~/Library/LaunchAgents/com.gitcodestatic.server.plist"
|
||||||
|
echo " 停止服务: launchctl unload ~/Library/LaunchAgents/com.gitcodestatic.server.plist"
|
||||||
|
echo ""
|
||||||
|
echo "服务将在 http://localhost:8080 上运行"
|
||||||
|
echo "配置文件位置: $INSTALL_DIR/configs/config.yaml"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$PACKAGE_PATH/install-macos.sh"
|
||||||
|
|
||||||
|
# 创建卸载脚本
|
||||||
|
cat > "$PACKAGE_PATH/uninstall-macos.sh" << 'EOF'
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# GitCodeStatic macOS 卸载脚本
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
echo "卸载 GitCodeStatic..."
|
||||||
|
|
||||||
|
# 停止服务
|
||||||
|
launchctl unload ~/Library/LaunchAgents/com.gitcodestatic.server.plist 2>/dev/null || true
|
||||||
|
|
||||||
|
# 删除 LaunchAgent
|
||||||
|
rm -f ~/Library/LaunchAgents/com.gitcodestatic.server.plist
|
||||||
|
|
||||||
|
# 删除符号链接
|
||||||
|
sudo rm -f /usr/local/bin/gitcodestatic
|
||||||
|
|
||||||
|
# 删除安装目录
|
||||||
|
sudo rm -rf /usr/local/opt/gitcodestatic
|
||||||
|
|
||||||
|
# 删除日志文件
|
||||||
|
sudo rm -f /usr/local/var/log/gitcodestatic.log
|
||||||
|
sudo rm -f /usr/local/var/log/gitcodestatic.error.log
|
||||||
|
|
||||||
|
echo "卸载完成!"
|
||||||
|
EOF
|
||||||
|
|
||||||
|
chmod +x "$PACKAGE_PATH/uninstall-macos.sh"
|
||||||
|
|
||||||
|
# 创建配置说明
|
||||||
|
cat > "$PACKAGE_PATH/README_macOS.md" << 'EOF'
|
||||||
|
# GitCodeStatic macOS 版本
|
||||||
|
|
||||||
|
## 快速启动
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 直接运行
|
||||||
|
./start.sh
|
||||||
|
|
||||||
|
# 或者直接运行二进制文件
|
||||||
|
./gitcodestatic
|
||||||
|
```
|
||||||
|
|
||||||
|
## 系统安装
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 安装到系统目录
|
||||||
|
./install-macos.sh
|
||||||
|
|
||||||
|
# 全局使用
|
||||||
|
gitcodestatic
|
||||||
|
```
|
||||||
|
|
||||||
|
## 服务管理
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 启动后台服务
|
||||||
|
launchctl load ~/Library/LaunchAgents/com.gitcodestatic.server.plist
|
||||||
|
|
||||||
|
# 停止后台服务
|
||||||
|
launchctl unload ~/Library/LaunchAgents/com.gitcodestatic.server.plist
|
||||||
|
|
||||||
|
# 卸载
|
||||||
|
./uninstall-macos.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
## 配置文件
|
||||||
|
|
||||||
|
- `configs/config.yaml`: 主配置文件
|
||||||
|
- 可以修改端口、数据库路径等配置
|
||||||
|
|
||||||
|
## 数据目录
|
||||||
|
|
||||||
|
- 日志文件: `logs/app.log`
|
||||||
|
- 数据库文件: `workspace/gitcodestatic.db`
|
||||||
|
- 仓库缓存: `workspace/repos/`
|
||||||
|
|
||||||
|
## 访问地址
|
||||||
|
|
||||||
|
- Web UI: http://localhost:8080
|
||||||
|
- API 文档: http://localhost:8080/swagger/
|
||||||
|
|
||||||
|
## 停止服务
|
||||||
|
|
||||||
|
- 直接运行: 按 `Ctrl+C`
|
||||||
|
- 后台服务: `launchctl unload ~/Library/LaunchAgents/com.gitcodestatic.server.plist`
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# 设置二进制文件权限
|
||||||
|
chmod +x "$PACKAGE_PATH/$BINARY_NAME"
|
||||||
|
|
||||||
|
# 创建 tar.gz 包
|
||||||
|
echo "创建压缩包..."
|
||||||
|
cd "$OUTPUT_PATH"
|
||||||
|
tar -czf "$PACKAGE_NAME.tar.gz" "$PACKAGE_NAME"
|
||||||
|
|
||||||
|
echo "构建完成!"
|
||||||
|
echo "输出路径: $OUTPUT_PATH/$PACKAGE_NAME.tar.gz"
|
||||||
|
|
||||||
|
# 显示文件大小
|
||||||
|
FILE_SIZE=$(stat -f%z "$PACKAGE_NAME.tar.gz" 2>/dev/null || stat -c%s "$PACKAGE_NAME.tar.gz" 2>/dev/null)
|
||||||
|
echo "压缩包大小: $(echo "scale=2; $FILE_SIZE/1024/1024" | bc) MB"
|
||||||
113
scripts/build.ps1
Normal file
113
scripts/build.ps1
Normal file
@@ -0,0 +1,113 @@
|
|||||||
|
# GitCodeStatic Windows 打包脚本
|
||||||
|
# PowerShell 脚本用于在 Windows 平台构建和打包
|
||||||
|
|
||||||
|
param(
|
||||||
|
[string]$Version = "latest",
|
||||||
|
[string]$OutputDir = "dist"
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Host "开始构建 GitCodeStatic for Windows..." -ForegroundColor Green
|
||||||
|
|
||||||
|
# 设置变量
|
||||||
|
$ProjectRoot = Split-Path -Parent $PSScriptRoot
|
||||||
|
$BinaryName = "gitcodestatic.exe"
|
||||||
|
$PackageName = "gitcodestatic-windows-$Version"
|
||||||
|
$OutputPath = Join-Path $ProjectRoot $OutputDir
|
||||||
|
$PackagePath = Join-Path $OutputPath $PackageName
|
||||||
|
|
||||||
|
# 清理输出目录
|
||||||
|
if (Test-Path $PackagePath) {
|
||||||
|
Write-Host "清理旧的输出目录..." -ForegroundColor Yellow
|
||||||
|
Remove-Item -Recurse -Force $PackagePath
|
||||||
|
}
|
||||||
|
|
||||||
|
# 创建输出目录
|
||||||
|
New-Item -ItemType Directory -Path $PackagePath -Force | Out-Null
|
||||||
|
|
||||||
|
# 设置构建环境
|
||||||
|
$env:GOOS = "windows"
|
||||||
|
$env:GOARCH = "amd64"
|
||||||
|
$env:CGO_ENABLED = "1"
|
||||||
|
|
||||||
|
Write-Host "构建 Go 二进制文件..." -ForegroundColor Blue
|
||||||
|
Set-Location $ProjectRoot
|
||||||
|
|
||||||
|
# 构建二进制文件
|
||||||
|
$BuildCmd = "go build -ldflags `"-s -w -X main.Version=$Version`" -o `"$PackagePath\$BinaryName`" cmd/server/main.go"
|
||||||
|
Invoke-Expression $BuildCmd
|
||||||
|
|
||||||
|
if ($LASTEXITCODE -ne 0) {
|
||||||
|
Write-Error "构建失败!"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host "复制必需的文件..." -ForegroundColor Blue
|
||||||
|
|
||||||
|
# 复制 web 静态文件
|
||||||
|
Copy-Item -Recurse -Path "web" -Destination "$PackagePath\web"
|
||||||
|
|
||||||
|
# 复制配置文件
|
||||||
|
Copy-Item -Recurse -Path "configs" -Destination "$PackagePath\configs"
|
||||||
|
|
||||||
|
# 复制文档文件
|
||||||
|
Copy-Item -Path "README.md" -Destination $PackagePath
|
||||||
|
Copy-Item -Path "QUICKSTART.md" -Destination $PackagePath
|
||||||
|
|
||||||
|
# 创建启动脚本
|
||||||
|
$StartScript = @"
|
||||||
|
@echo off
|
||||||
|
echo Starting GitCodeStatic Server...
|
||||||
|
echo.
|
||||||
|
echo Web UI: http://localhost:8080
|
||||||
|
echo API Docs: http://localhost:8080/swagger/
|
||||||
|
echo.
|
||||||
|
gitcodestatic.exe
|
||||||
|
pause
|
||||||
|
"@
|
||||||
|
|
||||||
|
$StartScript | Out-File -FilePath "$PackagePath\start.bat" -Encoding ASCII
|
||||||
|
|
||||||
|
# 创建配置说明
|
||||||
|
$ConfigInfo = @"
|
||||||
|
GitCodeStatic Windows 版本
|
||||||
|
|
||||||
|
## 使用方法
|
||||||
|
|
||||||
|
1. 双击 start.bat 启动服务器
|
||||||
|
2. 打开浏览器访问 http://localhost:8080
|
||||||
|
3. 查看 API 文档: http://localhost:8080/swagger/
|
||||||
|
|
||||||
|
## 配置文件
|
||||||
|
|
||||||
|
- configs/config.yaml: 主配置文件
|
||||||
|
- 可以修改端口、数据库路径等配置
|
||||||
|
|
||||||
|
## 日志和数据
|
||||||
|
|
||||||
|
- 日志文件: logs/app.log
|
||||||
|
- 数据库文件: workspace/gitcodestatic.db
|
||||||
|
- 仓库缓存: workspace/repos/
|
||||||
|
|
||||||
|
## 停止服务
|
||||||
|
|
||||||
|
- 在命令窗口中按 Ctrl+C 停止服务器
|
||||||
|
"@
|
||||||
|
|
||||||
|
$ConfigInfo | Out-File -FilePath "$PackagePath\使用说明.txt" -Encoding UTF8
|
||||||
|
|
||||||
|
# 创建 ZIP 包
|
||||||
|
Write-Host "创建压缩包..." -ForegroundColor Blue
|
||||||
|
$ZipPath = "$OutputPath\$PackageName.zip"
|
||||||
|
if (Test-Path $ZipPath) {
|
||||||
|
Remove-Item $ZipPath
|
||||||
|
}
|
||||||
|
|
||||||
|
# 使用 PowerShell 5.0+ 的压缩功能
|
||||||
|
Compress-Archive -Path "$PackagePath\*" -DestinationPath $ZipPath
|
||||||
|
|
||||||
|
Write-Host "构建完成!" -ForegroundColor Green
|
||||||
|
Write-Host "输出路径: $ZipPath" -ForegroundColor Green
|
||||||
|
|
||||||
|
# 显示文件大小
|
||||||
|
$ZipSize = (Get-Item $ZipPath).Length
|
||||||
|
Write-Host "压缩包大小: $([math]::Round($ZipSize/1MB, 2)) MB" -ForegroundColor Green
|
||||||
Reference in New Issue
Block a user