ci(deploy): share ssh secrets across environments

This commit is contained in:
2026-07-07 17:51:07 +08:00
parent 75bc817a59
commit 1f1674ee59
2 changed files with 17 additions and 26 deletions
+11 -20
View File
@@ -133,17 +133,12 @@ jobs:
- name: Deploy image over SSH - name: Deploy image over SSH
env: env:
TEST_SSH_HOST: ${{ secrets.TEST_SSH_HOST }} SSH_HOST: ${{ secrets.SSH_HOST }}
TEST_SSH_USER: ${{ secrets.TEST_SSH_USER }} SSH_USER: ${{ secrets.SSH_USER }}
TEST_SSH_PORT: ${{ secrets.TEST_SSH_PORT }} SSH_PORT: ${{ secrets.SSH_PORT }}
TEST_SSH_PRIVATE_KEY: ${{ secrets.TEST_SSH_PRIVATE_KEY }} SSH_PRIVATE_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
TEST_SSH_KNOWN_HOSTS: ${{ secrets.TEST_SSH_KNOWN_HOSTS }} SSH_KNOWN_HOSTS: ${{ secrets.SSH_KNOWN_HOSTS }}
TEST_DEPLOY_DIR: ${{ secrets.TEST_DEPLOY_DIR }} TEST_DEPLOY_DIR: ${{ secrets.TEST_DEPLOY_DIR }}
PROD_SSH_HOST: ${{ secrets.PROD_SSH_HOST }}
PROD_SSH_USER: ${{ secrets.PROD_SSH_USER }}
PROD_SSH_PORT: ${{ secrets.PROD_SSH_PORT }}
PROD_SSH_PRIVATE_KEY: ${{ secrets.PROD_SSH_PRIVATE_KEY }}
PROD_SSH_KNOWN_HOSTS: ${{ secrets.PROD_SSH_KNOWN_HOSTS }}
PROD_DEPLOY_DIR: ${{ secrets.PROD_DEPLOY_DIR }} PROD_DEPLOY_DIR: ${{ secrets.PROD_DEPLOY_DIR }}
REGISTRY_HOST: ${{ secrets.REGISTRY_HOST }} REGISTRY_HOST: ${{ secrets.REGISTRY_HOST }}
REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }}
@@ -153,22 +148,12 @@ jobs:
case "$DEPLOY_ENV" in case "$DEPLOY_ENV" in
test) test)
DEPLOY_HOST="$TEST_SSH_HOST"
DEPLOY_USER="$TEST_SSH_USER"
DEPLOY_PORT="${TEST_SSH_PORT:-22}"
DEPLOY_KEY="$TEST_SSH_PRIVATE_KEY"
DEPLOY_KNOWN_HOSTS="$TEST_SSH_KNOWN_HOSTS"
DEPLOY_DIR="${TEST_DEPLOY_DIR:-/opt/cozsweet-web-test}" DEPLOY_DIR="${TEST_DEPLOY_DIR:-/opt/cozsweet-web-test}"
HOST_PORT="9135" HOST_PORT="9135"
CONTAINER_NAME="cozsweet-web-test" CONTAINER_NAME="cozsweet-web-test"
PROJECT_NAME="cozsweet-web-test" PROJECT_NAME="cozsweet-web-test"
;; ;;
prod) prod)
DEPLOY_HOST="$PROD_SSH_HOST"
DEPLOY_USER="$PROD_SSH_USER"
DEPLOY_PORT="${PROD_SSH_PORT:-22}"
DEPLOY_KEY="$PROD_SSH_PRIVATE_KEY"
DEPLOY_KNOWN_HOSTS="$PROD_SSH_KNOWN_HOSTS"
DEPLOY_DIR="${PROD_DEPLOY_DIR:-/opt/cozsweet-web-prod}" DEPLOY_DIR="${PROD_DEPLOY_DIR:-/opt/cozsweet-web-prod}"
HOST_PORT="9185" HOST_PORT="9185"
CONTAINER_NAME="cozsweet-web-prod" CONTAINER_NAME="cozsweet-web-prod"
@@ -180,6 +165,12 @@ jobs:
;; ;;
esac esac
DEPLOY_HOST="$SSH_HOST"
DEPLOY_USER="$SSH_USER"
DEPLOY_PORT="${SSH_PORT:-22}"
DEPLOY_KEY="$SSH_PRIVATE_KEY"
DEPLOY_KNOWN_HOSTS="$SSH_KNOWN_HOSTS"
if [ -z "$DEPLOY_HOST" ] || [ -z "$DEPLOY_USER" ] || [ -z "$DEPLOY_KEY" ]; then if [ -z "$DEPLOY_HOST" ] || [ -z "$DEPLOY_USER" ] || [ -z "$DEPLOY_KEY" ]; then
echo "Missing SSH deployment secrets for $DEPLOY_ENV" >&2 echo "Missing SSH deployment secrets for $DEPLOY_ENV" >&2
exit 1 exit 1
+6 -6
View File
@@ -32,15 +32,15 @@ push test/main
| `TEST_ENV_FILE` | 测试环境 `.env.local` 内容 | | `TEST_ENV_FILE` | 测试环境 `.env.local` 内容 |
| `PRODUCTION_ENV_FILE` | 生产环境 `.env.production` 内容 | | `PRODUCTION_ENV_FILE` | 生产环境 `.env.production` 内容 |
新增 SSH 部署 Secrets SSH 部署 Secrets
| Secret | 说明 | | Secret | 说明 |
| --- | --- | | --- | --- |
| `TEST_SSH_HOST` / `PROD_SSH_HOST` | 测试 / 生产服务器地址 | | `SSH_HOST` | 部署服务器地址,测试 / 生产共用 |
| `TEST_SSH_USER` / `PROD_SSH_USER` | SSH 用户,例如 `root` | | `SSH_USER` | SSH 用户,例如 `root` |
| `TEST_SSH_PRIVATE_KEY` / `PROD_SSH_PRIVATE_KEY` | 私钥内容 | | `SSH_PRIVATE_KEY` | 私钥内容 |
| `TEST_SSH_PORT` / `PROD_SSH_PORT` | 可选,默认 `22` | | `SSH_PORT` | 可选,默认 `22` |
| `TEST_SSH_KNOWN_HOSTS` / `PROD_SSH_KNOWN_HOSTS` | 可选,推荐配置 `ssh-keyscan` 输出 | | `SSH_KNOWN_HOSTS` | 可选,推荐配置 `ssh-keyscan` 输出 |
| `TEST_DEPLOY_DIR` / `PROD_DEPLOY_DIR` | 可选,覆盖默认服务器目录 | | `TEST_DEPLOY_DIR` / `PROD_DEPLOY_DIR` | 可选,覆盖默认服务器目录 |
| `CF_ZONE_ID` / `CF_API_TOKEN` | 可选,部署成功后清理 Cloudflare 缓存 | | `CF_ZONE_ID` / `CF_API_TOKEN` | 可选,部署成功后清理 Cloudflare 缓存 |