forked from Gitlink/gitlink-cli
refactor: .devops/gitlink-cli-autodeploy.yml
This commit is contained in:
parent
e11478e392
commit
58853aea80
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue