最后一班
This commit is contained in:
@@ -42,11 +42,6 @@ jobs:
|
||||
# 推荐把私钥做成 base64(单行)存到 Secrets,避免多行变量丢换行
|
||||
SSH_KEY_B64: ${{ github.event.inputs.env == 'dev' && secrets.DEV_SSH_KEY_B64 || secrets.PRO_SSH_KEY_B64 }}
|
||||
|
||||
# Runner 宿主机私钥模式(推荐放宿主机时使用)
|
||||
# - 配置 vars.RUNNER_SSH_KEY_PATH 后将优先使用该私钥文件
|
||||
# - 例:/home/runner/.ssh/deploy_key 或 /root/.ssh/deploy_key
|
||||
RUNNER_SSH_KEY_PATH: ${{ vars.RUNNER_SSH_KEY_PATH }}
|
||||
|
||||
# Nginx upstream 配置(建议放到 vars)
|
||||
NGINX_UPSTREAM_FILE: ${{ vars.NGINX_UPSTREAM_FILE }}
|
||||
NGINX_UPSTREAM_NAME: ${{ vars.NGINX_UPSTREAM_NAME }}
|
||||
@@ -84,18 +79,7 @@ jobs:
|
||||
mkdir -p ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
|
||||
# 优先:使用 Runner 宿主机上的私钥文件(避免在 CI 中传输私钥)
|
||||
SSH_KEY_PATH=""
|
||||
if [[ -n "${RUNNER_SSH_KEY_PATH:-}" ]]; then
|
||||
SSH_KEY_PATH="${RUNNER_SSH_KEY_PATH}"
|
||||
if [[ ! -f "${SSH_KEY_PATH}" ]]; then
|
||||
echo "未找到 Runner 宿主机私钥文件:${SSH_KEY_PATH}"
|
||||
echo "请在 Runner 宿主机上放置私钥,并确保该路径对 Runner 执行用户可读。"
|
||||
exit 1
|
||||
fi
|
||||
chmod 600 "${SSH_KEY_PATH}" || true
|
||||
else
|
||||
# 兜底:从 Secrets 写入私钥(不推荐,但兼容)
|
||||
# 从 Secrets 写入私钥(推荐使用 *_SSH_KEY_B64)
|
||||
SSH_KEY_PATH="${HOME}/.ssh/id_rsa"
|
||||
if [[ -n "${SSH_KEY_B64:-}" ]]; then
|
||||
# 兼容两种常见误配置:
|
||||
@@ -117,7 +101,6 @@ jobs:
|
||||
printf '%s' "${SSH_KEY}" | tr -d '\r' > "${SSH_KEY_PATH}"
|
||||
fi
|
||||
chmod 600 "${SSH_KEY_PATH}"
|
||||
fi
|
||||
|
||||
# 自检(不输出私钥内容,仅输出元信息,方便定位是否写入了错误文件/被截断)
|
||||
echo "SSH_KEY_PATH=${SSH_KEY_PATH}"
|
||||
@@ -142,14 +125,6 @@ jobs:
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 供后续步骤统一使用
|
||||
if [[ -n "${GITHUB_ENV:-}" ]]; then
|
||||
echo "SSH_KEY_PATH=${SSH_KEY_PATH}" >> "$GITHUB_ENV"
|
||||
fi
|
||||
if [[ -n "${GITEA_ENV:-}" ]]; then
|
||||
echo "SSH_KEY_PATH=${SSH_KEY_PATH}" >> "$GITEA_ENV"
|
||||
fi
|
||||
|
||||
SSH_PORT="${SSH_PORT:-22}"
|
||||
if [[ -n "${GITHUB_ENV:-}" ]]; then
|
||||
echo "SSH_PORT=${SSH_PORT}" >> "$GITHUB_ENV"
|
||||
@@ -167,7 +142,7 @@ jobs:
|
||||
set -euo pipefail
|
||||
SSH_PORT="${SSH_PORT:-22}"
|
||||
ssh -p "${SSH_PORT}" \
|
||||
-i "${SSH_KEY_PATH}" \
|
||||
-i ~/.ssh/id_rsa \
|
||||
-o StrictHostKeyChecking=yes \
|
||||
-o BatchMode=yes \
|
||||
-o IdentitiesOnly=yes \
|
||||
@@ -202,7 +177,7 @@ jobs:
|
||||
exit 0
|
||||
fi
|
||||
|
||||
ssh -p "${SSH_PORT}" -i "${SSH_KEY_PATH}" -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes \
|
||||
ssh -p "${SSH_PORT}" -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes \
|
||||
"${SSH_USER}@${SSH_HOST}" bash -s -- "${DOCKER_TOKEN}" "${DOCKER_USERNAME}" "${REG}" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
|
||||
@@ -233,7 +208,7 @@ jobs:
|
||||
|
||||
echo "准备部署:${DOCKER_IMAGE}:${DEPLOY_TAG} -> ${DEPLOY_ENV} (${SSH_USER}@${SSH_HOST}:${SSH_PORT})"
|
||||
|
||||
ssh -p "${SSH_PORT}" -i "${SSH_KEY_PATH}" -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes "${SSH_USER}@${SSH_HOST}" bash -s -- \
|
||||
ssh -p "${SSH_PORT}" -i ~/.ssh/id_rsa -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes "${SSH_USER}@${SSH_HOST}" bash -s -- \
|
||||
"${DOCKER_IMAGE}" "${DEPLOY_TAG}" "${NGINX_UPSTREAM_FILE}" "${NGINX_UPSTREAM_NAME}" "${BLUE_PORT}" "${GREEN_PORT}" "${CONTAINER_PORT}" "${HEALTHCHECK_PATH}" "${REMOTE_ENV_FILE:-}" <<'REMOTE'
|
||||
set -euo pipefail
|
||||
|
||||
|
||||
Reference in New Issue
Block a user