From 26643d68c76ebdf3116168d56d9fd3646247a614 Mon Sep 17 00:00:00 2001 From: Jiang Date: Wed, 10 Jun 2026 15:08:47 +0800 Subject: [PATCH] =?UTF-8?q?feat(ci):=20=E6=B7=BB=E5=8A=A0=20Gitea=20?= =?UTF-8?q?=E4=BB=93=E5=BA=93=E5=AF=86=E9=92=A5=20TJWATER=5FSERVER=5FENV?= =?UTF-8?q?=20=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 1 + .gitea/workflows/package.yml | 58 ++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+) diff --git a/.env.example b/.env.example index 34a15ba..9b3b90c 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,6 @@ # TJWater Server 环境变量配置模板 # 复制此文件为 .env 并填写实际值 +# CI/CD: 将生产 .env 的完整内容保存为 Gitea 仓库密钥 TJWATER_SERVER_ENV。 ENVIRONMENT="production" NETWORK_NAME="tjwater" # ============================================ diff --git a/.gitea/workflows/package.yml b/.gitea/workflows/package.yml index 86907da..2e5fb22 100644 --- a/.gitea/workflows/package.yml +++ b/.gitea/workflows/package.yml @@ -112,6 +112,54 @@ jobs: --username "${REGISTRY_USERNAME}" \ --password-stdin + - name: Materialize runtime env file + env: + TJWATER_SERVER_ENV: ${{ secrets.TJWATER_SERVER_ENV }} + run: | + if [ -z "${TJWATER_SERVER_ENV}" ]; then + echo "Missing required repository secret: TJWATER_SERVER_ENV" + echo "Store the backend .env file content as a multiline Gitea repository secret named TJWATER_SERVER_ENV." + exit 1 + fi + + printf '%s\n' "${TJWATER_SERVER_ENV}" > .env + chmod 600 .env + + required_env_keys=( + ENVIRONMENT + NETWORK_NAME + SECRET_KEY + ENCRYPTION_KEY + DB_NAME + DB_HOST + DB_PORT + DB_USER + DB_PASSWORD + TIMESCALEDB_DB_NAME + TIMESCALEDB_DB_HOST + TIMESCALEDB_DB_PORT + TIMESCALEDB_DB_USER + TIMESCALEDB_DB_PASSWORD + METADATA_DB_NAME + METADATA_DB_HOST + METADATA_DB_PORT + METADATA_DB_USER + METADATA_DB_PASSWORD + DATABASE_ENCRYPTION_KEY + ) + + missing_keys=() + for key in "${required_env_keys[@]}"; do + if ! grep -Eq "^[[:space:]]*${key}=" .env; then + missing_keys+=("$key") + fi + done + + if [ "${#missing_keys[@]}" -gt 0 ]; then + echo "TJWATER_SERVER_ENV is missing required keys: ${missing_keys[*]}" + exit 1 + fi + - name: Build and Push Image run: | if [ -z "${IMAGE_NAME:-}" ] || [ -z "${IMAGE_TAG:-}" ]; then @@ -165,6 +213,16 @@ jobs: webhook_url=$(echo "$webhook_url" | xargs) + if [ -z "$webhook_url" ]; then + echo "Missing required repository variable: DEPLOY_WEBHOOK_URL" + return 1 + fi + + if [ -z "$token" ]; then + echo "Missing required repository secret: DEPLOY_WEBHOOK_TOKEN" + return 1 + fi + echo "[$label] Calling webhook: $webhook_url" http_code=$(curl -sS -D /tmp/deploy_headers.txt -o /tmp/deploy_response.txt -w "%{http_code}" -X POST "$webhook_url" \