Commit eb72e54
committed
feat(updates): a build takes the newest bundle it can serve, instead of failing
The build fetched whatever the bundle repos called latest and then refused to
continue if it was too new. That is the right answer for a release whose
version bump was forgotten and the wrong one for everything else: a core built
from an older branch would fail on a console that had simply moved on, when
the console it wants is sitting one release back.
So the build asks the same question the server asks — which release of this
bundle can this core serve — and takes the newest that fits. Against the
current releases, a core at 4.0.0-beta.21 now walks past adminui 6.1.1 and
6.1.0, which both want beta.22, and builds with 6.0.0.
The decision is shared rather than reimplemented. `resolveBundleRelease` moves
out of the update handler into `shared/bundleRelease`, with the network
injected, and both callers use it: the server when somebody presses update,
the build when it assembles an image. An image that bakes in a console the
running server would have refused is the failure this whole mechanism exists
to prevent, so the two must not be able to disagree — and the build imports
the compiled module rather than carrying a copy, which `npm run build` makes
possible by running `tsc` before it fetches. Missing `dist/` degrades to the
static URL, which is what this did before any of it existed.
Moving it out also made it testable. It was private and reached the network,
so nothing covered it; there are now seven cases on it, including the two that
motivated the walk (an older core offered the last bundle built for it, a
release from before manifests ending the walk because nothing below it can be
newer) and the channel rules.
Two things follow from the build no longer being strict:
- The release job checks the tag against package.json. A forgotten bump used
to fail at the fetch; now it would quietly resolve an older console and ship
it, so the check moves to where the intended version is actually written
down twice.
- The build steps are given GITHUB_TOKEN. Release listings come from the API,
which allows sixty requests an hour to anonymous callers, and a CI runner's
IP address is not its own.1 parent 240e6e6 commit eb72e54
7 files changed
Lines changed: 493 additions & 172 deletions
File tree
- .github/workflows
- scripts
- src
- adapters/http/adminApi/misc
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
43 | 59 | | |
44 | 60 | | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
45 | 65 | | |
46 | 66 | | |
47 | 67 | | |
| |||
142 | 162 | | |
143 | 163 | | |
144 | 164 | | |
| 165 | + | |
145 | 166 | | |
146 | 167 | | |
147 | 168 | | |
| |||
208 | 229 | | |
209 | 230 | | |
210 | 231 | | |
| 232 | + | |
| 233 | + | |
211 | 234 | | |
212 | 235 | | |
213 | 236 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
27 | 28 | | |
| |||
147 | 148 | | |
148 | 149 | | |
149 | 150 | | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5 | 5 | | |
6 | 6 | | |
7 | 7 | | |
8 | | - | |
| 8 | + | |
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
18 | 23 | | |
19 | 24 | | |
20 | 25 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
9 | | - | |
| 9 | + | |
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
21 | 26 | | |
22 | 27 | | |
23 | 28 | | |
| |||
0 commit comments