CI openbsd: 3x batching via NIM_TESTAMENT_BATCH ; overall CI finishes in 21m instead of 34m (#14851)
* CI openbsd: 2x batching via NIM_TESTAMENT_BATCH * auto-generate .builds/openbsd_x.yml to avoid code duplication * 3x batching
This commit is contained in:
parent
04deb6c942
commit
89a15e417d
6 changed files with 138 additions and 0 deletions
|
|
@ -1,3 +1,5 @@
|
|||
## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
|
||||
|
||||
image: openbsd/latest
|
||||
packages:
|
||||
- gmake
|
||||
|
|
@ -11,6 +13,7 @@ packages:
|
|||
sources:
|
||||
- https://github.com/nim-lang/Nim
|
||||
environment:
|
||||
NIM_TESTAMENT_BATCH: "0_3"
|
||||
CC: /usr/bin/clang
|
||||
tasks:
|
||||
- setup: |
|
||||
34
.builds/openbsd_1.yml
Normal file
34
.builds/openbsd_1.yml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
|
||||
|
||||
image: openbsd/latest
|
||||
packages:
|
||||
- gmake
|
||||
- sqlite3
|
||||
- node
|
||||
- boehm-gc
|
||||
- pcre
|
||||
- sfml
|
||||
- sdl2
|
||||
- libffi
|
||||
sources:
|
||||
- https://github.com/nim-lang/Nim
|
||||
environment:
|
||||
NIM_TESTAMENT_BATCH: "1_3"
|
||||
CC: /usr/bin/clang
|
||||
tasks:
|
||||
- setup: |
|
||||
cd Nim
|
||||
git clone --depth 1 -q https://github.com/nim-lang/csources.git
|
||||
gmake -C csources -j $(sysctl -n hw.ncpuonline)
|
||||
bin/nim c koch
|
||||
echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
|
||||
- test: |
|
||||
cd Nim
|
||||
if ! ./koch runCI; then
|
||||
nim c -r tools/ci_testresults.nim
|
||||
exit 1
|
||||
fi
|
||||
triggers:
|
||||
- action: email
|
||||
condition: failure
|
||||
to: Andreas Rumpf <rumpf_a@web.de>
|
||||
34
.builds/openbsd_2.yml
Normal file
34
.builds/openbsd_2.yml
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
|
||||
|
||||
image: openbsd/latest
|
||||
packages:
|
||||
- gmake
|
||||
- sqlite3
|
||||
- node
|
||||
- boehm-gc
|
||||
- pcre
|
||||
- sfml
|
||||
- sdl2
|
||||
- libffi
|
||||
sources:
|
||||
- https://github.com/nim-lang/Nim
|
||||
environment:
|
||||
NIM_TESTAMENT_BATCH: "2_3"
|
||||
CC: /usr/bin/clang
|
||||
tasks:
|
||||
- setup: |
|
||||
cd Nim
|
||||
git clone --depth 1 -q https://github.com/nim-lang/csources.git
|
||||
gmake -C csources -j $(sysctl -n hw.ncpuonline)
|
||||
bin/nim c koch
|
||||
echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
|
||||
- test: |
|
||||
cd Nim
|
||||
if ! ./koch runCI; then
|
||||
nim c -r tools/ci_testresults.nim
|
||||
exit 1
|
||||
fi
|
||||
triggers:
|
||||
- action: email
|
||||
condition: failure
|
||||
to: Andreas Rumpf <rumpf_a@web.de>
|
||||
|
|
@ -84,6 +84,9 @@ type
|
|||
parseErrors*: string # when the spec definition is invalid, this is not empty.
|
||||
unjoinable*: bool
|
||||
unbatchable*: bool
|
||||
# whether this test can be batchable via `NIM_TESTAMENT_BATCH`; only very
|
||||
# few tests are not batchable; the ones that are not could be turned batchable
|
||||
# by making the dependencies explicit
|
||||
useValgrind*: bool
|
||||
timeout*: float # in seconds, fractions possible,
|
||||
# but don't rely on much precision
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
discard """
|
||||
action: compile
|
||||
cmd: "nim $target --debuginfo --hints:on --define:useNimRtl --app:lib $options $file"
|
||||
batchable: false
|
||||
"""
|
||||
|
||||
type
|
||||
|
|
|
|||
63
tools/ci_generate.nim
Normal file
63
tools/ci_generate.nim
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
##[
|
||||
avoid code duplication in CI pipelines.
|
||||
For now, this is only used for openbsd, but there is a lot of other code
|
||||
duplication that could be removed.
|
||||
|
||||
## usage
|
||||
edit this file as needed and then re-generate via:
|
||||
```
|
||||
nim r tools/ci_generate.nim
|
||||
```
|
||||
]##
|
||||
|
||||
import std/strformat
|
||||
|
||||
proc genCIopenbsd(batch: int, num: int): string =
|
||||
result = fmt"""
|
||||
## do not edit directly; auto-generated by `nim r tools/ci_generate.nim`
|
||||
|
||||
image: openbsd/latest
|
||||
packages:
|
||||
- gmake
|
||||
- sqlite3
|
||||
- node
|
||||
- boehm-gc
|
||||
- pcre
|
||||
- sfml
|
||||
- sdl2
|
||||
- libffi
|
||||
sources:
|
||||
- https://github.com/nim-lang/Nim
|
||||
environment:
|
||||
NIM_TESTAMENT_BATCH: "{batch}_{num}"
|
||||
CC: /usr/bin/clang
|
||||
tasks:
|
||||
- setup: |
|
||||
cd Nim
|
||||
git clone --depth 1 -q https://github.com/nim-lang/csources.git
|
||||
gmake -C csources -j $(sysctl -n hw.ncpuonline)
|
||||
bin/nim c koch
|
||||
echo 'export PATH=$HOME/Nim/bin:$PATH' >> $HOME/.buildenv
|
||||
- test: |
|
||||
cd Nim
|
||||
if ! ./koch runCI; then
|
||||
nim c -r tools/ci_testresults.nim
|
||||
exit 1
|
||||
fi
|
||||
triggers:
|
||||
- action: email
|
||||
condition: failure
|
||||
to: Andreas Rumpf <rumpf_a@web.de>
|
||||
"""
|
||||
|
||||
proc main()=
|
||||
let num = 3
|
||||
# if you reduce this, make sure to remove files that shouldn't be generated,
|
||||
# or better, do the cleanup logic here eg: `rm .builds/openbsd_*`
|
||||
for i in 0..<num:
|
||||
let file = fmt".builds/openbsd_{i}.yml"
|
||||
let code = genCIopenbsd(i, num)
|
||||
writeFile(file, code)
|
||||
|
||||
when isMainModule:
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue