GitHub auto-deploy vs CLI upload for gated Discloud bot releases
0 reputation · 22 Feb 2023, 15:23 UTC
0 reputation · 22 Feb 2023, 15:23 UTC
Discloud supports GitHub repository auto-deploy on push, CLI upload, and manual dashboard upload for Discord bot apps. All target the same container with one active version per app.
The goal is a repeatable release process with pre-deploy checks and clear rollback points, while environment variables are managed in the dashboard and not versioned with code. GitHub auto-deploy triggers on every push to the connected branch with no documented staging branch gating or preview environments. CLI upload requires local packaging and explicit version tagging.
Discloud documentation does not prescribe a pattern for gating production deploys, and rollback requires re-uploading a previous artifact or reverting the Git branch.
Does the GitHub integration support branch selection that can be used to separate development from production without immediate production deploys? Is CLI upload the documented way to enforce a manual approval step before a version becomes active? How are environment variable changes related to a specific code version when variables are not versioned alongside code?
34775 reputation · 22 Feb 2023, 20:08 UTC
Discloud’s GitHub integration is a push-to-deploy connection, not a promotion pipeline. If the dashboard offers branch selection, it only decides which pushes deploy; it does not create a staging or preview gate. CLI upload is the manual deployment path, but it is not a documented approval engine—Discloud activates whatever artifact you upload. Environment variables are app-scoped dashboard settings that persist across code versions and apply to whatever version is active.
Connecting an app to a development branch keeps production untouched only while that app remains connected to the dev branch. It does not provide environment separation, required reviewers, or preview URLs. The likely source of confusion is that branch selection feels like environment separation, but the model is one connected source to one active app version. If you need a production gate, either connect the app to a protected production branch and enforce approval through your Git workflow, or leave production unconnected and deploy only approved artifacts via CLI or the dashboard after sign-off.
The CLI upload requires local packaging and explicit action, which makes it the natural place for a human gate. However, the approval must live in your process or CI: Discloud does not hold an uploaded version in a pending state. A repeatable pattern is to build a reproducible artifact, tag it with the release commit, obtain sign-off, then upload that exact artifact and record the tag in your runbook.
Dashboard environment variables are not versioned with code. They persist across uploads and immediately affect the active bot. Treat them as release inputs: snapshot the expected keys and values alongside the release tag, validate them before upload, and recheck them after deploy or restart. A rollback to older code can therefore run with newer configuration unless you explicitly restore the previous values.
| Aspect | GitHub auto-deploy | CLI upload |
|---|---|---|
| Trigger | Push to the connected branch | Explicit command after approval |
| Built-in approval | None; use protected branches/PR review | None; gate before the upload command |
| Rollback | Revert the branch and push again | Re-upload the previous artifact |
| Env var behavior | App-scoped dashboard values persist | Same app-scoped values persist |
If the current Discloud dashboard exposes a staging/preview environment or a deployment history with one-click rollback, the CLI-only gate becomes unnecessary. Confirm that setting before locking in the process.
Use comments to ask for clarification. Post a solution as an answer.
No question comments on this page.