处理 容器 没有 sshpass 问题
This commit is contained in:
Vendored
+32
-28
@@ -55,6 +55,9 @@ pipeline {
|
||||
stage('环境准备') {
|
||||
steps {
|
||||
script {
|
||||
// 确保 Jenkins 容器内有 sshpass
|
||||
sh "which sshpass || (apt-get update && apt-get install -y sshpass)"
|
||||
|
||||
// 检查/安装 Docker
|
||||
sh """
|
||||
${SSH_CMD} '
|
||||
@@ -162,34 +165,6 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查 Nginx
|
||||
* - 不存在:启动 → docker cp 配置 → reload
|
||||
* - 已存在:确保运行中
|
||||
*/
|
||||
stage('检查Nginx') {
|
||||
steps {
|
||||
script {
|
||||
def nginxExists = sh(script: "${SSH_CMD} 'docker ps -aq -f name=${CONTAINER_PREFIX}-nginx'", returnStdout: true).trim()
|
||||
if (!nginxExists) {
|
||||
echo "首次部署,初始化 Nginx 容器"
|
||||
sh "${SSH_CMD} 'cd ${REMOTE_WORK_DIR} && docker-compose -f ${COMPOSE_FILE} up -d nginx'"
|
||||
sh "sleep 3"
|
||||
sh "${SSH_CMD} 'docker cp ${REMOTE_WORK_DIR}/client-api/nginx.conf ${CONTAINER_PREFIX}-nginx:/etc/nginx/nginx.conf'"
|
||||
sh "${SSH_CMD} 'docker exec ${CONTAINER_PREFIX}-nginx nginx -s reload'"
|
||||
} else {
|
||||
def nginxRunning = sh(script: "${SSH_CMD} 'docker ps -q -f name=${CONTAINER_PREFIX}-nginx'", returnStdout: true).trim()
|
||||
if (!nginxRunning) {
|
||||
echo "Nginx 容器已停止,重新启动"
|
||||
sh "${SSH_CMD} 'docker start ${CONTAINER_PREFIX}-nginx'"
|
||||
sh "sleep 2"
|
||||
}
|
||||
echo "Nginx 容器已存在且运行中"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stage('启动新版本') {
|
||||
steps {
|
||||
script {
|
||||
@@ -232,6 +207,35 @@ pipeline {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查 Nginx
|
||||
* - 放在健康检查之后,确保 blue/green 容器已运行,Nginx reload 时能解析主机名
|
||||
* - 不存在:启动 → docker cp 配置 → reload
|
||||
* - 已存在:确保运行中
|
||||
*/
|
||||
stage('检查Nginx') {
|
||||
steps {
|
||||
script {
|
||||
def nginxExists = sh(script: "${SSH_CMD} 'docker ps -aq -f name=${CONTAINER_PREFIX}-nginx'", returnStdout: true).trim()
|
||||
if (!nginxExists) {
|
||||
echo "首次部署,初始化 Nginx 容器"
|
||||
sh "${SSH_CMD} 'cd ${REMOTE_WORK_DIR} && docker-compose -f ${COMPOSE_FILE} up -d nginx'"
|
||||
sh "sleep 3"
|
||||
sh "${SSH_CMD} 'docker cp ${REMOTE_WORK_DIR}/client-api/nginx.conf ${CONTAINER_PREFIX}-nginx:/etc/nginx/nginx.conf'"
|
||||
sh "${SSH_CMD} 'docker exec ${CONTAINER_PREFIX}-nginx nginx -s reload'"
|
||||
} else {
|
||||
def nginxRunning = sh(script: "${SSH_CMD} 'docker ps -q -f name=${CONTAINER_PREFIX}-nginx'", returnStdout: true).trim()
|
||||
if (!nginxRunning) {
|
||||
echo "Nginx 容器已停止,重新启动"
|
||||
sh "${SSH_CMD} 'docker start ${CONTAINER_PREFIX}-nginx'"
|
||||
sh "sleep 2"
|
||||
}
|
||||
echo "Nginx 容器已存在且运行中"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 切换流量
|
||||
* - sed 修改 nginx proxy_pass 指向新色
|
||||
|
||||
@@ -25,7 +25,7 @@ http {
|
||||
|
||||
# HTTP → HTTPS 跳转
|
||||
server {
|
||||
listen 80;
|
||||
listen 80 default_server;
|
||||
server_name api.offerpai.com.cn;
|
||||
|
||||
# Nginx 自身健康检查
|
||||
|
||||
Reference in New Issue
Block a user