ci(deploy): share ssh secrets across environments
Docker Image / Build and Push Docker Image (push) Successful in 5m20s

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