Skip to content

Keep release publishing on WarpBuild - #3483

Merged
lawrencecchen merged 1 commit into
mainfrom
task-keep-warpbuild-publishing
May 4, 2026
Merged

lawrencecchen merged 1 commit into
mainfrom
task-keep-warpbuild-publishing

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented May 4, 2026 •

Copy link
Copy Markdown
Contributor

Summary

  • restore GitHub Actions/WarpBuild automatic nightly and v* release publishing
  • remove inactive CircleCI publishing workflows and scripts
  • keep CircleCI scoped to macOS CI checks

Verification

  • ruby YAML parse for .circleci/config.yml, .github/workflows/nightly.yml, .github/workflows/release.yml
  • actionlint on restored GitHub workflows, ignoring known custom WarpBuild runner labels
  • ./tests/test_ci_self_hosted_guard.sh
  • ./tests/test_ci_create_dmg_pinned.sh
  • node scripts/release_asset_guard.test.js
  • git diff --check

Notes

CircleCI release publishing would need secrets copied out of GitHub Actions. Local ~/.secrets files do not appear to contain the Apple signing or Sparkle release secrets by name, so leaving publishing on GitHub Actions is safer.


Summary by cubic

Keep macOS publishing on WarpBuild (GitHub Actions) and drop CircleCI publishing. Nightly runs on main pushes; tagged v* releases publish via Actions; CircleCI now only runs macOS checks.

  • Refactors

    • Restored GitHub Actions triggers in nightly.yml (push to main) and release.yml (push tags v*).
    • Simplified .circleci/config.yml to only macos-unit-tests, macos-debug-build, and macos-release-build; removed CircleCI nightly/release workflows and all publishing scripts.
  • Bug Fixes

    • release.yml: guard now supports workflow_dispatch without a tag by running in dry-run mode and not failing.

Written for commit 75c0f78. Summary will update on new commits.

Summary by CodeRabbit

  • Chores
    • Consolidated CI workflows to streamline macOS build/test jobs and removed legacy separate nightly/release pipelines.
    • Nightly workflow now runs on pushes to main in addition to manual triggers.
    • Release workflow now runs on tag pushes (v*), with safer guard behavior to avoid unintended publish actions.

@vercel

vercel Bot commented May 4, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
cmux Ready Ready Preview, Comment May 4, 2026 5:52am
cmux-staging Building Building Preview, Comment May 4, 2026 5:52am

@coderabbitai

coderabbitai Bot commented May 4, 2026 •

Copy link
Copy Markdown

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 56cd49de-d401-40da-aece-c92971c991bb

📥 Commits

Reviewing files that changed from the base of the PR and between e0a0c01 and 75c0f78.

📒 Files selected for processing (6)
  • .circleci/config.yml
  • .github/workflows/nightly.yml
  • .github/workflows/release.yml
  • scripts/ci/circleci-macos-release-common.sh
  • scripts/ci/circleci-nightly.sh
  • scripts/ci/circleci-release.sh
💤 Files with no reviewable changes (3)
  • scripts/ci/circleci-macos-release-common.sh
  • scripts/ci/circleci-nightly.sh
  • scripts/ci/circleci-release.sh
✅ Files skipped from review due to trivial changes (2)
  • .github/workflows/nightly.yml
  • .circleci/config.yml

📝 Walkthrough

Walkthrough

CircleCI macOS nightly/release workflows and supporting release scripts were removed; the CircleCI ci workflow was reduced to three macOS jobs. GitHub Actions nightly/release workflows were adjusted to add push triggers and make the release-asset guard safer when not running on a tag.

Changes

CI/CD Migration: CircleCI → GitHub Actions

Layer / File(s) Summary
CircleCI Workflow Simplification
.circleci/config.yml
workflows.ci.jobs now lists only macos-unit-tests, macos-debug-build, macos-release-build; per-job tags: ignore: /.*/ filters removed; workflows.nightly and workflows.release sections (and publish jobs) were deleted.
Removed CircleCI Release/Nightly Implementation
scripts/ci/circleci-macos-release-common.sh, scripts/ci/circleci-nightly.sh, scripts/ci/circleci-release.sh
All three scripts deleted, removing helper functions and the full CircleCI build/publish/notarize/sign/upload/appcast/asset-guard logic previously implemented there.
GitHub Actions Trigger + Guard Updates
.github/workflows/nightly.yml, .github/workflows/release.yml
nightly.yml now includes on.push.branches: [main]; release.yml now includes on.push.tags: 'v*'; the release-asset guard script now checks context.ref starts with refs/tags/ and exits early with dry-run outputs when not a tag.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Suggested labels

aardvark, codex

Poem

🐰 I nudged the scripts into a tidy heap,
CircleCI's night-watch put to sleep.
GitHub wakes with pushes to main,
Tags guarded gently, no frantic pain.
Hop, build, and publish — a lighter leap.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Keep release publishing on WarpBuild' directly describes the main objective: retaining release publishing on GitHub Actions/WarpBuild while removing it from CircleCI.
Description check ✅ Passed The description covers the core changes and testing performed, but lacks some template sections like Demo Video and the full Checklist; however, the Summary and Verification sections are comprehensive and address the primary requirements.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch task-keep-warpbuild-publishing

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
Review rate limit: 0/8 reviews remaining, refill in 59 minutes and 33 seconds.

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

@greptile-apps

