Skip to content

Claude/update prod runner script lq2g s - #62

Merged
gamblecodezcom merged 4 commits into
mainfrom
claude/update-prod-runner-script-Lq2gS
Feb 23, 2026
Merged

Claude/update prod runner script lq2g s#62
gamblecodezcom merged 4 commits into
mainfrom
claude/update-prod-runner-script-Lq2gS

Conversation

@gamblecodezcom

@gamblecodezcom gamblecodezcom commented Feb 23, 2026

Copy link
Copy Markdown
Owner

CodeAnt-AI Description

Update deployment flow to use fetch+hard-reset, clean untracked files, and stop service before updating

What Changed

  • Deployment commands now use git fetch + hard reset to origin/main (replaces git pull) and runs git clean, avoiding hangs on local changes or merge conflicts and removing untracked files
  • Deployment scripts stop the running service before updating files to prevent file-lock issues during update
  • CLI/bot deploy messages were updated to show "git update" status and include better error context and current commit short SHA when available

Impact

✅ Fewer deploy failures due to dirty working trees
✅ Fewer file-lock errors during updates
✅ Cleaner working tree after deploy (untracked files removed)

💡 Usage Guide

Checking Your Pull Request

Every time you make a pull request, our system automatically looks through it. We check for security issues, mistakes in how you're setting up your infrastructure, and common code problems. We do this to make sure your changes are solid and won't cause any trouble later.

Talking to CodeAnt AI

Got a question or need a hand with something in your pull request? You can easily get in touch with CodeAnt AI right here. Just type the following in a comment on your pull request, and replace "Your question here" with whatever you want to ask:

@codeant-ai ask: Your question here

This lets you have a chat with CodeAnt AI about your pull request, making it easier to understand and improve your code.

Example

@codeant-ai ask: Can you suggest a safer alternative to storing this secret?

Preserve Org Learnings with CodeAnt

You can record team preferences so CodeAnt AI applies them in future reviews. Reply directly to the specific CodeAnt AI suggestion (in the same thread) and replace "Your feedback here" with your input:

@codeant-ai: Your feedback here

This helps CodeAnt AI learn and adapt to your team's coding style and standards.

Example

@codeant-ai: Do not flag unused imports.

Retrigger review

Ask CodeAnt AI to review the PR again, by typing:

@codeant-ai: review

Check Your Repository Health

To analyze the health of your code repository, visit our dashboard at https://app.codeant.ai. This tool helps you identify potential issues and areas for improvement in your codebase, ensuring your repository maintains high standards of code health.

Summary by CodeRabbit

  • Chores
    • Updated deployment workflow with improved git operations to ensure cleaner state management.
    • Added cleanup procedures during deployment process.
    • Enhanced service pre-stop sequence for better deployment orchestration.

- Add tipsStore with 15 default sweepstakes-safe tips (id, text, enabled)
- Add TIPS_GROUP constant (@GambleCodezPrizeHub, overridable via env)
- Persist tipsStore in runtime-state.json (snapshot + load)
- Start tips scheduler on bot launch: posts one random enabled tip
  silently every 4 hours to @GambleCodezPrizeHub (disable_notification)
- Scheduler is re-armable when admin changes the interval

Admin commands:
  /tips  /t  /tp    — Tips Manager dashboard with inline buttons
  /tiplist          — Show all tips with IDs and preview
  /tipadd           — Prompt for new tip text (state: await_tip_add_text)
  /tipremove        — Select tip by button to delete
  /tipedit          — Select tip by button then prompt for new text
  /tiptoggle        — Toggle entire tips system on/off
  /tiptest          — Send one random tip preview to admin in DM
  /tipsettings      — Show settings and update interval (hours)

Inline button actions:
  tips_cmd_{add,edit,remove,toggle,list,test,settings}
  tip_remove_<id>       — remove a specific tip
  tip_edit_select_<id>  — prompt to edit a specific tip
  tip_toggle_<id>       — enable/disable individual tip

pendingAction state machine:
  await_tip_add_text       → save new tip, reply "Added as Tip #X"
  await_tip_edit_text      → update tip text, reply "Tip #X updated"
  await_tip_settings_interval → update interval + restart scheduler

https://claude.ai/code/session_01X3PxGFF5zzKptQwVkjYzzN
GitHub CI:
- deploy.yml: disable `deploy` job with `if: false` — GitHub Actions
  must NEVER restart or launch the bot; it is code storage only.
  Quality-gates job (syntax, tests, audit) continues to run on push.
