diff options
author | Timothee Cour <timothee.cour2@gmail.com> | 2020-06-30 05:21:30 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-30 14:21:30 +0200 |
commit | 89a15e417df52454aa5c40ba058c9b19425dd184 (patch) | |
tree | 2aba5f3c5cfd8061286f1d30c9714cb0201f13d5 /tools/ci_generate.nim | |
parent | 04deb6c9421d0a11cedfc7e8c52ae3b30e7bf1db (diff) | |
download | Nim-89a15e417df52454aa5c40ba058c9b19425dd184.tar.gz |
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
Diffstat (limited to 'tools/ci_generate.nim')
-rw-r--r-- | tools/ci_generate.nim | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/tools/ci_generate.nim b/tools/ci_generate.nim new file mode 100644 index 000000000..bfed8d88f --- /dev/null +++ b/tools/ci_generate.nim @@ -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() |