greptile-apps Bot commented May 4, 2026 •

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR migrates nightly and release publishing from CircleCI back to GitHub Actions/WarpBuild by re-enabling push triggers on nightly.yml and release.yml, and removes the now-redundant CircleCI publishing jobs, workflows, and scripts. The idempotency guards (nightly tag SHA comparison, release asset guard) are preserved correctly in both workflows.

Confidence Score: 4/5

Safe to merge; P2 findings only — no build-correctness or security issues.

The migration is structurally sound: idempotency guards are intact, secrets usage is correct, and the CircleCI config is cleanly trimmed. Two P2 style concerns: rapid pushes to main can queue many nightly builds (no cancel-in-progress), and the workflow_dispatch dry-run path in release.yml emits a misleading notice when dispatched from a branch. Neither blocks publishing.

.github/workflows/nightly.yml (concurrency policy), .github/workflows/release.yml (tag extraction in guard step)

Important Files Changed

Filename Overview
.circleci/config.yml Removed macos-nightly-publish, macos-release-publish jobs and the nightly/release workflows; ci workflow jobs simplified (tag-ignore filters dropped, which is benign because CircleCI doesn't trigger on tags without explicit opt-in).
.github/workflows/nightly.yml Adds push: branches: [main] trigger restoring automatic nightly publishing on WarpBuild; idempotency logic is correct but cancel-in-progress: false can queue multiple builds on rapid pushes.
.github/workflows/release.yml Adds push: tags: v* trigger for automatic release publishing; workflow_dispatch dry-run path works but produces a misleading notice when dispatched from a branch rather than a tag.
scripts/ci/circleci-macos-release-common.sh Deleted — CircleCI release-common helper is no longer needed; functionality migrated to GitHub Actions steps.
scripts/ci/circleci-nightly.sh Deleted — CircleCI nightly publishing script removed; equivalent logic now lives in nightly.yml.
scripts/ci/circleci-release.sh Deleted — CircleCI release publishing script removed; equivalent logic now lives in release.yml.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    subgraph GHA["GitHub Actions / WarpBuild (restored)"]
        P1[push to main] --> N1[nightly.yml\ndecide job]
        WD1[workflow_dispatch] --> N1
        N1 -->|should_build=false| SKIP1[Skip — nightly tag current]
        N1 -->|should_build=true| N2[build-sign-notarize-nightly\nwarp-macos-26-arm64-6x]
        N2 --> N3[Notarize + DMG]
        N3 -->|should_publish=true| N4[Publish nightly release\n+ push nightly tag]
        N3 -->|should_publish=false| N5[Upload branch artifact]

        P2[push tag v*] --> R1[release.yml\nguard_release_assets]
        WD2[workflow_dispatch] --> R1
        R1 -->|skip_all=true| SKIP2[Skip — assets already exist]
        R1 -->|skip_all=false| R2[build-sign-notarize\nwarp-macos-26-arm64-6x]
        R2 --> R3[Notarize + DMG + Appcast]
        R3 -->|push event| R4[Publish release assets\n+ R2 appcast]
        R3 -->|workflow_dispatch| R5[Upload dry-run artifact]
    end

    subgraph CCI["CircleCI (CI checks only)"]
        B1[push to branch] --> C1[macos-unit-tests]
        B1 --> C2[macos-debug-build]
        B1 --> C3[macos-release-build]
    end
Loading

Comments Outside Diff (1)

  1. .github/workflows/release.yml, line 36 (link)

    P2 tag is wrong for workflow_dispatch from a branch

    context.ref.replace('refs/tags/', '') leaves refs/heads/main untouched when the workflow is dispatched manually from a branch, so tag becomes "refs/heads/main". The 404 catch block handles it gracefully and upload is gated on github.event_name == 'push', so no assets escape — but core.notice will report the confusing message "Release refs/heads/main does not exist yet". Extracting the tag only when the ref is actually a tag makes the intent explicit:

    const tag = context.ref.startsWith('refs/tags/')
      ? context.ref.replace('refs/tags/', '')
      : null;
    if (!tag) {
      core.notice('workflow_dispatch not from a tag – dry-run mode');
      return;
    }

Reviews (1): Last reviewed commit: "Keep publishing on WarpBuild" | Re-trigger Greptile

Comment on lines 3 to +5
on:
push:
branches: [main]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Queued nightly builds per push to main

The new push: branches: [main] trigger fires a nightly run for every commit to main. Because cancel-in-progress: false, consecutive pushes within a single build window (≈20 min) queue behind each other rather than being collapsed. The decide job re-fetches the latest main HEAD at queue time so intermediate commits aren't built twice, but a burst of 5 pushes still queues 5 workflow runs. Consider adding a schedule (e.g. schedule: - cron: '0 7 * * *') as a complement or switching cancel-in-progress: true to drop superseded queued runs.

@lawrencecchen
lawrencecchen force-pushed the task-keep-warpbuild-publishing branch from e0a0c01 to 75c0f78 Compare May 4, 2026 05:47
@lawrencecchen
lawrencecchen merged commit 1c5892e into main May 4, 2026
19 checks passed
@lawrencecchen
lawrencecchen deleted the task-keep-warpbuild-publishing branch May 4, 2026 06:07

This branch was successfully deployed

1 active deployment
Preview – cmux — 75c0f786 Deployed May 4, 2026 by vercel[bot]
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