@@ -3,8 +3,8 @@ name: CI-CD
33#
44# Branch Strategy:
55# • dev: Build-only (TEMPORARY): verify, tag, proxy-router docker test, CLI/router executables,
6- # and UI desktop artifacts uploaded to the workflow run — no GHCR push, TEE, release, or deploy.
7- # Revert dev push builds after test→main promotion is unblocked.
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.
88# • test: Build, test, and deploy to AWS DEV environment (Titan dev + Morpheus dev consumer node)
99# • main: Build, test, create release, and deploy to AWS PRD environment (Titan lmn + Morpheus prd consumer/provider nodes)
1010#
@@ -2209,8 +2209,7 @@ jobs:
22092209 - Generate-Tag
22102210 - Build-Service-Executables
22112211 env :
2212- # Dev builds have no GitHub release; omit router download URL (test router from workflow artifacts).
2213- SERVICE_PROXY_DOWNLOAD_URL_MAC_ARM64 : ${{ github.ref != 'refs/heads/dev' && format('{0}/mac-arm64-morpheus-router-{1}', needs.Generate-Tag.outputs.artifacts_base_url, needs.Generate-Tag.outputs.vfull) || '' }}
2212+ SERVICE_PROXY_DOWNLOAD_URL_MAC_ARM64 : ${{ needs.Generate-Tag.outputs.artifacts_base_url }}/mac-arm64-morpheus-router-${{ needs.Generate-Tag.outputs.vfull }}
22142213 steps :
22152214 - name : Clone
22162215 id : checkout
@@ -2274,7 +2273,7 @@ jobs:
22742273 - Generate-Tag
22752274 - Build-Service-Executables
22762275 env :
2277- SERVICE_PROXY_DOWNLOAD_URL_LINUX_X64 : ${{ github.ref != 'refs/heads/dev' && format('{0} /linux-x86_64-morpheus-router-{1}', needs.Generate-Tag.outputs.artifacts_base_url, needs.Generate-Tag.outputs. vfull) || '' }}
2276+ SERVICE_PROXY_DOWNLOAD_URL_LINUX_X64 : ${{ needs.Generate-Tag.outputs.artifacts_base_url }} /linux-x86_64-morpheus-router-${{ needs.Generate-Tag.outputs.vfull }}
22782277 steps :
22792278 - name : Clone
22802279 id : checkout
@@ -2337,7 +2336,7 @@ jobs:
23372336 - Generate-Tag
23382337 - Build-Service-Executables
23392338 env :
2340- SERVICE_PROXY_DOWNLOAD_URL_LINUX_ARM64 : ${{ github.ref != 'refs/heads/dev' && format('{0} /linux-arm64-morpheus-router-{1}', needs.Generate-Tag.outputs.artifacts_base_url, needs.Generate-Tag.outputs. vfull) || '' }}
2339+ SERVICE_PROXY_DOWNLOAD_URL_LINUX_ARM64 : ${{ needs.Generate-Tag.outputs.artifacts_base_url }} /linux-arm64-morpheus-router-${{ needs.Generate-Tag.outputs.vfull }}
23412340 steps :
23422341 - name : Clone
23432342 id : checkout
@@ -2400,7 +2399,7 @@ jobs:
24002399 - Generate-Tag
24012400 - Build-Service-Executables
24022401 env :
2403- SERVICE_PROXY_DOWNLOAD_URL_MAC_X64 : ${{ github.ref != 'refs/heads/dev' && format('{0} /mac-x64-morpheus-router-{1}', needs.Generate-Tag.outputs.artifacts_base_url, needs.Generate-Tag.outputs. vfull) || '' }}
2402+ SERVICE_PROXY_DOWNLOAD_URL_MAC_X64 : ${{ needs.Generate-Tag.outputs.artifacts_base_url }} /mac-x64-morpheus-router-${{ needs.Generate-Tag.outputs.vfull }}
24042403 steps :
24052404 - name : Clone
24062405 id : checkout
@@ -2464,7 +2463,7 @@ jobs:
24642463 - Generate-Tag
24652464 - Build-Service-Executables
24662465 env :
2467- SERVICE_PROXY_DOWNLOAD_URL_WINDOWS_X64 : ${{ github.ref != 'refs/heads/dev' && format('{0} /win-x64-morpheus-router-{1}.exe', needs.Generate-Tag.outputs.artifacts_base_url, needs.Generate-Tag.outputs. vfull) || '' }}
2466+ SERVICE_PROXY_DOWNLOAD_URL_WINDOWS_X64 : ${{ needs.Generate-Tag.outputs.artifacts_base_url }} /win-x64-morpheus-router-${{ needs.Generate-Tag.outputs.vfull }}.exe
24682467 steps :
24692468 - name : Clone
24702469 id : checkout
@@ -2536,6 +2535,116 @@ jobs:
25362535 path : ./ui-desktop/dist/win-x64-morpheus-app-${{ needs.Generate-Tag.outputs.vfull }}.exe
25372536 name : win-x64-morpheus-app-${{ needs.Generate-Tag.outputs.vfull }}.exe
25382537
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+
25392648 UI-Release :
25402649 name : Upload UI-Desktop Release
25412650 if : |
0 commit comments