|
23 | 23 | pull-requests: write |
24 | 24 | outputs: |
25 | 25 | release_created: ${{ steps.release.outputs.release_created }} |
| 26 | + release_id: ${{ steps.release.outputs.id }} |
26 | 27 | tag_name: ${{ steps.release.outputs.tag_name }} |
27 | 28 | version: ${{ steps.release.outputs.major }}.${{ steps.release.outputs.minor }}.${{ steps.release.outputs.patch }} |
28 | 29 | steps: |
@@ -141,43 +142,42 @@ jobs: |
141 | 142 | APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} |
142 | 143 | with: |
143 | 144 | projectPath: apps/desktop |
144 | | - # Use tagName to find and upload to the existing release created by release-please |
145 | | - tagName: ${{ needs.release-please.outputs.tag_name }} |
146 | | - releaseName: 'McpMux v${{ needs.release-please.outputs.version }}' |
147 | | - releaseBody: '' # Release notes already created by release-please |
148 | | - releaseDraft: false |
149 | | - prerelease: false |
| 145 | + # Upload to the existing draft release created by release-please |
| 146 | + releaseId: ${{ needs.release-please.outputs.release_id }} |
150 | 147 | updaterJsonKeepUniversal: true |
151 | 148 |
|
| 149 | + # ───────────────────────────────────────────────────────────── |
| 150 | + # Publish Release: Flip draft → published after all artifacts |
| 151 | + # are attached, so /releases/latest always has all assets |
| 152 | + # ───────────────────────────────────────────────────────────── |
| 153 | + publish-release: |
| 154 | + needs: [release-please, build-release] |
| 155 | + if: needs.release-please.outputs.release_created == 'true' |
| 156 | + runs-on: ubuntu-latest |
| 157 | + permissions: |
| 158 | + contents: write |
| 159 | + steps: |
| 160 | + - name: Publish release |
| 161 | + uses: actions/github-script@v7 |
| 162 | + with: |
| 163 | + script: | |
| 164 | + await github.rest.repos.updateRelease({ |
| 165 | + owner: context.repo.owner, |
| 166 | + repo: context.repo.repo, |
| 167 | + release_id: ${{ needs.release-please.outputs.release_id }}, |
| 168 | + draft: false, |
| 169 | + }); |
| 170 | +
|
152 | 171 | # ───────────────────────────────────────────────────────────── |
153 | 172 | # Update Homebrew Tap: Push new version to homebrew-mcpmux |
154 | 173 | # ───────────────────────────────────────────────────────────── |
155 | 174 | update-homebrew: |
156 | | - needs: [release-please, build-release] |
| 175 | + needs: [release-please, publish-release] |
157 | 176 | if: needs.release-please.outputs.release_created == 'true' |
158 | 177 | runs-on: ubuntu-latest |
159 | 178 | permissions: |
160 | 179 | contents: read |
161 | 180 | steps: |
162 | | - - name: Wait for release assets |
163 | | - env: |
164 | | - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} |
165 | | - run: | |
166 | | - VERSION="${{ needs.release-please.outputs.version }}" |
167 | | - TAG="${{ needs.release-please.outputs.tag_name }}" |
168 | | - echo "Checking release assets for $TAG..." |
169 | | -
|
170 | | - # Wait up to 5 minutes for macOS DMGs to appear |
171 | | - for i in $(seq 1 30); do |
172 | | - ASSETS=$(gh api repos/${{ github.repository }}/releases/tags/$TAG --jq '.assets[].name' 2>/dev/null || echo "") |
173 | | - if echo "$ASSETS" | grep -q "aarch64.dmg" && echo "$ASSETS" | grep -q "x64.dmg"; then |
174 | | - echo "Both macOS DMGs found" |
175 | | - break |
176 | | - fi |
177 | | - echo "Waiting for macOS DMGs... (attempt $i/30)" |
178 | | - sleep 10 |
179 | | - done |
180 | | -
|
181 | 181 | - name: Compute SHA256 and update cask |
182 | 182 | env: |
183 | 183 | GH_TOKEN: ${{ secrets.HOMEBREW_TAP_TOKEN }} |
|
0 commit comments