Sequence windows after build job to avoid CI runner contention
Both jobs land on the same self-hosted runner. Run 129 segfaulted odin test in build while windows was mid (uncached) SDK download/ splat at the same time; odin check passed and the test suite reproduces fine in isolation, so this is resource contention from running concurrently for the first time, not a code or toolchain bug. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
26904b6852
commit
458f0edccb
2 files changed
+9
-1
No files matched your search
@@ -33,8 +33,15 @@ jobs:
|
|||||||
- name: Build
|
- name: Build
|
||||||
run: just release
|
run: just release
|
||||||
|
|
||||||
# Cross-compiles for Windows so link breakages show up before a release
|
# Cross-compiles for Windows so link breakages show up before a release.
|
||||||
|
# Runs after `build`: both jobs land on the same self-hosted runner, and the
|
||||||
|
# first run segfaulted `odin test` in `build` while `windows` was doing its
|
||||||
|
# (uncached) SDK download/splat at the same time - resource contention, not
|
||||||
|
# a code or toolchain bug (odin check passed; the test suite reproduces fine
|
||||||
|
# in isolation). Sequencing avoids that contention at the cost of a longer
|
||||||
|
# total run.
|
||||||
windows:
|
windows:
|
||||||
|
needs: build
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ Commands (see `justfile`): `just run`, `just check`, `just test`, `just package
|
|||||||
6. **Windows builds are cross-compiled**: Odin can't link Windows binaries on Linux, so `just windows` builds objects with `-build-mode:obj` and links with `lld-link` against an xwin SDK. The VC runtime is linked statically; only Windows system DLLs are needed. New Odin core usage can need new import libs (e.g. `ole32.lib` for `os.user_data_dir`); the CI `windows` job catches this. Not yet tested on a real Windows machine.
|
6. **Windows builds are cross-compiled**: Odin can't link Windows binaries on Linux, so `just windows` builds objects with `-build-mode:obj` and links with `lld-link` against an xwin SDK. The VC runtime is linked statically; only Windows system DLLs are needed. New Odin core usage can need new import libs (e.g. `ole32.lib` for `os.user_data_dir`); the CI `windows` job catches this. Not yet tested on a real Windows machine.
|
||||||
7. **Odin constant arrays can't be indexed at runtime**: lookup tables (`DECKS`, `LAYOUTS`, …) are `@(rodata)` globals instead of `::` constants.
|
7. **Odin constant arrays can't be indexed at runtime**: lookup tables (`DECKS`, `LAYOUTS`, …) are `@(rodata)` globals instead of `::` constants.
|
||||||
8. **Profile memory**: `profile` always allocates from the heap allocator, because the test runner frees each test's allocator afterwards.
|
8. **Profile memory**: `profile` always allocates from the heap allocator, because the test runner frees each test's allocator afterwards.
|
||||||
|
9. **CI jobs share one self-hosted runner**: `build` and `windows` in `gitea-build.yaml` land on the same machine. Running them concurrently once segfaulted `odin test` while `windows` was mid-SDK-download, so `windows` now runs with `needs: build` to avoid the contention.
|
||||||
|
|
||||||
## File Structure
|
## File Structure
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in new issue
Block a user