配置(#24): 放宽发布验收配置校验 (#22)

Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
2026-06-11 02:48:03 -07:00
committed by GitHub
parent c39bfd39dd
commit 3e6318dcdf
2 changed files with 40 additions and 17 deletions
+36 -14
View File
@@ -34,7 +34,7 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
timeout-minutes: 20 timeout-minutes: 20
env: env:
STAGING_BASE_URL: ${{ secrets.STAGING_BASE_URL || vars.STAGING_BASE_URL }} STAGING_BASE_URL: ${{ secrets.STAGING_BASE_URL || vars.STAGING_BASE_URL || 'https://tapi.hifast.biz' }}
if: >- if: >-
${{ ${{
github.event_name == 'workflow_dispatch' || github.event_name == 'workflow_dispatch' ||
@@ -65,7 +65,7 @@ jobs:
ACCEPTANCE_ADMIN_PASSWORD: ${{ secrets.ACCEPTANCE_ADMIN_PASSWORD }} ACCEPTANCE_ADMIN_PASSWORD: ${{ secrets.ACCEPTANCE_ADMIN_PASSWORD }}
ACCEPTANCE_USER_EMAIL: ${{ secrets.ACCEPTANCE_USER_EMAIL }} ACCEPTANCE_USER_EMAIL: ${{ secrets.ACCEPTANCE_USER_EMAIL }}
ACCEPTANCE_USER_PASSWORD: ${{ secrets.ACCEPTANCE_USER_PASSWORD }} ACCEPTANCE_USER_PASSWORD: ${{ secrets.ACCEPTANCE_USER_PASSWORD }}
STAGING_BASE_URL: ${{ secrets.STAGING_BASE_URL || vars.STAGING_BASE_URL }} STAGING_BASE_URL: ${{ secrets.STAGING_BASE_URL || vars.STAGING_BASE_URL || 'https://tapi.hifast.biz' }}
STAGING_DB_HOST: ${{ secrets.STAGING_DB_HOST }} STAGING_DB_HOST: ${{ secrets.STAGING_DB_HOST }}
STAGING_DB_USER: ${{ secrets.STAGING_DB_USER }} STAGING_DB_USER: ${{ secrets.STAGING_DB_USER }}
STAGING_DB_PASSWORD: ${{ secrets.STAGING_DB_PASSWORD }} STAGING_DB_PASSWORD: ${{ secrets.STAGING_DB_PASSWORD }}
@@ -75,13 +75,24 @@ jobs:
run: | run: |
set -euo pipefail set -euo pipefail
missing=() if [ -z "${STAGING_BASE_URL:-}" ]; then
required=( echo "STAGING_BASE_URL 未配置且默认值不可用" | tee "$ACCEPTANCE_FAILURE_LOG"
{
echo "## 发布验收测试"
echo
echo "状态:配置错误"
echo
echo "- `STAGING_BASE_URL` 不能为空。"
} >> "$GITHUB_STEP_SUMMARY"
exit 1
fi
missing_optional=()
optional=(
ACCEPTANCE_ADMIN_EMAIL ACCEPTANCE_ADMIN_EMAIL
ACCEPTANCE_ADMIN_PASSWORD ACCEPTANCE_ADMIN_PASSWORD
ACCEPTANCE_USER_EMAIL ACCEPTANCE_USER_EMAIL
ACCEPTANCE_USER_PASSWORD ACCEPTANCE_USER_PASSWORD
STAGING_BASE_URL
STAGING_DB_HOST STAGING_DB_HOST
STAGING_DB_USER STAGING_DB_USER
STAGING_DB_PASSWORD STAGING_DB_PASSWORD
@@ -90,24 +101,35 @@ jobs:
STAGING_REDIS_PASSWORD STAGING_REDIS_PASSWORD
) )
for key in "${required[@]}"; do for key in "${optional[@]}"; do
if [ -z "${!key:-}" ]; then if [ -z "${!key:-}" ]; then
missing+=("$key") missing_optional+=("$key")
fi fi
done done
if [ "${#missing[@]}" -gt 0 ]; then : > "$ACCEPTANCE_FAILURE_LOG"
printf '缺少必需 GitHub Actions secrets/vars\n' | tee "$ACCEPTANCE_FAILURE_LOG"
printf -- '- %s\n' "${missing[@]}" | tee -a "$ACCEPTANCE_FAILURE_LOG" if [ "${#missing_optional[@]}" -gt 0 ]; then
printf '缺少可选 GitHub Actions secrets/vars,部分验收用例将被跳过:\n' | tee -a "$ACCEPTANCE_FAILURE_LOG"
printf -- '- %s\n' "${missing_optional[@]}" | tee -a "$ACCEPTANCE_FAILURE_LOG"
{ {
echo "## 发布验收测试" echo "## 发布验收测试"
echo echo
echo "状态:配置缺失" echo "状态:部分配置缺失"
echo echo
echo "缺少以下 secrets/vars" echo "缺少以下可选 secrets/vars,对应验收用例会在测试阶段自动跳过"
printf -- '- `%s`\n' "${missing[@]}" printf -- '- `%s`\n' "${missing_optional[@]}"
echo
echo "- `STAGING_BASE_URL`${STAGING_BASE_URL}"
} >> "$GITHUB_STEP_SUMMARY"
else
{
echo "## 发布验收测试"
echo
echo "状态:配置检查通过"
echo
echo "- `STAGING_BASE_URL`${STAGING_BASE_URL}"
} >> "$GITHUB_STEP_SUMMARY" } >> "$GITHUB_STEP_SUMMARY"
exit 1
fi fi
- name: 下载依赖模块 - name: 下载依赖模块
+4 -3
View File
@@ -10,9 +10,11 @@ go test ./tests/acceptance/... -staging-url=https://tapi.hifast.biz
Without credentials, tests that require admin/user login or NodeSecret are skipped and unauthenticated error-path checks still run. Without credentials, tests that require admin/user login or NodeSecret are skipped and unauthenticated error-path checks still run.
## Required secrets ## Workflow configuration
The staging workflow should provide these values through GitHub Actions secrets or environment variables: `STAGING_BASE_URL` should be provided through GitHub Actions secrets or variables. When omitted, the workflow falls back to `https://tapi.hifast.biz`.
The following secrets are optional. When any of them are missing, the workflow still runs and the corresponding acceptance cases are skipped automatically:
- `ACCEPTANCE_ADMIN_EMAIL` - `ACCEPTANCE_ADMIN_EMAIL`
- `ACCEPTANCE_ADMIN_PASSWORD` - `ACCEPTANCE_ADMIN_PASSWORD`
@@ -24,7 +26,6 @@ The staging workflow should provide these values through GitHub Actions secrets
- `STAGING_DB_NAME` - `STAGING_DB_NAME`
- `STAGING_REDIS_ADDR` - `STAGING_REDIS_ADDR`
- `STAGING_REDIS_PASSWORD` - `STAGING_REDIS_PASSWORD`
- `STAGING_BASE_URL`
`ACCEPTANCE_NODE_SECRET` is optional. When DB credentials are present, the loader reads NodeSecret from the staging `system` table instead of storing it as a long-lived secret. `ACCEPTANCE_NODE_SECRET` is optional. When DB credentials are present, the loader reads NodeSecret from the staging `system` table instead of storing it as a long-lived secret.