Skip to content

feat(actions): add run-coolify-oneshot release-phase action - #16

Merged
Andreas-Garcia merged 1 commit into
mainfrom
feature/run-coolify-oneshot
Oct 27, 2026
Merged

Andreas-Garcia merged 1 commit into
mainfrom
feature/run-coolify-oneshot

Conversation

@Andreas-Garcia

Copy link
Copy Markdown
Member

Summary

New app-agnostic composite action run-coolify-oneshot: runs a one-off command (typically manage.py migrate) in a throwaway container on the Coolify host, from a given image, as a release phase before trigger-coolify-deploy.

Migrations that run in the app's start script live inside Coolify's healthcheck window, so a slow one gets the deploy rolled back (gtmt-api v14.1.0 on prod, twice). Running them from CI has no such window.

Changes

  • .github/actions/run-coolify-oneshot/action.yml: SSHes to the server, resolves exactly one running container of the app/environment (fails fast otherwise), reuses its env and network, pulls the image (digest recommended), runs the command under timeout_minutes (default 60), streams output and propagates the exit code. Cleans up its container and env file on exit, removes stale one-offs of the same app/env, and optionally alerts Discord on failure.
  • README section and table-of-contents entry; CHANGELOG entry under [Unreleased].

Test plan

  • Action YAML parses; the remote script passes bash -n and shellcheck (only shebang/unused-function infos, as it is an inline heredoc)
  • First real run: grow-api hotfix v14.1.1 deploy (staging, then prod) once this is tagged v4.5.0

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Andreas-Garcia
Andreas-Garcia merged commit dba0d83 into main Oct 27, 2026
1 check passed
@Andreas-Garcia
Andreas-Garcia deleted the feature/run-coolify-oneshot branch October 27, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant