diff --git a/.gitea/workflows/docker-deploy.yml b/.gitea/workflows/docker-deploy.yml index aaeed62..c2bed28 100644 --- a/.gitea/workflows/docker-deploy.yml +++ b/.gitea/workflows/docker-deploy.yml @@ -8,7 +8,7 @@ on: concurrency: group: pk-lab-server-production - cancel-in-progress: false + cancel-in-progress: true jobs: verify-deploy: @@ -62,24 +62,8 @@ jobs: if: gitea.event_name == 'push' && gitea.ref == 'refs/heads/main' run: | set -eu - secret_volume=pk-lab-production-secrets - docker volume create "$secret_volume" >/dev/null - docker run --rm \ - -e INITIAL_POSTGRES_PASSWORD="$POSTGRES_PASSWORD" \ - -e INITIAL_TOKEN_SECRET="$TOKEN_SECRET" \ - -v "$secret_volume:/secrets" \ - alpine:3.20 sh -eu -c ' - umask 077 - if [ ! -s /secrets/postgres-password ]; then - if [ -n "$INITIAL_POSTGRES_PASSWORD" ]; then printf %s "$INITIAL_POSTGRES_PASSWORD" > /secrets/postgres-password; else head -c 48 /dev/urandom | base64 > /secrets/postgres-password; fi - fi - if [ ! -s /secrets/token-secret ]; then - if [ -n "$INITIAL_TOKEN_SECRET" ]; then printf %s "$INITIAL_TOKEN_SECRET" > /secrets/token-secret; else head -c 64 /dev/urandom | base64 > /secrets/token-secret; fi - fi - ' - POSTGRES_PASSWORD="$(docker run --rm -v "$secret_volume:/secrets:ro" alpine:3.20 cat /secrets/postgres-password)" - TOKEN_SECRET="$(docker run --rm -v "$secret_volume:/secrets:ro" alpine:3.20 cat /secrets/token-secret)" - export POSTGRES_PASSWORD TOKEN_SECRET + test -n "$POSTGRES_PASSWORD" + test -n "$TOKEN_SECRET" export DEPLOY_IMAGE="pk-lab-server:$SOURCE_REVISION" sh scripts/deploy.sh curl --fail --silent --show-error "http://127.0.0.1:$DEPLOY_PORT/health" diff --git a/README.md b/README.md index ebc8932..f1a3c66 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ ## CI 所需配置 -后端首次部署会在 Docker 命名卷 `pk-lab-production-secrets` 中自动生成并持久保存数据库密码和令牌密钥;也可在首次部署前配置 Secrets `POSTGRES_PASSWORD`、`TOKEN_SECRET`。上线真实登录前再配置两套 `XHS_*_APP_ID/SECRET`;拉取源码默认使用 Gitea 工作流自带令牌,也可用 `GITEA_TOKEN` 覆盖。Variables:`DEPLOY_PORT`(默认 `18082`)、`PUBLIC_BASE_URL`、`CORS_ORIGINS`、`TEST_AUTH_ENABLED`。默认允许 `3000`(综合版)和 `3002`(饭类独立版)访问。 +部署前必须由仓库所有者配置 Secrets `POSTGRES_PASSWORD`、`TOKEN_SECRET`;上线真实登录前再配置两套 `XHS_*_APP_ID/SECRET`。拉取源码默认使用 Gitea 工作流自带令牌,也可用 `GITEA_TOKEN` 覆盖。Variables:`DEPLOY_PORT`(默认 `18082`)、`PUBLIC_BASE_URL`、`CORS_ORIGINS`、`TEST_AUTH_ENABLED`。默认允许 `3000`(综合版)和 `3002`(饭类独立版)访问。 当前流水线默认 `TEST_AUTH_ENABLED=true`,让两个公网预览可以创建明确隔离的测试身份。接入真实小红书 App ID/Secret 后,必须把该变量改成 `false`,关闭 `dev:` 登录路径。