- 修改Jenkinsfile支持SSH用户名密码认证方式 - 添加JENKINS_PANEL_GUIDE.md详细操作指南 - 添加QUICK_START.md快速配置清单 - 添加服务器配置脚本支持用户名密码认证 - 更新配置文档和部署说明
169 lines
4.4 KiB
Bash
169 lines
4.4 KiB
Bash
#!/bin/bash
|
||
|
||
# Jenkins Demo 目标服务器配置脚本
|
||
# 运行环境:116.62.163.84
|
||
|
||
set -e
|
||
|
||
echo "🚀 开始配置Jenkins Demo部署环境..."
|
||
|
||
# 1. 更新系统
|
||
echo "📦 更新系统包..."
|
||
yum update -y
|
||
|
||
# 2. 安装必要工具
|
||
echo "🔧 安装必要工具..."
|
||
yum install -y curl wget git
|
||
|
||
# 3. 配置Docker(假设已安装)
|
||
echo "🐳 配置Docker..."
|
||
systemctl enable docker
|
||
systemctl start docker
|
||
|
||
# 4. 创建应用目录
|
||
echo "📁 创建应用目录..."
|
||
mkdir -p /opt/jenkins-demo
|
||
mkdir -p /opt/jenkins-demo/logs
|
||
mkdir -p /opt/jenkins-demo/backup
|
||
|
||
# 5. 创建日志目录
|
||
echo "📋 创建日志目录..."
|
||
mkdir -p /var/log/jenkins-demo
|
||
chmod 755 /var/log/jenkins-demo
|
||
|
||
# 6. 配置防火墙(如果需要)
|
||
echo "🔥 配置防火墙..."
|
||
# 开放应用端口
|
||
firewall-cmd --permanent --add-port=80/tcp || true
|
||
firewall-cmd --permanent --add-port=8080/tcp || true
|
||
firewall-cmd --reload || true
|
||
|
||
# 7. 创建应用用户(可选,增强安全性)
|
||
echo "👤 创建应用用户..."
|
||
useradd -r -s /bin/false -d /opt/jenkins-demo jenkins-demo || true
|
||
chown -R jenkins-demo:jenkins-demo /opt/jenkins-demo || true
|
||
chown -R jenkins-demo:jenkins-demo /var/log/jenkins-demo || true
|
||
|
||
# 8. 配置Docker用户权限
|
||
echo "🔐 配置Docker权限..."
|
||
usermod -aG docker jenkins-demo || true
|
||
|
||
# 9. 创建部署脚本
|
||
echo "📜 创建部署脚本..."
|
||
cat > /opt/jenkins-demo/deploy.sh << 'EOF'
|
||
#!/bin/bash
|
||
|
||
# 应用部署脚本
|
||
APP_NAME="jenkins-demo"
|
||
CONTAINER_NAME="jenkins-demo-prod"
|
||
IMAGE_TAG="${1:-latest}"
|
||
|
||
echo "🚀 开始部署 ${APP_NAME}:${IMAGE_TAG}"
|
||
|
||
# 停止现有容器
|
||
echo "⏹️ 停止现有容器..."
|
||
docker stop ${CONTAINER_NAME} 2>/dev/null || true
|
||
docker rm ${CONTAINER_NAME} 2>/dev/null || true
|
||
|
||
# 备份当前镜像
|
||
echo "💾 备份当前镜像..."
|
||
docker tag ${APP_NAME}:latest ${APP_NAME}:backup-$(date +%Y%m%d-%H%M%S) 2>/dev/null || true
|
||
|
||
# 运行新容器
|
||
echo "🏃 启动新容器..."
|
||
docker run -d \
|
||
--name ${CONTAINER_NAME} \
|
||
--restart unless-stopped \
|
||
-p 80:8080 \
|
||
-e SPRING_PROFILES_ACTIVE=prod \
|
||
-e JAVA_OPTS="-Xms512m -Xmx1024m" \
|
||
-v /var/log/jenkins-demo:/app/logs \
|
||
--health-cmd="curl -f http://localhost:8080/api/health || exit 1" \
|
||
--health-interval=30s \
|
||
--health-timeout=10s \
|
||
--health-retries=3 \
|
||
--health-start-period=60s \
|
||
${APP_NAME}:${IMAGE_TAG}
|
||
|
||
echo "✅ 部署完成!"
|
||
echo "🌐 应用访问地址: http://116.62.163.84"
|
||
echo "🏥 健康检查: http://116.62.163.84/api/health"
|
||
EOF
|
||
|
||
chmod +x /opt/jenkins-demo/deploy.sh
|
||
|
||
# 10. 创建清理脚本
|
||
echo "🧹 创建清理脚本..."
|
||
cat > /opt/jenkins-demo/cleanup.sh << 'EOF'
|
||
#!/bin/bash
|
||
|
||
echo "🧹 开始清理Docker资源..."
|
||
|
||
# 删除停止的容器
|
||
docker container prune -f
|
||
|
||
# 删除未使用的镜像
|
||
docker image prune -f
|
||
|
||
# 删除旧的备份镜像(保留最近5个)
|
||
echo "🗑️ 清理旧备份镜像..."
|
||
docker images jenkins-demo --format "table {{.Repository}}:{{.Tag}}" | \
|
||
grep "backup-" | tail -n +6 | xargs -r docker rmi
|
||
|
||
echo "✅ 清理完成!"
|
||
EOF
|
||
|
||
chmod +x /opt/jenkins-demo/cleanup.sh
|
||
|
||
# 11. 设置定时清理任务
|
||
echo "⏰ 设置定时清理任务..."
|
||
(crontab -l 2>/dev/null; echo "0 2 * * 0 /opt/jenkins-demo/cleanup.sh >> /var/log/jenkins-demo/cleanup.log 2>&1") | crontab -
|
||
|
||
# 12. 创建监控脚本
|
||
echo "📊 创建监控脚本..."
|
||
cat > /opt/jenkins-demo/monitor.sh << 'EOF'
|
||
#!/bin/bash
|
||
|
||
APP_NAME="jenkins-demo-prod"
|
||
HEALTH_URL="http://localhost/api/health"
|
||
|
||
# 检查容器状态
|
||
if ! docker ps | grep -q ${APP_NAME}; then
|
||
echo "❌ 容器 ${APP_NAME} 未运行"
|
||
exit 1
|
||
fi
|
||
|
||
# 检查健康状态
|
||
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" ${HEALTH_URL})
|
||
if [ "$HTTP_CODE" != "200" ]; then
|
||
echo "❌ 应用健康检查失败,HTTP状态码: ${HTTP_CODE}"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ 应用运行正常"
|
||
EOF
|
||
|
||
chmod +x /opt/jenkins-demo/monitor.sh
|
||
|
||
# 13. 显示配置摘要
|
||
echo "
|
||
🎉 服务器配置完成!
|
||
|
||
📁 应用目录: /opt/jenkins-demo
|
||
📋 日志目录: /var/log/jenkins-demo
|
||
🚀 部署脚本: /opt/jenkins-demo/deploy.sh
|
||
🧹 清理脚本: /opt/jenkins-demo/cleanup.sh
|
||
📊 监控脚本: /opt/jenkins-demo/monitor.sh
|
||
|
||
🔧 下一步操作:
|
||
1. 在Jenkins中配置SSH密钥
|
||
2. 测试SSH连接:ssh root@116.62.163.84
|
||
3. 运行第一次部署
|
||
|
||
📝 常用命令:
|
||
- 部署应用: /opt/jenkins-demo/deploy.sh [版本号]
|
||
- 检查状态: /opt/jenkins-demo/monitor.sh
|
||
- 查看日志: docker logs jenkins-demo-prod
|
||
- 清理资源: /opt/jenkins-demo/cleanup.sh
|
||
"
|