Skip to content

Commit 6895509

Browse files
authored
chore: Build releases in dependency order. (#563)
This contains several conditions that appear to be illogical, but are required by github actions. For some background this issue can be read: actions/runner#491 `always()`: Imagine two packages. Package "a" and package "b". "b" depends on "a" and we want to automatically release "a" and "b" using release please. We make "b" `needs` "a", so that "b" will build after "a". But if we do that, then "b" will not build unless "a" also builds. We often need to release "b" even though there are no changes to "a". By using `if: always()` we can cause "b" to run after "a" even when "a" doesn't run. `failure()` and `canceled()`. With `always()` package "b" will be built and released even if package "a" failed to build. You would expect that to only require `failure()`, but it seems that it only works if you have `canceled()` as well. (It may be we don't actually need failure.) We want the build order to be like this. ![dep-order-2 drawio](https://github.com/user-attachments/assets/7d499cdb-1163-442b-aefa-7bac01ad560b)
1 parent 6f44383 commit 6895509

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

.github/workflows/release-please.yml

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,11 @@ jobs:
5252

5353
release-sdk-client:
5454
runs-on: ubuntu-latest
55-
needs: ['release-please']
55+
needs: ['release-please', 'release-common']
5656
permissions:
5757
id-token: write
5858
contents: write
59-
if: ${{ needs.release-please.outputs.package-sdk-client-released == 'true'}}
59+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-sdk-client-released == 'true'}}
6060
steps:
6161
- uses: actions/checkout@v4
6262
- uses: actions/setup-node@v4
@@ -72,11 +72,11 @@ jobs:
7272

7373
release-sdk-server:
7474
runs-on: ubuntu-latest
75-
needs: ['release-please']
75+
needs: ['release-please', 'release-common']
7676
permissions:
7777
id-token: write
7878
contents: write
79-
if: ${{ needs.release-please.outputs.package-sdk-server-released == 'true'}}
79+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-sdk-server-released == 'true'}}
8080
steps:
8181
- uses: actions/checkout@v4
8282
- uses: actions/setup-node@v4
@@ -92,11 +92,11 @@ jobs:
9292

9393
release-sdk-server-edge:
9494
runs-on: ubuntu-latest
95-
needs: ['release-please']
95+
needs: ['release-please', 'release-sdk-server']
9696
permissions:
9797
id-token: write
9898
contents: write
99-
if: ${{ needs.release-please.outputs.package-sdk-server-edge-released == 'true'}}
99+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-sdk-server-edge-released == 'true'}}
100100
steps:
101101
- uses: actions/checkout@v4
102102
- uses: actions/setup-node@v4
@@ -112,11 +112,11 @@ jobs:
112112

113113
release-akamai-edgeworker-sdk:
114114
runs-on: ubuntu-latest
115-
needs: ['release-please']
115+
needs: ['release-please', 'release-sdk-server']
116116
permissions:
117117
id-token: write
118118
contents: write
119-
if: ${{ needs.release-please.outputs.package-akamai-edgeworker-sdk-released == 'true'}}
119+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-akamai-edgeworker-sdk-released == 'true'}}
120120
steps:
121121
- uses: actions/checkout@v4
122122
- uses: actions/setup-node@v4
@@ -132,11 +132,11 @@ jobs:
132132

133133
release-cloudflare:
134134
runs-on: ubuntu-latest
135-
needs: ['release-please']
135+
needs: ['release-please', 'release-sdk-server-edge']
136136
permissions:
137137
id-token: write
138138
contents: write
139-
if: ${{ needs.release-please.outputs.package-cloudflare-released == 'true'}}
139+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-cloudflare-released == 'true'}}
140140
steps:
141141
- uses: actions/checkout@v4
142142
- uses: actions/setup-node@v4
@@ -152,11 +152,11 @@ jobs:
152152

153153
release-react-native:
154154
runs-on: ubuntu-latest
155-
needs: ['release-please']
155+
needs: ['release-please', 'release-sdk-client']
156156
permissions:
157157
id-token: write
158158
contents: write
159-
if: ${{ needs.release-please.outputs.package-react-native-released == 'true'}}
159+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-react-native-released == 'true'}}
160160
steps:
161161
- uses: actions/checkout@v4
162162
- uses: actions/setup-node@v4
@@ -172,11 +172,11 @@ jobs:
172172

