diff options
-rw-r--r-- | Jenkinsfile | 16 | ||||
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | packages/frr/Jenkinsfile | 2 | ||||
-rw-r--r-- | packages/linux-kernel/Jenkinsfile | 109 | ||||
-rw-r--r-- | packages/netfilter/Jenkinsfile | 21 | ||||
-rwxr-xr-x | scripts/check-qemu-install | 2 | ||||
-rw-r--r-- | vars/buildPackage.groovy | 7 | ||||
-rw-r--r-- | vars/isCustomBuild.groovy | 2 | ||||
-rw-r--r-- | vars/isPullRequest.groovy | 21 |
9 files changed, 142 insertions, 40 deletions
diff --git a/Jenkinsfile b/Jenkinsfile index c85f95ff..c2ec90a5 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -151,22 +151,16 @@ pipeline { --version 1.3-rolling-\$(date +%Y%m%d%H%M) sudo make iso """ + + if (fileExists('build/live-image-amd64.hybrid.iso') == false) { + error('ISO build error') + } } } } stage('Test ISO') { when { - beforeOptions true - beforeAgent true - anyOf { - // Do not run ISO build when the Docker container definition or the build pipeline - // library changes as this has no direct impact on the ISO image. - not { changeset "**/docker/*" } - not { changeset "**/vars/*" } - not { changeset "**/packages/*" } - triggeredBy 'TimerTrigger' - triggeredBy cause: "UserIdCause" - } + expression { fileExists 'build/live-image-amd64.hybrid.iso' } } steps { sh "sudo make test" @@ -225,7 +225,7 @@ vep1400: check_build_config clean prepare .ONESHELL: test: if [ ! -f build/live-image-amd64.hybrid.iso ]; then - echo "Could not find build/live-image-amd64.hybrid.iso" + echo "Could not find build/live-image-amd64.hybrid.iso" exit 1 fi scripts/check-qemu-install --debug build/live-image-amd64.hybrid.iso diff --git a/packages/frr/Jenkinsfile b/packages/frr/Jenkinsfile index a5558556..245519bd 100644 --- a/packages/frr/Jenkinsfile +++ b/packages/frr/Jenkinsfile @@ -27,5 +27,5 @@ def pkgList = [ 'buildCmd': '''cd ..; ./build-frr.sh'''], ] -// Start package build using library function from https://github.com/c-po/vyos-build +// Start package build using library function from https://github.com/vyos/vyos-build buildPackage('FRRouting', pkgList) diff --git a/packages/linux-kernel/Jenkinsfile b/packages/linux-kernel/Jenkinsfile index 26081116..c53ac3e3 100644 --- a/packages/linux-kernel/Jenkinsfile +++ b/packages/linux-kernel/Jenkinsfile @@ -62,21 +62,30 @@ pipeline { } environment { DEBIAN_ARCH = sh(returnStdout: true, script: 'dpkg --print-architecture').trim() - BASE_DIR = 'packages/linux-kernel' + BASE_DIR = getJenkinsfilePath() + CHANGESET_DIR = getChangeSetPath() } stages { stage('Fetch') { steps { script { - dir('build') { - checkout scm - } + checkout scm + echo env.CHANGESET_DIR } } } stage('Git Clone - Components') { parallel { stage('Kernel') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR + '/linux') { checkout([$class: 'GitSCM', @@ -84,12 +93,20 @@ pipeline { extensions: [[$class: 'CleanCheckout'], [$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], branches: [[name: 'v4.19.128' ]], - userRemoteConfigs: [[url: 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git']]]) + userRemoteConfigs: [[credentialsId: 'GitHub-vyosbot', url: 'https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git']]]) } - sh "pwd; ls -al" } } stage('Kernel Firmware') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR + '/linux-firmware') { checkout([$class: 'GitSCM', @@ -97,42 +114,69 @@ pipeline { extensions: [[$class: 'CleanCheckout'], [$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]], branches: [[name: '20191022' ]], - userRemoteConfigs: [[url: 'https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git']]]) + userRemoteConfigs: [[credentialsId: 'GitHub-vyosbot', url: 'https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git']]]) } } } stage('WireGuard') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR + '/wireguard') { checkout([$class: 'GitSCM', doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanCheckout']], branches: [[name: 'debian/1.0.20200319-1_bpo10+1' ]], - userRemoteConfigs: [[url: 'https://salsa.debian.org/debian/wireguard.git']]]) + userRemoteConfigs: [[credentialsId: 'GitHub-vyosbot', url: 'https://salsa.debian.org/debian/wireguard.git']]]) } dir(env.BASE_DIR + '/wireguard-linux-compat') { checkout([$class: 'GitSCM', doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanCheckout']], branches: [[name: 'debian/1.0.20200429-2_bpo10+1' ]], - userRemoteConfigs: [[url: 'https://salsa.debian.org/debian/wireguard-linux-compat.git']]]) + userRemoteConfigs: [[credentialsId: 'GitHub-vyosbot', url: 'https://salsa.debian.org/debian/wireguard-linux-compat.git']]]) } } } stage('Accel-PPP') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR + '/accel-ppp') { checkout([$class: 'GitSCM', doGenerateSubmoduleConfigurations: false, extensions: [[$class: 'CleanCheckout']], branches: [[name: 'ed7b28722ec85' ]], - userRemoteConfigs: [[url: 'https://github.com/accel-ppp/accel-ppp.git']]]) + userRemoteConfigs: [[credentialsId: 'GitHub-vyosbot', url: 'https://github.com/accel-ppp/accel-ppp.git']]]) } } } } } stage('Compile Kernel') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR) { sh "./build-kernel.sh" @@ -143,6 +187,15 @@ pipeline { stage('Kernel Module(s)') { parallel { stage('WireGuard') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR) { // In Debian wireguard repo commit edb7124c866ea0e506278c311fc82dfde1f957be @@ -155,6 +208,15 @@ pipeline { } } stage('Accel-PPP') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR) { sh "./build-accel-ppp.sh" @@ -162,6 +224,15 @@ pipeline { } } stage('Intel Driver(s)') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR) { sh "./build-intel-drivers.sh" @@ -169,6 +240,15 @@ pipeline { } } stage('Intel QuickAssist Technology') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR) { sh "./build-intel-qat.sh" @@ -181,6 +261,15 @@ pipeline { // again on the kernel source and this could confuse other build systems // like generating Intel or Accel-PPP drivers. Better safe then sorry! stage('Linux Firmware') { + when { + beforeOptions true + beforeAgent true + anyOf { + changeset pattern: "${env.CHANGESET_DIR}" + triggeredBy 'TimerTrigger' + triggeredBy cause: "UserIdCause" + } + } steps { dir(env.BASE_DIR) { sh "./build-linux-firmware.sh" diff --git a/packages/netfilter/Jenkinsfile b/packages/netfilter/Jenkinsfile index 882ba034..60df1318 100644 --- a/packages/netfilter/Jenkinsfile +++ b/packages/netfilter/Jenkinsfile @@ -21,13 +21,13 @@ @Library('vyos-build@current')_ def pkgList = [ - // pkg-libnftnl + // libnftnl ['name': 'pkg-libnftnl', 'scmCommit': 'debian/1.1.7-1', 'scmUrl': 'https://salsa.debian.org/pkg-netfilter-team/pkg-libnftnl.git', 'buildCmd': 'dpkg-buildpackage -uc -us -tc -b'], - // pkg-nftables + // nftables ['name': 'pkg-nftables', 'scmCommit': 'debian/0.9.6-1', 'scmUrl': 'https://salsa.debian.org/pkg-netfilter-team/pkg-nftables.git', @@ -35,18 +35,17 @@ def pkgList = [ sed -i "s/debhelper-compat.*/debhelper-compat (= 12),/" debian/control; dpkg-buildpackage -uc -us -tc -b'''], - // pkg-conntrack-tools - ['name': 'pkg-conntrack-tools', - 'scmCommit': 'debian/1%1.4.6-1', - 'scmUrl': 'https://salsa.debian.org/pkg-netfilter-team/pkg-conntrack-tools.git', + // libnetfilter-conntrack + ['name': 'pkg-libnetfilter-conntrack', + 'scmCommit': 'debian/1.0.8-1', + 'scmUrl': 'https://salsa.debian.org/pkg-netfilter-team/pkg-libnetfilter-conntrack.git', 'buildCmd': 'dpkg-buildpackage -uc -us -tc -b'], - // pkg-conntrack-tools + // conntrack-tools ['name': 'pkg-conntrack-tools', - 'scmCommit': 'debian/1.0.8-1', - 'scmUrl': 'https://salsa.debian.org/pkg-netfilter-team/pkg-libnetfilter-conntrack.git', - 'buildCmd': '''sudo dpkg -i ../libnetfilter*.deb; - dpkg-buildpackage -uc -us -tc -b'''] + 'scmCommit': 'debian/1%1.4.6-1', + 'scmUrl': 'https://salsa.debian.org/pkg-netfilter-team/pkg-conntrack-tools.git', + 'buildCmd': '''sudo dpkg -i ../libnetfilter*.deb && dpkg-buildpackage -uc -us -tc -b'''], ] // Start package build using library function from https://github.com/c-po/vyos-build diff --git a/scripts/check-qemu-install b/scripts/check-qemu-install index 43117b2b..b5ccc0b3 100755 --- a/scripts/check-qemu-install +++ b/scripts/check-qemu-install @@ -291,7 +291,7 @@ try: ################################################# log.info("Executing test-suite ") - c.sendline('sudo /usr/bin/vyos-smoketest') + c.sendline('/usr/bin/vyos-smoketest') i = c.expect(['\n +Invalid command:', '\n +Set failed', 'No such file or directory', diff --git a/vars/buildPackage.groovy b/vars/buildPackage.groovy index edd854b7..463170e6 100644 --- a/vars/buildPackage.groovy +++ b/vars/buildPackage.groovy @@ -35,10 +35,8 @@ def call(description=null, pkgList=null, buildCmd=null) { script { // create container name on demand def branchName = getGitBranchName() - // Adjust PR target branch name so we can re-map it to the proper - // Docker image. CHANGE_ID is set only for pull requests, so it is - // safe to access the pullRequest global variable - if (env.CHANGE_ID) { + // Adjust PR target branch name so we can re-map it to the proper Docker image. + if (isPullRequest()) { branchName = "${env.CHANGE_TARGET}".toLowerCase() } if (branchName.equals("master")) { @@ -106,6 +104,7 @@ def call(description=null, pkgList=null, buildCmd=null) { beforeAgent true anyOf { changeset pattern: "${env.CHANGESET_DIR}" + expression { isPullRequest() } triggeredBy 'TimerTrigger' triggeredBy cause: "UserIdCause" } diff --git a/vars/isCustomBuild.groovy b/vars/isCustomBuild.groovy index 301fdd42..c5e5fab7 100644 --- a/vars/isCustomBuild.groovy +++ b/vars/isCustomBuild.groovy @@ -22,5 +22,5 @@ def call() { def gitURI = 'git@github.com:vyos/' + getGitRepoName() def httpURI = 'https://github.com/vyos/' + getGitRepoName() - return !((getGitRepoURL() == gitURI) || (getGitRepoURL() == httpURI)) || env.CHANGE_ID + return !((getGitRepoURL() == gitURI) || (getGitRepoURL() == httpURI)) || isPullRequest() } diff --git a/vars/isPullRequest.groovy b/vars/isPullRequest.groovy new file mode 100644 index 00000000..813341bc --- /dev/null +++ b/vars/isPullRequest.groovy @@ -0,0 +1,21 @@ +// Copyright (C) 2020 VyOS maintainers and contributors +// +// This program is free software; you can redistribute it and/or modify +// in order to easy exprort images built to "external" world +// it under the terms of the GNU General Public License version 2 or later as +// published by the Free Software Foundation. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see <http://www.gnu.org/licenses/>. + +def call() { + if (env.CHANGE_ID) { + return true + } + return false +} |