fix: scope production action trigger guidance

This commit is contained in:
Jesse_Chen
2026-07-21 03:05:36 +08:00
parent a57f233d45
commit 92cc635b45
2 changed files with 24 additions and 1 deletions
+1 -1
View File
@@ -120,7 +120,7 @@ The server has a persistent 2 GB `/swapfile`. UFW permits only SSH `22000/tcp`,
## Manual deployment with GitHub Actions
Pushes and pull requests do not start GitHub Actions automatically. Run the required validation workflows from the Actions page, then manually start `.github/workflows/deploy-production.yml` for the tested branch. The deployment workflow syncs that revision with `rsync`, preserves `/opt/jyotisha-app/.env.production`, rebuilds both Docker services, and verifies the public login route, logged-out account response, and private Python health endpoint.
Production pushes and pull requests do not start GitHub Actions automatically. Run the required validation workflows from the Actions page, then manually start `.github/workflows/deploy-production.yml` for the tested branch. The deployment workflow syncs that revision with `rsync`, preserves `/opt/jyotisha-app/.env.production`, rebuilds both Docker services, and verifies the public login route, logged-out account response, and private Python health endpoint.
Required GitHub Actions secret:
@@ -243,6 +243,29 @@ function logicalShellLines(script: string): string[] {
.filter(Boolean);
}
test("production manual-trigger wording is scoped and staging automation stays explicit", () => {
const readme = readFileSync(deploymentReadmeUrl, "utf8");
const production = markdownSection(
readme,
"## Manual deployment with GitHub Actions",
);
const staging = markdownSection(readme, "## Staging deployment");
assert.doesNotMatch(
readme,
/^Pushes and pull requests do not start GitHub Actions automatically\./m,
);
assert.match(
production,
/^Production pushes and pull requests do not start GitHub Actions automatically\./m,
);
assert.match(
staging,
/Staging Backend Quality Gate[\s\S]*only a successful push to `staging` can publish/i,
);
assert.match(staging, /automatic `Deploy staging`/i);
});
test("first staging deployment is executable and cannot route publish through main", () => {
const readme = readFileSync(deploymentReadmeUrl, "utf8");
const staging = markdownSection(readme, "## Staging deployment");