7268ac9875
Since we need to set HOME and PATH, let's do that in a central place rather than scattering it around by having all of our entrypoint scripts source the `libbuild.sh` shell "library". Move the CoreOS CI entrypoint into a script like the others.
126 lines
3.7 KiB
Plaintext
126 lines
3.7 KiB
Plaintext
// Documentation: https://github.com/coreos/coreos-ci/blob/master/README-upstream-ci.md
|
|
|
|
stage("Build") {
|
|
parallel rpms: {
|
|
def n = 5
|
|
cosaPod(buildroot: true, runAsUser: 0, memory: "2Gi", cpu: "${n}") {
|
|
checkout scm
|
|
shwrap("""RPM_BUILD_NCPUS=${n} ./ci/coreosci-rpmbuild.sh
|
|
mv packaging/*/*.rpm .
|
|
""")
|
|
// make it easy for anyone to download the RPMs
|
|
archiveArtifacts '*.rpm'
|
|
stash excludes: '*.src.rpm', includes: '*.rpm', name: 'rpms'
|
|
}
|
|
},
|
|
codestyle: {
|
|
cosaPod(buildroot: true) {
|
|
checkout scm
|
|
shwrap("""
|
|
# Ensures that we get refs to aid `git describe`
|
|
git fetch origin +refs/heads/master:refs/remotes/origin/master
|
|
ci/commit-validation.sh
|
|
""")
|
|
}
|
|
},
|
|
unit: {
|
|
// this branch runs unit tests (both Rust-based and C-based)
|
|
def n = 5
|
|
cosaPod(buildroot: true, runAsUser: 0, memory: "2Gi", cpu: "${n}") {
|
|
checkout scm
|
|
shwrap("""
|
|
MAKE_JOBS=${n} CARGO_BUILD_JOBS=${n} ci/unit.sh
|
|
""")
|
|
}
|
|
},
|
|
clang: {
|
|
// Build with clang/clang++
|
|
def n = 5
|
|
cosaPod(buildroot: true, runAsUser: 0, memory: "2Gi", cpu: "${n}") {
|
|
checkout scm
|
|
shwrap("ci/clang-build-check.sh")
|
|
}
|
|
}
|
|
}
|
|
|
|
stage("Test") {
|
|
parallel insttests: {
|
|
def nhosts = 6
|
|
def mem = (nhosts * 1024) + 512
|
|
cosaPod(runAsUser: 0, memory: "${mem}Mi", cpu: "${nhosts}") {
|
|
stage("Build FCOS") {
|
|
checkout scm
|
|
unstash 'rpms'
|
|
// run this stage first without installing deps, so we match exactly the cosa pkgset
|
|
// (+ our built rpm-ostree)
|
|
shwrap("""
|
|
dnf install -y *.rpm
|
|
coreos-assembler init --force https://github.com/coreos/fedora-coreos-config
|
|
# include our built rpm-ostree in the image
|
|
mkdir -p overrides/rpm
|
|
mv *.rpm overrides/rpm
|
|
coreos-assembler fetch
|
|
coreos-assembler build
|
|
""")
|
|
}
|
|
stage("Install Deps") {
|
|
// really, we just need test deps, but meh...
|
|
shwrap("ci/installdeps.sh")
|
|
}
|
|
stage("Kola") {
|
|
// TODO upstream this into coreos-ci-lib
|
|
shwrap("make -C tests/kolainst install")
|
|
fcosKola(cosaDir: "${env.WORKSPACE}", extraArgs: "ext.*", parallel: nhosts)
|
|
}
|
|
stage("vmcheck") {
|
|
try {
|
|
timeout(time: 30, unit: 'MINUTES') {
|
|
shwrap("""
|
|
fcos=\$(ls builds/latest/*/*.qcow2) # */
|
|
ln -sf "\$(realpath \${fcos})" tests/vmcheck/image.qcow2
|
|
JOBS=${nhosts} tests/vmcheck.sh
|
|
""")
|
|
}
|
|
} finally {
|
|
shwrap("""
|
|
if [ -d vmcheck-logs ]; then
|
|
tar -C vmcheck-logs -cf- . | xz -c9 > vmcheck-logs.tar.xz
|
|
fi
|
|
""")
|
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'vmcheck-logs.tar.xz'
|
|
}
|
|
}
|
|
}
|
|
},
|
|
compose: {
|
|
def jobs = 5
|
|
def mem = (jobs * 2048) + 512
|
|
cosaPod(runAsUser: 0, memory: "${mem}Mi", cpu: "${jobs}") {
|
|
checkout scm
|
|
unstash 'rpms'
|
|
stage("Install Deps") {
|
|
shwrap("""
|
|
ci/installdeps.sh # really, we just need test deps, but meh...
|
|
dnf install -y *.rpm # install our built rpm-ostree
|
|
""")
|
|
}
|
|
stage("Run") {
|
|
try {
|
|
timeout(time: 60, unit: 'MINUTES') {
|
|
shwrap("""
|
|
mkdir -p compose-logs /srv/tmpdir
|
|
TMPDIR=/srv/tmpdir JOBS=${jobs} ./tests/compose.sh
|
|
""")
|
|
}
|
|
} finally {
|
|
shwrap("""
|
|
if [ -d compose-logs ]; then
|
|
tar -C compose-logs -cf- . | xz -c9 > compose-logs.tar.xz
|
|
fi
|
|
""")
|
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'compose-logs.tar.xz'
|
|
}
|
|
}
|
|
}
|
|
}}
|