feat(devops): 添加 Drone CI 初始化脚本

- 新增 init_drone.sh 脚本,用于快速部署 Drone CI 环境
- 脚本包含配置、清理、创建 docker-compose 文件、配置 Docker 镜像加速等功能
- 支持 Gitea 集成,Postgres 数据库和 Redis 缓存
- 自动生成 RPC 密钥并输出安装信息
This commit is contained in:
hsc 2025-03-30 17:03:35 +08:00
parent 03f2b710b0
commit c809542f1f
1 changed files with 120 additions and 0 deletions

120
devops/init_drone.sh Normal file
View File

@ -0,0 +1,120 @@
#!/bin/bash
# ------------------------------
# 配置区(根据实际修改)
# ------------------------------
DRONE_HOST="http://100.78.212.75:4010" # Drone 访问域名
GITEA_SERVER="http://100.78.212.75:3000" # Gitea 地址
GITEA_CLIENT_ID="1a1da8e3-7425-4e98-92a2-6c2b7d0819d1" # Gitea OAuth2 Client ID
GITEA_CLIENT_SECRET="gto_axhtqnuj36gvss5dbfx2vem2hcbhxho4jprqrlatjyk2i2ylgeoq" # Gitea OAuth2 Client Secret
POSTGRES_CONN="postgres://postgres:hsc1825713423@100.78.212.75:5432/drone?sslmode=disable" # 数据库连接
REDIS_ADDR="100.78.212.75:6379" # Redis 地址
REDIS_PASSWORD="hsc1825713423" # Redis 密码
INSTALL_DIR="/opt/drone" # 安装目录
# 国内镜像代理地址(可根据需要更换)
DOCKER_PROXY="docker.m.daocloud.io"
# ------------------------------
# 自动生成密钥
# ------------------------------
DRONE_RPC_SECRET=$(openssl rand -hex 16)
# ------------------------------
# 清理之前的安装
# ------------------------------
echo "🧹 清理之前的 Drone 安装..."
docker-compose down &> /dev/null || true
docker rm -f drone-server &> /dev/null || true
rm -rf "$INSTALL_DIR"
mkdir -p "$INSTALL_DIR"
echo "✅ 已清理之前的安装。"
# ------------------------------
# 创建 docker-compose.yml 文件
# ------------------------------
echo "📝 创建 docker-compose.yml 文件..."
cat > "$INSTALL_DIR/docker-compose.yml" <<EOF
version: '3'
services:
drone-server:
image: ${DOCKER_PROXY}/drone/drone:2
container_name: drone-server
environment:
- DRONE_GITEA_SERVER=$GITEA_SERVER
- DRONE_GITEA_CLIENT_ID=$GITEA_CLIENT_ID
- DRONE_GITEA_CLIENT_SECRET=$GITEA_CLIENT_SECRET
- DRONE_RPC_SECRET=$DRONE_RPC_SECRET
- DRONE_SERVER_HOST=$DRONE_HOST
- DRONE_SERVER_PROTO=http
- DRONE_DATABASE_DRIVER=postgres
- DRONE_DATABASE_DATASOURCE=$POSTGRES_CONN
- DRONE_REDIS_ADDR=$REDIS_ADDR
- DRONE_REDIS_PASSWORD=$REDIS_PASSWORD
volumes:
- drone-data:/var/lib/drone/
ports:
- "4010:80"
restart: always
volumes:
drone-data:
EOF
echo "✅ 已创建 docker-compose.yml 文件。"
# ------------------------------
# 配置 Docker 使用国内镜像加速
# ------------------------------
echo "🔧 配置 Docker 使用国内镜像加速..."
if ! grep -q "registry-mirrors" /etc/docker/daemon.json 2>/dev/null; then
cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io"
]
}
EOF
systemctl daemon-reload
systemctl restart docker
echo "✅ 已配置 Docker 使用国内镜像加速。"
else
echo "⚠️ Docker 已配置镜像加速,跳过此步骤。"
fi
# ------------------------------
# 启动服务
# ------------------------------
echo "🚀 启动 Drone Server 服务..."
cd "$INSTALL_DIR"
docker-compose up -d
if [ $? -ne 0 ]; then
echo "❌ 启动 Drone Server 服务失败,请检查日志!"
exit 1
fi
# ------------------------------
# 验证安装
# ------------------------------
echo "🔍 检查服务状态..."
sleep 10
if docker ps | grep -q drone-server; then
echo "✅ Drone Server 服务已成功启动!"
else
echo "❌ Drone Server 服务启动失败,请检查以下日志:"
echo " docker logs drone-server"
exit 1
fi
# ------------------------------
# 输出信息
# ------------------------------
echo "✅ 安装完成!"
echo "📌 Drone 控制台: $DRONE_HOST"
echo "📌 RPC 密钥: $DRONE_RPC_SECRET (请妥善保存)"
echo "📌 管理命令:"
echo " docker-compose ps"
echo " docker logs drone-server"