feat(devops): 添加 Drone CI 初始化脚本
- 新增 init_drone.sh 脚本,用于快速部署 Drone CI 环境 - 脚本包含配置、清理、创建 docker-compose 文件、配置 Docker 镜像加速等功能 - 支持 Gitea 集成,Postgres 数据库和 Redis 缓存 - 自动生成 RPC 密钥并输出安装信息
This commit is contained in:
parent
03f2b710b0
commit
c809542f1f
|
|
@ -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"
|
||||
Loading…
Reference in New Issue