Skip to content

Commit ce3f3b7

Browse files
authored
ci(dev): build CLI, router, and UI artifacts on dev push (#735)
## Summary - Enables **artifact-only** CI on `dev` push while `test→main` is blocked by SecretVM v0.0.27 portal availability. - **Runs on dev:** Go verify, tag generation, proxy-router docker test, CLI + proxy-router executables (all platforms), UI desktop builds (all platforms) — artifacts downloadable from the workflow run. - **Still skipped on dev:** GHCR docker push, TEE image, GitHub release upload, Titan/Morpheus AWS deploy, SecretVM deploy, NLB drain. - Dev UI builds omit `SERVICE_PROXY_DOWNLOAD_URL_*` (no GitHub release exists); test proxy-router from the `proxy-router` workflow artifact alongside the UI installer. ## Context We need to validate DEV-only bits (UI desktop work, etc.) without merging `dev→test` until `test→main` promotes. This is intentionally temporary — revert dev push builds after main promotion unblocks. ## Test plan - [ ] Merge to `dev` - [ ] Push a trivial change under `ui-desktop/`, `cli/`, or `proxy-router/` (or re-run workflow) and confirm jobs run: `Build Service Executables` + all 5 UI platform jobs - [ ] Confirm **no** `Build & Push Docker Image`, `Build & Push TEE Docker Image`, or deploy jobs run - [ ] Download `cli`, `proxy-router`, and platform UI artifacts from the run and smoke-test locally Made with [Cursor](https://cursor.com)
2 parents a50f564 + f1a3270 commit ce3f3b7

1 file changed

Lines changed: 119 additions & 7 deletions

File tree

.github/workflows/build.yml

Lines changed: 119 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@ name: CI-CD
22
# CI/CD Pipeline for Morpheus Lumerin Node
33
#
44
# Branch Strategy:
5-
# • dev: Build and test only (no deployment)
5+
# • dev: Build-only (TEMPORARY): verify, tag, proxy-router docker test, CLI/router executables,
6+
# UI desktop builds, and GitHub pre-release (vX.Y.Z-dev) with router/CLI/UI assets — no GHCR,
7+
# TEE, AWS, or SecretVM deploy. Revert after test→main promotion is unblocked.
68
# • test: Build, test, and deploy to AWS DEV environment (Titan dev + Morpheus dev consumer node)
79
# • main: Build, test, create release, and deploy to AWS PRD environment (Titan lmn + Morpheus prd consumer/provider nodes)
810
#
@@ -958,7 +960,7 @@ jobs:
958960
if: |
959961
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
960962
(
961-
(github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test')) ||
963+
(github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test' || github.ref == 'refs/heads/dev')) ||
962964
(github.event_name == 'workflow_dispatch' && github.event.inputs.build_all_os == 'true')
963965
)
964966
needs:
@@ -2199,7 +2201,7 @@ jobs:
21992201
if: |
22002202
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
22012203
(
2202-
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test')) ||
2204+
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test' || github.ref == 'refs/heads/dev')) ||
22032205
(github.event_name == 'workflow_dispatch' && github.event.inputs.build_all_os == 'true')
22042206
)
22052207
runs-on: macos-latest
@@ -2263,7 +2265,7 @@ jobs:
22632265
if: |
22642266
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
22652267
(
2266-
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test')) ||
2268+
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test' || github.ref == 'refs/heads/dev')) ||
22672269
(github.event_name == 'workflow_dispatch' && github.event.inputs.build_all_os == 'true')
22682270
)
22692271
runs-on: ubuntu-22.04
@@ -2326,7 +2328,7 @@ jobs:
23262328
if: |
23272329
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
23282330
(
2329-
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test')) ||
2331+
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test' || github.ref == 'refs/heads/dev')) ||
23302332
(github.event_name == 'workflow_dispatch' && github.event.inputs.build_all_os == 'true')
23312333
)
23322334
runs-on: ubuntu-22.04
@@ -2389,7 +2391,7 @@ jobs:
23892391
if: |
23902392
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
23912393
(
2392-
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test')) ||
2394+
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test' || github.ref == 'refs/heads/dev')) ||
23932395
(github.event_name == 'workflow_dispatch' && github.event.inputs.build_all_os == 'true')
23942396
)
23952397
runs-on: macos-15-intel
@@ -2453,7 +2455,7 @@ jobs:
24532455
if: |
24542456
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
24552457
(
2456-
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test')) ||
2458+
(github.event_name == 'push' && (startsWith(github.ref, 'refs/heads/cicd/') || github.ref == 'refs/heads/main' || github.ref == 'refs/heads/test' || github.ref == 'refs/heads/dev')) ||
24572459
(github.event_name == 'workflow_dispatch' && github.event.inputs.build_all_os == 'true')
24582460
)
24592461
runs-on: windows-latest
@@ -2533,6 +2535,116 @@ jobs:
25332535
path: ./ui-desktop/dist/win-x64-morpheus-app-${{ needs.Generate-Tag.outputs.vfull }}.exe
25342536
name: win-x64-morpheus-app-${{ needs.Generate-Tag.outputs.vfull }}.exe
25352537

2538+
Dev-UI-Release:
2539+
name: Upload Dev Pre-release (desktop + CLI + router)
2540+
if: |
2541+
github.repository == 'MorpheusAIs/Morpheus-Lumerin-Node' &&
2542+
github.event_name == 'push' &&
2543+
github.ref == 'refs/heads/dev'
2544+
needs:
2545+
- Generate-Tag
2546+
- Build-Service-Executables
2547+
- UI-macOS-latest-arm64
2548+
- UI-macOS-15-intel-x64
2549+
- UI-Ubuntu-22-x64
2550+
- UI-Ubuntu-22-arm64
2551+
- UI-Windows-avx2-x64
2552+
runs-on: ubuntu-latest
2553+
permissions:
2554+
contents: write
2555+
steps:
2556+
- name: Clone
2557+
uses: actions/checkout@v6
2558+
with:
2559+
fetch-depth: 0
2560+
fetch-tags: true
2561+
2562+
- name: Download artifacts
2563+
uses: actions/download-artifact@v7
2564+
with:
2565+
path: ./artifact
2566+
merge-multiple: true
2567+
2568+
- name: Verify artifact contents
2569+
run: |
2570+
echo "🔍 Contents of ./artifact:"
2571+
ls -lh ./artifact
2572+
2573+
- name: Generate release notes
2574+
run: |
2575+
VERSION=${{ needs.Generate-Tag.outputs.vfull }}
2576+
TAG=${{ needs.Generate-Tag.outputs.tag_name }}
2577+
2578+
cat << RELEASE_NOTES > release_notes.md
2579+
## Dev pre-release ($TAG)
2580+
2581+
Desktop, proxy-router, and CLI builds from the \`dev\` branch. No container or TEE assets in this release.
2582+
2583+
### Desktop Application
2584+
2585+
| Platform | Download |
2586+
|----------|----------|
2587+
| **Windows** (x64) | [\`win-x64-morpheus-app-${VERSION}.exe\`](../../releases/download/${TAG}/win-x64-morpheus-app-${VERSION}.exe) |
2588+
| **macOS** (Apple Silicon) | [\`mac-arm64-morpheus-app-${VERSION}.dmg\`](../../releases/download/${TAG}/mac-arm64-morpheus-app-${VERSION}.dmg) |
2589+
| **macOS** (Intel) | [\`mac-x64-morpheus-app-${VERSION}.dmg\`](../../releases/download/${TAG}/mac-x64-morpheus-app-${VERSION}.dmg) |
2590+
| **Linux** (x64) | [\`linux-x86_64-morpheus-app-${VERSION}.AppImage\`](../../releases/download/${TAG}/linux-x86_64-morpheus-app-${VERSION}.AppImage) |
2591+
| **Linux** (ARM64) | [\`linux-arm64-morpheus-app-${VERSION}.AppImage\`](../../releases/download/${TAG}/linux-arm64-morpheus-app-${VERSION}.AppImage) |
2592+
2593+
### Proxy Router
2594+
2595+
| Platform | Download |
2596+
|----------|----------|
2597+
| **Linux** (x64) | [\`linux-x86_64-morpheus-router-${VERSION}\`](../../releases/download/${TAG}/linux-x86_64-morpheus-router-${VERSION}) |
2598+
| **Linux** (ARM64) | [\`linux-arm64-morpheus-router-${VERSION}\`](../../releases/download/${TAG}/linux-arm64-morpheus-router-${VERSION}) |
2599+
| **macOS** (Apple Silicon) | [\`mac-arm64-morpheus-router-${VERSION}\`](../../releases/download/${TAG}/mac-arm64-morpheus-router-${VERSION}) |
2600+
| **macOS** (Intel) | [\`mac-x64-morpheus-router-${VERSION}\`](../../releases/download/${TAG}/mac-x64-morpheus-router-${VERSION}) |
2601+
| **Windows** (x64) | [\`win-x64-morpheus-router-${VERSION}.exe\`](../../releases/download/${TAG}/win-x64-morpheus-router-${VERSION}.exe) |
2602+
2603+
### CLI
2604+
2605+
| Platform | Download |
2606+
|----------|----------|
2607+
| **Linux** (x64) | [\`linux-x86_64-morpheus-cli-${VERSION}\`](../../releases/download/${TAG}/linux-x86_64-morpheus-cli-${VERSION}) |
2608+
| **Linux** (ARM64) | [\`linux-arm64-morpheus-cli-${VERSION}\`](../../releases/download/${TAG}/linux-arm64-morpheus-cli-${VERSION}) |
2609+
| **macOS** (Apple Silicon) | [\`mac-arm64-morpheus-cli-${VERSION}\`](../../releases/download/${TAG}/mac-arm64-morpheus-cli-${VERSION}) |
2610+
| **macOS** (Intel) | [\`mac-x64-morpheus-cli-${VERSION}\`](../../releases/download/${TAG}/mac-x64-morpheus-cli-${VERSION}) |
2611+
| **Windows** (x64) | [\`win-x64-morpheus-cli-${VERSION}.exe\`](../../releases/download/${TAG}/win-x64-morpheus-cli-${VERSION}.exe) |
2612+
2613+
> Rolling alias: \`latest-dev\` git tag tracks the newest dev pre-release.
2614+
RELEASE_NOTES
2615+
2616+
echo "" >> release_notes.md
2617+
echo "---" >> release_notes.md
2618+
echo "" >> release_notes.md
2619+
echo "## Commit" >> release_notes.md
2620+
echo "" >> release_notes.md
2621+
git log -1 --pretty=format:"%B" ${{ github.sha }} >> release_notes.md
2622+
cat release_notes.md
2623+
2624+
- name: Create dev pre-release and upload assets
2625+
env:
2626+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2627+
run: |
2628+
TAG=${{ needs.Generate-Tag.outputs.tag_name }}
2629+
echo "📦 Creating dev pre-release $TAG..."
2630+
gh release create "$TAG" \
2631+
--title "Dev pre-release $TAG" \
2632+
--notes-file release_notes.md \
2633+
--prerelease \
2634+
./artifact/*
2635+
echo "✅ Dev pre-release $TAG created with $(ls -1 ./artifact | wc -l) assets"
2636+
2637+
- name: Update latest-dev tag
2638+
env:
2639+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
2640+
run: |
2641+
TAG=${{ needs.Generate-Tag.outputs.tag_name }}
2642+
echo "🔄 Updating 'latest-dev' tag to point to $TAG..."
2643+
git push origin :refs/tags/latest-dev 2>/dev/null || true
2644+
git tag -f latest-dev
2645+
git push origin latest-dev
2646+
echo "✅ 'latest-dev' tag updated"
2647+
25362648
UI-Release:
25372649
name: Upload UI-Desktop Release
25382650
if: |

0 commit comments

Comments
 (0)