ci: Re-org stages and parallelize tests
Build FCOS and run vmcheck in the same container, since it's only used for that anyway right now. The main advantage is that we save time provisioning another container and not having to stash and unstash the FCOS image. Also, since the compose tests don't actually need to wait for the FCOS image, start running them in parallel with the FCOS + vmcheck branch.
This commit is contained in:
parent
9daea46d66
commit
654ab64409
@ -8,7 +8,7 @@ parallel rpms: {
|
|||||||
coreos.pod(image: COSA_BUILDROOT_IMAGE, runAsUser: 0) {
|
coreos.pod(image: COSA_BUILDROOT_IMAGE, runAsUser: 0) {
|
||||||
checkout scm
|
checkout scm
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
set -xeuo pipefail
|
||||||
# fetch tags so `git describe` gives a nice NEVRA when building the RPM
|
# fetch tags so `git describe` gives a nice NEVRA when building the RPM
|
||||||
git fetch origin --tags
|
git fetch origin --tags
|
||||||
ci/installdeps.sh
|
ci/installdeps.sh
|
||||||
@ -24,17 +24,18 @@ parallel rpms: {
|
|||||||
|
|
||||||
cd packaging
|
cd packaging
|
||||||
make -f Makefile.dist-packaging rpm
|
make -f Makefile.dist-packaging rpm
|
||||||
|
mv \$(find . -name '*.rpm') ..
|
||||||
"""
|
"""
|
||||||
// make it easy for anyone to download the RPMs
|
// make it easy for anyone to download the RPMs
|
||||||
archiveArtifacts 'packaging/**/*.rpm'
|
archiveArtifacts '*.rpm'
|
||||||
stash includes: 'packaging/**/*.rpm', name: 'rpms'
|
stash excludes: '*.src.rpm', includes: '*.rpm', name: 'rpms'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
codestyle: {
|
codestyle: {
|
||||||
coreos.pod(image: COSA_IMAGE) {
|
coreos.pod(image: COSA_IMAGE) {
|
||||||
checkout scm
|
checkout scm
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
set -xeuo pipefail
|
||||||
# Jenkins by default only fetches the branch it's testing. Explicitly fetch master
|
# Jenkins by default only fetches the branch it's testing. Explicitly fetch master
|
||||||
# for ci-commitmessage-submodules.sh
|
# for ci-commitmessage-submodules.sh
|
||||||
git fetch origin +refs/heads/master:refs/remotes/origin/master
|
git fetch origin +refs/heads/master:refs/remotes/origin/master
|
||||||
@ -48,53 +49,40 @@ rust: {
|
|||||||
checkout scm
|
checkout scm
|
||||||
|
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
set -xeuo pipefail
|
||||||
ci/msrv.sh
|
ci/msrv.sh
|
||||||
cd rust && cargo test
|
cd rust && cargo test
|
||||||
"""
|
"""
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
stage("Build FCOS") {
|
|
||||||
coreos.pod(image: COSA_IMAGE, runAsUser: 0, kvm: true) {
|
|
||||||
unstash 'rpms'
|
|
||||||
sh """
|
|
||||||
set -euo pipefail
|
|
||||||
|
|
||||||
rpms=\$(find packaging/ ! -name '*.src.rpm' -name '*.rpm')
|
|
||||||
|
|
||||||
# install our built rpm-ostree
|
|
||||||
dnf install -y \${rpms}
|
|
||||||
|
|
||||||
# and build FCOS with our built rpm-ostree inside of it
|
|
||||||
coreos-assembler init --force https://github.com/coreos/fedora-coreos-config
|
|
||||||
mkdir -p overrides/rpm
|
|
||||||
mv \${rpms} overrides/rpm
|
|
||||||
rm -rf packaging
|
|
||||||
|
|
||||||
coreos-assembler build
|
|
||||||
"""
|
|
||||||
stash includes: 'builds/latest/*/*.qcow2', name: 'fcos'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
stage("Test") {
|
stage("Test") {
|
||||||
parallel vmcheck: {
|
parallel vmcheck: {
|
||||||
def nhosts = 6
|
def nhosts = 6
|
||||||
def mem = (nhosts * 1024) + 512
|
def mem = (nhosts * 1024) + 512
|
||||||
coreos.pod(image: COSA_IMAGE, runAsUser: 0, kvm: true, memory: "${mem}Mi", cpu: "${nhosts}") {
|
coreos.pod(image: COSA_IMAGE, runAsUser: 0, kvm: true, memory: "${mem}Mi", cpu: "${nhosts}") {
|
||||||
|
stage("Build FCOS") {
|
||||||
checkout scm
|
checkout scm
|
||||||
unstash 'rpms'
|
unstash 'rpms'
|
||||||
|
// run this stage first without installing deps, so we match exactly the cosa pkgset
|
||||||
|
// (+ our built rpm-ostree)
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
set -xeuo pipefail
|
||||||
ci/installdeps.sh # really, we just need test deps, but meh...
|
dnf install -y *.rpm
|
||||||
|
coreos-assembler init --force https://github.com/coreos/fedora-coreos-config
|
||||||
# install our built rpm-ostree
|
# include our built rpm-ostree in the image
|
||||||
find packaging/ ! -name '*.src.rpm' -name '*.rpm' | xargs dnf install -y
|
mkdir -p overrides/rpm
|
||||||
rm -rf packaging
|
mv *.rpm overrides/rpm
|
||||||
|
coreos-assembler build
|
||||||
"""
|
"""
|
||||||
unstash 'fcos'
|
}
|
||||||
|
stage("Install Deps") {
|
||||||
|
sh """
|
||||||
|
set -xeuo pipefail
|
||||||
|
ci/installdeps.sh # really, we just need test deps, but meh...
|
||||||
|
"""
|
||||||
|
}
|
||||||
|
stage("Run") {
|
||||||
try {
|
try {
|
||||||
timeout(time: 30, unit: 'MINUTES') {
|
timeout(time: 30, unit: 'MINUTES') {
|
||||||
sh """
|
sh """
|
||||||
@ -106,6 +94,7 @@ parallel vmcheck: {
|
|||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
sh """
|
sh """
|
||||||
|
set -xeuo pipefail
|
||||||
if [ -d vmcheck-logs ]; then
|
if [ -d vmcheck-logs ]; then
|
||||||
tar -C vmcheck-logs -cf- . | xz -c9 > vmcheck-logs.tar.xz
|
tar -C vmcheck-logs -cf- . | xz -c9 > vmcheck-logs.tar.xz
|
||||||
fi
|
fi
|
||||||
@ -113,6 +102,7 @@ parallel vmcheck: {
|
|||||||
archiveArtifacts allowEmptyArchive: true, artifacts: 'vmcheck-logs.tar.xz'
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'vmcheck-logs.tar.xz'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
compose: {
|
compose: {
|
||||||
def jobs = 5
|
def jobs = 5
|
||||||
@ -120,14 +110,14 @@ compose: {
|
|||||||
coreos.pod(image: COSA_IMAGE, runAsUser: 0, emptyDirs: ["/srv/tmpdir"], kvm: true, memory: "${mem}Mi", cpu: "${jobs}") {
|
coreos.pod(image: COSA_IMAGE, runAsUser: 0, emptyDirs: ["/srv/tmpdir"], kvm: true, memory: "${mem}Mi", cpu: "${jobs}") {
|
||||||
checkout scm
|
checkout scm
|
||||||
unstash 'rpms'
|
unstash 'rpms'
|
||||||
|
stage("Install Deps") {
|
||||||
sh """
|
sh """
|
||||||
set -euo pipefail
|
set -xeuo pipefail
|
||||||
ci/installdeps.sh # really, we just need test deps, but meh...
|
ci/installdeps.sh # really, we just need test deps, but meh...
|
||||||
|
dnf install -y *.rpm # install our built rpm-ostree
|
||||||
# install our built rpm-ostree
|
|
||||||
find packaging/ ! -name '*.src.rpm' -name '*.rpm' | xargs dnf install -y
|
|
||||||
rm -rf packaging
|
|
||||||
"""
|
"""
|
||||||
|
}
|
||||||
|
stage("Run") {
|
||||||
try {
|
try {
|
||||||
timeout(time: 40, unit: 'MINUTES') {
|
timeout(time: 40, unit: 'MINUTES') {
|
||||||
sh """
|
sh """
|
||||||
@ -138,6 +128,7 @@ compose: {
|
|||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
sh """
|
sh """
|
||||||
|
set -xeuo pipefail
|
||||||
if [ -d compose-logs ]; then
|
if [ -d compose-logs ]; then
|
||||||
tar -C compose-logs -cf- . | xz -c9 > compose-logs.tar.xz
|
tar -C compose-logs -cf- . | xz -c9 > compose-logs.tar.xz
|
||||||
fi
|
fi
|
||||||
@ -145,4 +136,5 @@ compose: {
|
|||||||
archiveArtifacts allowEmptyArchive: true, artifacts: 'compose-logs.tar.xz'
|
archiveArtifacts allowEmptyArchive: true, artifacts: 'compose-logs.tar.xz'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
|
Loading…
Reference in New Issue
Block a user