ci(deploy): share ssh secrets across environments
Docker Image / Build and Push Docker Image (push) Successful in 5m20s
Docker Image / Build and Push Docker Image (push) Successful in 5m20s
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 缓存 |
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user