173173
release-server-node:
174174
runs-on: ubuntu-latest
175-
needs: ['release-please']
175+
needs: ['release-please', 'release-sdk-server']
176176
permissions:
177177
id-token: write
178178
contents: write
179-
if: ${{ needs.release-please.outputs.package-server-node-released == 'true'}}
179+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-server-node-released == 'true'}}
180180
steps:
181181
- uses: actions/checkout@v4
182182
- uses: actions/setup-node@v4
@@ -192,11 +192,11 @@ jobs:
192192

193193
release-vercel:
194194
runs-on: ubuntu-latest
195-
needs: ['release-please']
195+
needs: ['release-please', 'release-sdk-server-edge']
196196
permissions:
197197
id-token: write
198198
contents: write
199-
if: ${{ needs.release-please.outputs.package-vercel-released == 'true'}}
199+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-vercel-released == 'true'}}
200200
steps:
201201
- uses: actions/checkout@v4
202202
- uses: actions/setup-node@v4
@@ -212,11 +212,11 @@ jobs:
212212

213213
release-akamai-base:
214214
runs-on: ubuntu-latest
215-
needs: ['release-please']
215+
needs: ['release-please', 'release-akamai-edgeworker-sdk']
216216
permissions:
217217
id-token: write
218218
contents: write
219-
if: ${{ needs.release-please.outputs.package-akamai-base-released == 'true'}}
219+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-akamai-base-released == 'true'}}
220220
steps:
221221
- uses: actions/checkout@v4
222222
- uses: actions/setup-node@v4
@@ -232,11 +232,11 @@ jobs:
232232

233233
release-akamai-edgekv:
234234
runs-on: ubuntu-latest
235-
needs: ['release-please']
235+
needs: ['release-please', 'release-akamai-edgeworker-sdk']
236236
permissions:
237237
id-token: write
238238
contents: write
239-
if: ${{ needs.release-please.outputs.package-akamai-edgekv-released == 'true'}}
239+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-akamai-edgekv-released == 'true'}}
240240
steps:
241241
- uses: actions/checkout@v4
242242
- uses: actions/setup-node@v4
@@ -252,11 +252,11 @@ jobs:
252252

253253
release-node-server-sdk-redis:
254254
runs-on: ubuntu-latest
255-
needs: ['release-please']
255+
needs: ['release-please', 'release-server-node']
256256
permissions:
257257
id-token: write
258258
contents: write
259-
if: ${{ needs.release-please.outputs.package-node-server-sdk-redis-release == 'true' }}
259+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-node-server-sdk-redis-release == 'true' }}
260260
steps:
261261
- uses: actions/checkout@v4
262262
- uses: actions/setup-node@v4
@@ -276,11 +276,11 @@ jobs:
276276

277277
release-node-server-sdk-dynamodb:
278278
runs-on: ubuntu-latest
279-
needs: ['release-please']
279+
needs: ['release-please', 'release-server-node']
280280
permissions:
281281
id-token: write
282282
contents: write
283-
if: ${{ needs.release-please.outputs.package-node-server-sdk-dynamodb-release == 'true' }}
283+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-node-server-sdk-dynamodb-release == 'true' }}
284284
steps:
285285
- uses: actions/checkout@v4
286286
- uses: actions/setup-node@v4
@@ -298,11 +298,11 @@ jobs:
298298

299299
release-node-server-sdk-otel:
300300
runs-on: ubuntu-latest
301-
needs: ['release-please']
301+
needs: ['release-please', 'release-server-node']
302302
permissions:
303303
id-token: write
304304
contents: write
305-
if: ${{ needs.release-please.outputs.package-node-server-sdk-otel-release == 'true' }}
305+
if: ${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-node-server-sdk-otel-release == 'true' }}
306306
steps:
307307
- uses: actions/checkout@v4
308308
- uses: actions/setup-node@v4
@@ -339,11 +339,11 @@ jobs:
339339

340340
release-tooling-react-universal:
341341
runs-on: ubuntu-latest
342-
needs: ['release-please']
342+
needs: ['release-please', 'release-server-node', 'release-sdk-client']
343343
permissions:
344344
id-token: write
345345
contents: write
346-
if: false #${{ needs.release-please.outputs.package-react-universal-release == 'true' }}
346+
if: false #${{ always() && !failure() && !cancelled() && needs.release-please.outputs.package-react-universal-release == 'true' }}
347347
steps:
348348
- uses: actions/checkout@v4
349349
- uses: actions/setup-node@v4

0 commit comments

Comments
 (0)