pipeline { agent none environment { GLUON_SITEDIR = "contrib/ci/minimal-site" GLUON_TARGET = "x86-64" BUILD_LOG = "1" } stages { stage('lint') { parallel { stage('lint-lua') { agent { label 'gluon-docker' } steps { sh label: 'Identify runner', script: 'echo $SLAVE_NAME' sh 'make lint-lua' } } stage('lint-sh') { agent { label 'gluon-docker-v1' } steps { sh label: 'Identify runner', script: 'echo $SLAVE_NAME' sh 'make lint-sh' } } } } stage('docs') { agent { label 'gluon-docker' } steps { sh label: 'Identify runner', script: 'echo $SLAVE_NAME' sh 'make -C docs html' } } stage('build') { agent { label 'gluon-docker' } steps { sh label: 'Identify runner', script: 'echo $SLAVE_NAME' sh 'make update' sh 'test -d /dl_cache && ln -s /dl_cache openwrt/dl || true' sh 'make -j$(nproc) V=s' stash includes: '**/output/images/factory/*-x86-64.img.gz', name: 'gluon-x86-64-factory' } } stage('test') { agent { label 'gluon-docker-v2' } environment { TMUX = "notmux" } steps { sh label: 'Identify runner', script: 'echo $SLAVE_NAME' unstash 'gluon-x86-64-factory' sh label: 'Unpack image', script: 'gunzip -cd ./output/images/factory/*x86-64*.img.gz > ./image.img' sh label: 'Print python environment', script: 'python3 -m pip freeze' script { for (f in findFiles(glob: '**/tests/*.py')) { sh label: "Test ${f.name}", script: "python3 tests/${f.name} --use-tmp-workdir" } } } } } } /* api-history: Every time the build dependencies of gluon change, the version every container has to be rebuilt. Therefore, we use Jenkins labels which intoduce a version number which is documented here. As soon, as you properly rebuilt your docker container, you can notify lemoer, that you have updated your node. - gluon-docker-v1: add shellcheck binary to the build environment - gluon-docker-v2: add qemu-testlab testing, requires KVM virtualization support */