Skip to content

feat: create releases without promoting a channel - #948

Merged
alongubkin merged 3 commits into
mainfrom
alon/alien-1328-create-only-releases
Oct 8, 2026
Merged

alongubkin merged 3 commits into
mainfrom
alon/alien-1328-create-only-releases

Conversation

@alongubkin

@alongubkin alongubkin commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

This PR adds create-only releases to Alien.

SDKs and the CLI stay versioned as today.

User flow: You want to release normally

No changes needed. alien release still advances production; --channel staging still advances staging.

User flow: You want to publish now and deploy later

alien release --no-promote --title "Fix checkout"

This saves a release without changing a channel or scheduling deployment updates. The output includes its ID and the command to promote it later.

alien releases promote <release-id> --channel production

You can also use Promote this exact release in the dashboard.

User flow: You want to reuse your CI build

Download the successful CI build's .alien artifact, then run:

alien release --prebuilt --no-promote --title "Fix checkout"

No application rebuild is needed. Local image artifacts are pushed; existing remote image URIs are reused. Promotion later uses the saved release, even if the branch has advanced.

User flow: You want an urgent production fix

Create the release with --no-promote, inspect it, then promote its ID directly to production. Staging is optional.

How we tested this locally

  • Ran the built CLI against a local HTTP API and PostgreSQL using the test platform: create-only left production, staging, deployment rows, and update queues unchanged.

  • Published a newer release, then promoted the original ID: only its production deployment was queued. The saved CI artifact was unchanged, and --title persisted.

  • Repeated create-only through the CLI's stackless path; channels and update queues stayed unchanged.

  • Executed both printed promotion commands with a differently linked project and conflicting project/workspace/server defaults. Each command promoted only the selected project.

This checks release creation and scheduling, not a cloud rollout.

  • Captured actual HTTP requests for prebuilt and stackless releases: promote: false is sent and channel is omitted.
  • Verified the prebuilt stack is reused unchanged, including its remote image URI.
  • Verified --no-promote works with the default arguments, rejects an explicit --channel, and rejects manager mode before any network or build work.
  • Verified the generated TypeScript SDK preserves explicit false and omitted defaults.

cargo check -p alien-cli, the executable build, release-command tests, and Rust/TypeScript CI pass. The changed Rust file passes formatting checks.

Client artifacts were regenerated with generate:api-copy-openapi and generate:api-platform-sdk. TypeScript package CI passes, including the generated SDK build. A separate local full-SDK rebuild exceeded the Node heap limit; request serialization was checked locally. Server support must be deployed before this CLI is published.

@enclave-ai

enclave-ai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Enclave skipped this draft pull request. It will run automatically when you mark the PR as Ready for review.

@alongubkin
alongubkin marked this pull request as ready for review October 8, 2026 11:28
@greptile-apps

greptile-apps Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 5/5

[Critical risk] Adds optional channel promotion control to release API.

The PR appears safe to merge; the previous promotion-hint issue is fixed and no new actionable issue was found.

What we checked:

  • Promotion accepts the saved project: The project lookup accepts an ID or a name, so the hint can use the saved project ID instead of the directory's linked project.

Summary

Adds --no-promote so users can save a release without advancing a channel. The Platform SDK contract adds the optional promote field.

  • Normal releases still advance their selected channel.
  • Built and stackless create-only releases send promote: false without a channel.
  • Both printed promotion commands now retain the project, workspace, and server.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
    A[alien release] --> B{--no-promote?}
    B -->|No| C[Save release and advance channel]
    B -->|Yes| D[Save release without changing channel]
    D --> E[Print promotion command with saved context]
    E --> F[User promotes the saved release later]
Loading

Reviews (2) · Last reviewed commit: "fix: preserve release target in promotio..." · Reviewed by Greptile

Comment thread crates/alien-cli/src/commands/release.rs Outdated
@alongubkin
alongubkin merged commit 918c7dc into main Oct 8, 2026
24 checks passed
@alongubkin
alongubkin deleted the alon/alien-1328-create-only-releases branch October 8, 2026 12:02
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