From 58853aea804aa3023a3bef2684c04f0b3bdbd8f9 Mon Sep 17 00:00:00 2001 From: zzx-coder Date: Mon, 1 Jun 2026 19:55:04 +0800 Subject: [PATCH] refactor: .devops/gitlink-cli-autodeploy.yml --- .devops/gitlink-cli-autodeploy.yml | 172 +---------------------------- 1 file changed, 6 insertions(+), 166 deletions(-) diff --git a/.devops/gitlink-cli-autodeploy.yml b/.devops/gitlink-cli-autodeploy.yml index 263a8256..c1a3d815 100644 --- a/.devops/gitlink-cli-autodeploy.yml +++ b/.devops/gitlink-cli-autodeploy.yml @@ -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