From c5213d4415986fcac43905bce9dce3699b03aba9 Mon Sep 17 00:00:00 2001 From: diegosouzapw Date: Tue, 28 Apr 2026 09:58:44 -0300 Subject: [PATCH] chore(workflow): update generate-release with Phase 2 validation step --- .agents/workflows/generate-release.md | 66 ++++++++++++++++++--------- 1 file changed, 44 insertions(+), 22 deletions(-) diff --git a/.agents/workflows/generate-release.md b/.agents/workflows/generate-release.md index 8d0ac8ca17..aec69380de 100644 --- a/.agents/workflows/generate-release.md +++ b/.agents/workflows/generate-release.md @@ -213,11 +213,43 @@ Inform the user: --- -## Phase 2: Post-Merge (only after user confirms) +## Phase 2: Post-Merge Validation (Local VPS) -> Run these steps only AFTER the user has merged the PR. +> Run these steps only AFTER the user has merged the PR into `main` and all CI jobs have passed. -### 11. Create Git Tag and GitHub Release (MANDATORY) +### 11. Deploy to Local VPS for Final Validation (MANDATORY) + +Before cutting the official git tag and publishing to the world, deploy the `main` branch to the Local VPS for a final homologation test. + +```bash +git checkout main +git pull origin main + +# Build and pack locally +cd /home/diegosouzapw/dev/proxys/9router && rm -f omniroute-*.tgz && rm -rf .next/cache app/.next/cache && npm run build:cli && rm -rf app/logs app/coverage app/.git app/.app-build-backup* && npm pack --ignore-scripts + +# Deploy to LOCAL VPS (192.168.0.15) +scp omniroute-*.tgz root@192.168.0.15:/tmp/ +ssh root@192.168.0.15 "npm install -g /tmp/omniroute-*.tgz --ignore-scripts && cd /usr/lib/node_modules/omniroute/app && npm rebuild better-sqlite3 && pm2 delete omniroute 2>/dev/null; pm2 start /root/.omniroute/ecosystem.config.cjs --update-env && pm2 save && echo '✅ Local done'" + +# Verify +curl -s -o /dev/null -w "LOCAL: HTTP %{http_code}\n" http://192.168.0.15:20128/ +``` + +### 12. 🛑 STOP — Notify User & Await Final OK + +**This is a mandatory stop point.** +Inform the user that the `main` branch is now running on the Local VPS. +Wait for the user to manually test and give the **OK**. +**DO NOT proceed to Phase 3 until the user confirms the local deploy is stable.** + +--- + +## Phase 3: Official Launch + +> Run these steps only AFTER the user gives the final OK from the Phase 2 local validation. + +### 13. Create Git Tag and GitHub Release (MANDATORY) // turbo @@ -239,7 +271,7 @@ gh release create "v$VERSION" --title "v$VERSION" --notes "$NOTES" --target main > **CRITICAL**: Docker Hub and npm MUST always publish the same version. > The Docker image is built automatically via GitHub Actions when a new tag is pushed. -> After pushing the tag in step 11-12, **verify the workflow runs**: +> After pushing the tag in step 13, **verify the workflow runs**: ```bash # Verify the Docker workflow triggered @@ -247,40 +279,30 @@ gh run list --repo diegosouzapw/OmniRoute --workflow docker-publish.yml --limit # Wait for the Docker build to complete (usually 5–10 min) gh run watch --repo diegosouzapw/OmniRoute - -# After completion, verify on Docker Hub: -# https://hub.docker.com/r/diegosouzapw/omniroute/tags ``` -If the Docker build was not triggered automatically, trigger it manually: +### 15. Publish to NPM (Optional/Automated) + +Normally handled by CI, but if manual publish is required: ```bash -gh workflow run docker-publish.yml --repo diegosouzapw/OmniRoute --ref v2.x.y +npm publish ``` -### 15. Deploy to BOTH VPS environments (MANDATORY) +### 16. Deploy to AKAMAI VPS (Production) -> Always deploy to **both** environments after every release. -> See `/deploy-vps` workflow for detailed steps. +Now that the release is officially cut, deploy it to the Akamai VPS. ```bash -# Build and pack locally -cd /home/diegosouzapw/dev/proxys/9router && rm -f omniroute-*.tgz && rm -rf .next/cache app/.next/cache && npm run build:cli && rm -rf app/logs app/coverage app/.git app/.app-build-backup* && npm pack --ignore-scripts - -# Deploy to LOCAL VPS (192.168.0.15) -scp omniroute-*.tgz root@192.168.0.15:/tmp/ -ssh root@192.168.0.15 "npm install -g /tmp/omniroute-*.tgz --ignore-scripts && cd /usr/lib/node_modules/omniroute/app && npm rebuild better-sqlite3 && pm2 delete omniroute 2>/dev/null; pm2 start /root/.omniroute/ecosystem.config.cjs --update-env && pm2 save && echo '✅ Local done'" - # Deploy to AKAMAI VPS (69.164.221.35) scp omniroute-*.tgz root@69.164.221.35:/tmp/ ssh root@69.164.221.35 "npm install -g /tmp/omniroute-*.tgz --ignore-scripts && cd /usr/lib/node_modules/omniroute/app && npm rebuild better-sqlite3 && pm2 delete omniroute 2>/dev/null; pm2 start /root/.omniroute/ecosystem.config.cjs --update-env && pm2 save && echo '✅ Akamai done'" -# Verify both -curl -s -o /dev/null -w "LOCAL: HTTP %{http_code}\n" http://192.168.0.15:20128/ +# Verify curl -s -o /dev/null -w "AKAMAI: HTTP %{http_code}\n" http://69.164.221.35:20128/ ``` -### 16. Preserve release branch +### 17. Preserve release branch ```bash # Branch is kept for historical purposes. Do not delete.