refactor: .devops/gitlink-cli-autodeploy.yml

This commit is contained in:
zzx-coder 2026-06-01 19:55:04 +08:00 committed by jianmu
parent e11478e392
commit 58853aea80
1 changed files with 6 additions and 166 deletions

View File

@ -28,39 +28,11 @@ workflow:
ssh_port: '"22"'
ssh_user: '"root"'
ssh_private_key: ((gitlink_cli.gitlink_cli_deploy_key))
ssh_cmd: |
echo "===================="
echo "准备服务器环境"
echo "===================="
# 创建工作目录
mkdir -p /opt/gitlink-build
mkdir -p /opt/gitlink-cli
mkdir -p /opt/gitlink-cli/backups
mkdir -p /opt/gitlink-deploy
# 检查并安装 Go 环境
if ! command -v go &> /dev/null; then
echo "安装 Go 1.22..."
cd /tmp
wget -q https://go.dev/dl/go1.22.0.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.22.0.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
echo 'export PATH=$PATH:/usr/local/go/bin' >> /root/.bashrc
rm -f go1.22.0.linux-amd64.tar.gz
else
echo "Go 已安装: $(go version)"
fi
# 设置 PATH
export PATH=$PATH:/usr/local/go/bin
go version
echo "服务器环境准备完成"
ssh_cmd: '"/opt/gitlink-deploy/prepare.sh"'
needs:
- start
# 2. 在服务器上克隆代码并构建
# 2. 在服务器上构建
- ref: build_on_server_0
name: 在服务器上构建
task: ssh_cmd@1.1.1
@ -69,60 +41,7 @@ workflow:
ssh_port: '"22"'
ssh_user: '"root"'
ssh_private_key: ((gitlink_cli.gitlink_cli_deploy_key))
ssh_cmd: |
echo "===================="
echo "在服务器上构建 gitlink-cli"
echo "===================="
# 设置环境变量
export PATH=$PATH:/usr/local/go/bin
# 克隆代码到服务器
cd /opt/gitlink-build
echo "1. 克隆代码..."
if [ -d "gitlink-cli" ]; then
cd gitlink-cli
git fetch origin
git reset --hard origin/master
git clean -fd
else
git clone https://www.gitlink.org.cn/zzx-coder/gitlink-cli.git
cd gitlink-cli
fi
# 获取版本信息
VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "dev")
COMMIT=$(git rev-parse --short HEAD)
BUILD_TIME=$(date -u '+%Y-%m-%d_%H:%M:%S')
MODULE="github.com/gitlink-org/gitlink-cli"
LDFLAGS="-s -w -X ${MODULE}/cmd.Version=${VERSION} -X ${MODULE}/cmd.Commit=${COMMIT} -X ${MODULE}/cmd.BuildTime=${BUILD_TIME}"
echo "2. 构建信息:"
echo " 版本: ${VERSION}"
echo " 提交: ${COMMIT}"
echo " 时间: ${BUILD_TIME}"
# 运行测试
echo "3. 运行测试..."
go test ./... -v -timeout=5m
# 代码检查
echo "4. 代码检查..."
go vet ./...
go fmt ./...
# 构建
echo "5. 构建 Linux amd64 版本..."
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$LDFLAGS" -o gitlink-cli .
# 验证构建
echo "6. 验证构建:"
ls -lh gitlink-cli
file gitlink-cli
./gitlink-cli version
echo "构建完成"
ssh_cmd: '"/opt/gitlink-deploy/build.sh"'
needs:
- prepare_server_0
@ -135,61 +54,11 @@ workflow:
ssh_port: '"22"'
ssh_user: '"root"'
ssh_private_key: ((gitlink_cli.gitlink_cli_deploy_key))
ssh_cmd: |
echo "===================="
echo "部署 gitlink-cli"
echo "===================="
DEPLOY_DIR="/opt/gitlink-cli"
BUILD_DIR="/opt/gitlink-build/gitlink-cli"
BACKUP_DIR="/opt/gitlink-cli/backups"
# 1. 备份当前版本
if [ -f "$DEPLOY_DIR/gitlink-cli" ]; then
echo "1. 备份当前版本..."
BACKUP_NAME="gitlink-cli.backup.$(date +%Y%m%d_%H%M%S)"
cp "$DEPLOY_DIR/gitlink-cli" "$BACKUP_DIR/$BACKUP_NAME"
echo " 备份完成: $BACKUP_NAME"
else
echo "1. 首次安装,无需备份"
fi
# 2. 安装新版本
echo "2. 安装新版本..."
cp "$BUILD_DIR/gitlink-cli" "$DEPLOY_DIR/gitlink-cli"
chmod +x "$DEPLOY_DIR/gitlink-cli"
# 3. 创建符号链接
echo "3. 创建符号链接..."
mkdir -p /usr/local/bin
ln -sf "$DEPLOY_DIR/gitlink-cli" /usr/local/bin/gitlink-cli
# 4. 验证安装
echo "4. 验证安装..."
/usr/local/bin/gitlink-cli version
/usr/local/bin/gitlink-cli --help | head -10
# 5. 清理旧备份保留最近5个
echo "5. 清理旧备份..."
cd "$BACKUP_DIR"
ls -t gitlink-cli.backup.* 2>/dev/null | tail -n +6 | xargs -r rm
# 6. 清理构建目录
echo "6. 清理构建目录..."
cd /opt/gitlink-build
rm -rf gitlink-cli
echo "===================="
echo "部署完成!"
echo "===================="
# 显示最终状态
ls -lh /opt/gitlink-cli/gitlink-cli
ls -lh /usr/local/bin/gitlink-cli
ssh_cmd: '"/opt/gitlink-deploy/deploy.sh"'
needs:
- build_on_server_0
# 4. 部署后验证
# 4. 验证部署
- ref: verify_deployment_0
name: 验证部署
task: ssh_cmd@1.1.1
@ -198,36 +67,7 @@ workflow:
ssh_port: '"22"'
ssh_user: '"root"'
ssh_private_key: ((gitlink_cli.gitlink_cli_deploy_key))
ssh_cmd: |
echo "===================="
echo "最终验证"
echo "===================="
# 验证命令可用
echo "1. 测试 gitlink-cli 命令:"
which gitlink-cli
gitlink-cli version
# 显示帮助信息
echo ""
echo "2. 显示帮助信息:"
gitlink-cli --help | head -15
# 显示安装路径
echo ""
echo "3. 安装路径:"
ls -lh /opt/gitlink-cli/gitlink-cli
ls -lh /usr/local/bin/gitlink-cli
# 显示备份文件
echo ""
echo "4. 最近备份:"
ls -lt /opt/gitlink-cli/backups/ | head -5
echo ""
echo "===================="
echo "验证通过!部署成功!"
echo "===================="
ssh_cmd: '"gitlink-cli version && ls -lh /opt/gitlink-cli/gitlink-cli"'
needs:
- deploy_on_server_0