- ci.yml: unchanged — already runs tests without touching Telegram.

index.js runtime guards (layered):
- CI / smoke-test layer: if CI=true or DISABLE_RUNTIME=1 → log and
  skip all runtime startup without calling process.exit() so that
  `require('./index.js')` in smoke tests completes cleanly.
- VPS-only layer: if DEVICE !== "vps" → print warning and exit(0).
  Set DEVICE=vps in the VPS .env to allow the bot to start.

/deploy admin command:
- Restart logic is systemctl-only (no PM2); unchanged from original.

deploy.sh (new, VPS-only):
- git fetch --all && git reset --hard origin/main
- npm ci --omit=dev
- systemctl restart runewager
- systemctl is-active confirmation

.env.example:
- Added DEVICE=vps entry so prod-run.sh copies it correctly.

https://claude.ai/code/session_01X3PxGFF5zzKptQwVkjYzzN
…scripts

- /deploy Telegram command: git pull -> git fetch --all + git reset --hard
  origin/main + git clean -fd. Prevents hangs caused by dirty working trees,
  untracked files, or merge conflicts that made /deploy stuck.
- prod-run.sh: same fetch+reset change for the initial code-pull step.
- deploy.sh: add systemctl stop before git ops (prevents file locks during
  reset) and git clean -fd after reset (removes stale untracked files).

All three paths now use the same hard-reset strategy. Systemd service,
CI guard (CI=true/DISABLE_RUNTIME=1), and DEVICE=vps guard are unchanged
as they were already correct.

https://claude.ai/code/session_01X3PxGFF5zzKptQwVkjYzzN
@codeant-ai

codeant-ai Bot commented Feb 23, 2026

Copy link
Copy Markdown

CodeAnt AI is reviewing your PR.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@coderabbitai

coderabbitai Bot commented Feb 23, 2026

Copy link
Copy Markdown

Caution

Review failed

The pull request is closed.

📝 Walkthrough

Walkthrough

Three deployment-related files are updated to replace git pull with a more explicit fetch-reset-clean sequence (git fetch --all, git reset --hard origin/main, git clean -fd). Additionally, deploy.sh introduces a pre-stop systemctl hook to gracefully stop the runewager service before deployment.

Changes

Cohort / File(s) Summary
Shell deployment scripts
deploy.sh, prod-run.sh
Replaced git pull with explicit fetch --allreset --hard origin/maingit clean -fd sequence. deploy.sh adds Step 0 pre-stop hook using systemctl; both update messaging to reflect the new flow and include short HEAD revision in success output.
Node.js deployment flow
index.js
Replaced git pull step with two-phase approach: fetch --all followed by conditional reset --hard origin/main with subsequent git clean -fd. Updated status label from "git pull" to "git update" and adjusted error handling to fall back to fetch results on reset failure.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Poem

🐰 A cleaner state awaits with each deploy,
Fetch, reset, and scrub—no more pull dismay,
Untracked files vanish, the tree shines bright,
Three scripts aligned in deterministic delight,
Where systemctl pauses before the new way!


Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands and usage tips.

@gamblecodezcom
gamblecodezcom merged commit 5168fb7 into main Feb 23, 2026
1 check passed
@gamblecodezcom
gamblecodezcom deleted the claude/update-prod-runner-script-Lq2gS branch February 23, 2026 01:15
gamblecodezcom added a commit that referenced this pull request Feb 23, 2026
@codeant-ai codeant-ai Bot added the size:S This PR changes 10-29 lines, ignoring generated files label Feb 23, 2026
@codeant-ai

codeant-ai Bot commented Feb 23, 2026

Copy link
Copy Markdown

Nitpicks 🔍

🔒 No security issues identified
⚡ Recommended areas for review

  • Data-loss risk
    The fetch+reset sequence also runs git -C "$PROJECT_DIR" clean -fd, which can delete untracked runtime directories (logs, data, backups) and user-managed files. While the script later recreates some dirs, important files (backups, transient uploads, user data) could be lost.

  • Data-loss risk
    The new use of git clean -fd will remove all untracked files and directories (including items in .gitignore such as logs/, data/, backups/, .env, or other runtime artifacts). This can lead to accidental deletion of runtime data or local configuration on the VPS.

@codeant-ai

codeant-ai Bot commented Feb 23, 2026

Copy link
Copy Markdown

CodeAnt AI finished reviewing your PR.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S This PR changes 10-29 lines, ignoring generated files

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants