--- /dev/null
+// Documentation: https://github.com/coreos/coreos-ci/blob/main/README-upstream-ci.md
+
+properties([
+ // abort previous runs when a PR is updated to save resources
+ disableConcurrentBuilds(abortPrevious: true)
+])
+
+stage("Build") {
+ def n = 5
+ buildPod(memory: "2Gi", cpu: "${n}") {
+ checkout scm
+ stage("Static analysis") {
+ shwrap("./ci/codestyle.sh")
+ }
+ stage("Core build") {
+ shwrap("""
+ # fetch tags so `git describe` gives a nice NEVRA when building the RPM
+ git fetch origin --tags
+ git submodule update --init
+
+ env MAKE_JOBS=${n} ./ci/build.sh
+ """)
+ }
+ stage("Unit tests") {
+ try {
+ shwrap("""
+ make -C target/c check
+ """)
+ } finally {
+ shwrap("cat test-suite.log || true")
+ archiveArtifacts allowEmptyArchive: true, artifacts: 'test-suite.log'
+ }
+ }
+ stage("Build installed tests") {
+ shwrap("""
+ make -C tests/kolainst
+ """)
+ }
+ stage("Generate artifacts") {
+ shwrap("""
+ make -C target/c install DESTDIR=\$(pwd)/installed/rootfs
+ make -C tests/kolainst install DESTDIR=\$(pwd)/installed/tests
+ bash -c '. /usr/lib/os-release && echo \$VERSION_ID' >\$(pwd)/installed/buildroot-id
+ """)
+ }
+ stash includes: "installed/", name: 'build'
+ }
+}
+
+// Build FCOS and run kola tests.
+// There's some parallelization in testiso up to 8G, add 1G for overhead
+cosaPod(memory: "9Gi", cpu: "4") {
+ stage("Build FCOS") {
+ checkout scm
+ unstash 'build'
+ shwrap("""
+ # Make sure none of the files in the unstashed build are setgid
+ chmod -c -R g-s installed/
+ # Move the bits into the cosa pod (but only if major versions match)
+ buildroot_id=\$(cat installed/buildroot-id)
+ osver=\$(. /usr/lib/os-release && echo \$VERSION_ID)
+ if test \$osver = \$buildroot_id; then
+ rsync -rlv installed/rootfs/ /
+ fi
+ rsync -rlv installed/tests/ /
+ coreos-assembler init --force https://github.com/coreos/fedora-coreos-config
+ mkdir -p overrides/rootfs
+ # And override the on-host bits
+ mv installed/rootfs/* overrides/rootfs/
+ rm installed -rf
+ coreos-assembler build
+ coreos-assembler osbuild qemu metal metal4k live
+ """)
+ }
+ kola(cosaDir: "${env.WORKSPACE}")
+ kolaTestIso(cosaDir: "${env.WORKSPACE}", extraArgs: "--denylist-test *.4k.* --denylist-test *.mpath.*")
+}