summaryrefslogtreecommitdiff
path: root/packages/linux-kernel/Jenkinsfile
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux-kernel/Jenkinsfile')
-rw-r--r--packages/linux-kernel/Jenkinsfile180
1 files changed, 66 insertions, 114 deletions
diff --git a/packages/linux-kernel/Jenkinsfile b/packages/linux-kernel/Jenkinsfile
index 06325266..8c68d889 100644
--- a/packages/linux-kernel/Jenkinsfile
+++ b/packages/linux-kernel/Jenkinsfile
@@ -15,63 +15,10 @@
@NonCPS
-def getGitBranchName() {
- def branch = scm.branches[0].name
- return branch.split('/')[-1]
-}
-
-def getGitRepoURL() {
- return scm.userRemoteConfigs[0].url
-}
-
-def getGitRepoName() {
- return getGitRepoURL().split('/').last()
-}
-
-// Returns true if this is a custom build launched on any project fork.
-// Returns false if this is build from git@github.com:vyos/<reponame>.
-// <reponame> can be e.g. vyos-1x.git or vyatta-op.git
-def isCustomBuild() {
- // GitHub organisation base URL
- def gitURI = 'git@github.com:vyos/' + getGitRepoName()
- def httpURI = 'https://github.com/vyos/' + getGitRepoName()
-
- return !((getGitRepoURL() == gitURI) || (getGitRepoURL() == httpURI)) || env.CHANGE_ID
-}
-
-def setDescription() {
- def item = Jenkins.instance.getItemByFullName(env.JOB_NAME)
-
- // build up the main description text
- def description = ""
- description += "<h2>VyOS individual package build: " + getGitRepoName().replace('.git', '') + "</h2>"
-
- if (isCustomBuild()) {
- description += "<p style='border: 3px dashed red; width: 50%;'>"
- description += "<b>Build not started from official Git repository!</b><br>"
- description += "<br>"
- description += "Repository: <font face = 'courier'>" + getGitRepoURL() + "</font><br>"
- description += "Branch: <font face = 'courier'>" + getGitBranchName() + "</font><br>"
- description += "</p>"
- } else {
- description += "Sources taken from Git branch: <font face = 'courier'>" + getGitBranchName() + "</font><br>"
- }
-
- item.setDescription(description)
- item.save()
-}
-
-//
-// VyOS builds some Intel Out-of-Tree drivers
-// which are defined here
-//
-def IntelMap = [:]
-IntelMap['ixgbe'] = 'https://sourceforge.net/projects/e1000/files/ixgbe%20stable/5.6.5/ixgbe-5.6.5.tar.gz/download'
-IntelMap['igb'] = 'https://sourceforge.net/projects/e1000/files/igb%20stable/5.3.5.42/igb-5.3.5.42.tar.gz/download'
-IntelMap['i40e'] = 'https://sourceforge.net/projects/e1000/files/i40e%20stable/2.11.21/i40e-2.11.21.tar.gz/download'
-IntelMap['ixgbevf'] = 'https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/4.6.3/ixgbevf-4.6.3.tar.gz/download'
-IntelMap['i40evf'] = 'https://sourceforge.net/projects/e1000/files/i40evf%20stable/3.6.15/i40evf-3.6.15.tar.gz/download'
-IntelMap['iavf'] = 'https://sourceforge.net/projects/e1000/files/iavf%20stable/3.9.3/iavf-3.9.3.tar.gz/download'
+// Using a version specifier library, use 'current' branch. The underscore (_)
+// is not a typo! You need this underscore if the line immediately after the
+// @Library annotation is not an import statement!
+@Library('vyos-build@crux')_
/* Only keep the most recent builds. */
def projectProperties = [
@@ -115,6 +62,7 @@ pipeline {
}
environment {
DEBIAN_ARCH = sh(returnStdout: true, script: 'dpkg --print-architecture').trim()
+ BASE_DIR = 'packages/linux-kernel'
}
stages {
stage('Fetch') {
@@ -130,7 +78,7 @@ pipeline {
parallel {
stage('Kernel') {
steps {
- dir('linux') {
+ dir(env.BASE_DIR + '/linux') {
checkout([$class: 'GitSCM',
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout'],
@@ -142,7 +90,7 @@ pipeline {
}
stage('WireGuard') {
steps {
- dir('wireguard') {
+ dir(env.BASE_DIR + '/wireguard') {
checkout([$class: 'GitSCM',
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout']],
@@ -153,7 +101,7 @@ pipeline {
}
stage('Accel-PPP') {
steps {
- dir('accel-ppp') {
+ dir(env.BASE_DIR + '/accel-ppp') {
checkout([$class: 'GitSCM',
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout']],
@@ -164,7 +112,7 @@ pipeline {
}
stage('Intel-QAT') {
steps {
- dir('intel-qat') {
+ dir(env.BASE_DIR + '/intel-qat') {
checkout([$class: 'GitSCM',
doGenerateSubmoduleConfigurations: false,
extensions: [[$class: 'CleanCheckout']],
@@ -178,29 +126,39 @@ pipeline {
}
stage('Compile Kernel') {
steps {
- sh "./build-kernel.sh"
+ dir(env.BASE_DIR) {
+ sh "./build-kernel.sh"
+ }
}
}
stage('Intel Driver(s)') {
steps {
- sh "./build-intel-drivers.sh"
+ dir(env.BASE_DIR) {
+ sh "./build-intel-drivers.sh"
+ }
}
}
stage('Kernel Module(s)') {
parallel {
stage('WireGuard') {
steps {
- sh "./build-wireguard.sh"
+ dir(env.BASE_DIR) {
+ sh "./build-wireguard.sh"
+ }
}
}
stage('Accel-PPP') {
steps {
- sh "./build-accel-ppp.sh"
+ dir(env.BASE_DIR) {
+ sh "./build-accel-ppp.sh"
+ }
}
}
stage('Intel-QAT') {
steps {
- sh "./build-intel-qat.sh"
+ dir(env.BASE_DIR) {
+ sh "./build-intel-qat.sh"
+ }
}
}
}
@@ -212,54 +170,48 @@ pipeline {
}
success {
script {
- // archive *.deb artifact on custom builds, deploy to repo otherwise
- if ( isCustomBuild()) {
- archiveArtifacts artifacts: '*.deb', fingerprint: true
- } else {
- // publish build result, using SSH-dev.packages.vyos.net Jenkins Credentials
- sshagent(['SSH-dev.packages.vyos.net']) {
- // build up some fancy groovy variables so we do not need to write/copy
- // every option over and over again!
- def RELEASE = getGitBranchName()
- if (getGitBranchName() == "master") {
- RELEASE = 'current'
- }
-
- def VYOS_REPO_PATH = '/home/sentrium/web/dev.packages.vyos.net/public_html/repositories/' + RELEASE + '/'
- if (getGitBranchName() == "crux")
- VYOS_REPO_PATH += 'vyos/'
-
- def SSH_OPTS = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR'
- def SSH_REMOTE = 'khagen@10.217.48.113'
-
- echo "Uploading package(s) and updating package(s) in the repository ..."
-
- files = findFiles(glob: '*.deb')
- files.each { PACKAGE ->
- def ARCH = sh(returnStdout: true, script: "dpkg-deb -f ${PACKAGE} Architecture").trim()
- def SUBSTRING = sh(returnStdout: true, script: "dpkg-deb -f ${PACKAGE} Package").trim()
- def SSH_DIR = '~/VyOS/' + RELEASE + '/' + ARCH
- def ARCH_OPT = ''
- if (ARCH != 'all')
- ARCH_OPT = '-A ' + ARCH
-
- // No need to explicitly check the return code. The pipeline
- // will fail if sh returns a non 0 exit code
- sh """
- ssh ${SSH_OPTS} ${SSH_REMOTE} -t "bash --login -c 'mkdir -p ${SSH_DIR}'"
- """
- sh """
- scp ${SSH_OPTS} ${PACKAGE} ${SSH_REMOTE}:${SSH_DIR}/
- """
- sh """
- ssh ${SSH_OPTS} ${SSH_REMOTE} -t "uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH_OPT} remove ${RELEASE} ${SUBSTRING}'"
- """
- sh """
- ssh ${SSH_OPTS} ${SSH_REMOTE} -t "uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} deleteunreferenced'"
- """
- sh """
- ssh ${SSH_OPTS} ${SSH_REMOTE} -t "uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH_OPT} includedeb ${RELEASE} ${SSH_DIR}/${PACKAGE}'"
- """
+ dir(env.BASE_DIR) {
+ // archive *.deb artifact on custom builds, deploy to repo otherwise
+ if ( isCustomBuild()) {
+ archiveArtifacts artifacts: '*.deb', fingerprint: true
+ } else {
+ // publish build result, using SSH-dev.packages.vyos.net Jenkins Credentials
+ sshagent(['SSH-dev.packages.vyos.net']) {
+ // build up some fancy groovy variables so we do not need to write/copy
+ // every option over and over again!
+ def RELEASE = getGitBranchName()
+ if (getGitBranchName() == "master") {
+ RELEASE = 'current'
+ }
+
+ def VYOS_REPO_PATH = '/home/sentrium/web/dev.packages.vyos.net/public_html/repositories/' + RELEASE + '/'
+ if (getGitBranchName() == "crux")
+ VYOS_REPO_PATH += 'vyos/'
+
+ def SSH_OPTS = '-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -o LogLevel=ERROR'
+ def SSH_REMOTE = 'khagen@10.217.48.113'
+
+ echo "Uploading package(s) and updating package(s) in the repository ..."
+
+ files = findFiles(glob: '*.deb')
+ files.each { PACKAGE ->
+ def ARCH = sh(returnStdout: true, script: "dpkg-deb -f ${PACKAGE} Architecture").trim()
+ def SUBSTRING = sh(returnStdout: true, script: "dpkg-deb -f ${PACKAGE} Package").trim()
+ def SSH_DIR = '~/VyOS/' + RELEASE + '/' + ARCH
+ def ARCH_OPT = ''
+ if (ARCH != 'all')
+ ARCH_OPT = '-A ' + ARCH
+
+ // No need to explicitly check the return code. The pipeline
+ // will fail if sh returns a non 0 exit code
+ sh """
+ ssh ${SSH_OPTS} ${SSH_REMOTE} -t "bash --login -c 'mkdir -p ${SSH_DIR}'"
+ scp ${SSH_OPTS} ${PACKAGE} ${SSH_REMOTE}:${SSH_DIR}/
+ ssh ${SSH_OPTS} ${SSH_REMOTE} -t "uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH_OPT} remove ${RELEASE} ${SUBSTRING}'"
+ ssh ${SSH_OPTS} ${SSH_REMOTE} -t "uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} deleteunreferenced'"
+ ssh ${SSH_OPTS} ${SSH_REMOTE} -t "uncron-add 'reprepro -v -b ${VYOS_REPO_PATH} ${ARCH_OPT} includedeb ${RELEASE} ${SSH_DIR}/${PACKAGE}'"
+ """
+ }
}
}
}