From 1f1674ee598a8f25efc789307bc0f0dc2cf56805 Mon Sep 17 00:00:00 2001 From: chenhang Date: Tue, 7 Jul 2026 17:51:07 +0800 Subject: [PATCH] ci(deploy): share ssh secrets across environments --- .gitea/workflows/docker-image.yml | 31 +++++++++++-------------------- docs/gitea-actions-ssh-deploy.md | 12 ++++++------ 2 files changed, 17 insertions(+), 26 deletions(-) diff --git a/.gitea/workflows/docker-image.yml b/.gitea/workflows/docker-image.yml index 3e827835..012eafe9 100644 --- a/.gitea/workflows/docker-image.yml +++ b/.gitea/workflows/docker-image.yml @@ -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 diff --git a/docs/gitea-actions-ssh-deploy.md b/docs/gitea-actions-ssh-deploy.md index 2809b67e..f46d70be 100644 --- a/docs/gitea-actions-ssh-deploy.md +++ b/docs/gitea-actions-ssh-deploy.md @@ -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 缓存 |