summaryrefslogtreecommitdiff
path: root/packages/netfilter
diff options
context:
space:
mode:
authorChristian Poessinger <christian@poessinger.com>2020-06-20 14:36:09 +0200
committerChristian Poessinger <christian@poessinger.com>2020-06-20 23:11:56 +0200
commit7ab2724c338f1372d0ef65f0ac3600282d13ace0 (patch)
tree8b989c0e29c28b433de6b0c13d81eaa5cfd7a393 /packages/netfilter
parent3656075d2736b59b857ca443cb77c2a6ea2ac822 (diff)
downloadvyos-build-7ab2724c338f1372d0ef65f0ac3600282d13ace0.tar.gz
vyos-build-7ab2724c338f1372d0ef65f0ac3600282d13ace0.zip
Jenkins: initial support for shared build libraries
Instead of writing the same code over and over again, place the common parts into a Jenkins Library which is then consumed by every individual build Job. This not only makes it less complex, but also increases maintainability by several magnitudes.
Diffstat (limited to 'packages/netfilter')
-rw-r--r--packages/netfilter/Jenkinsfile93
1 files changed, 29 insertions, 64 deletions
diff --git a/packages/netfilter/Jenkinsfile b/packages/netfilter/Jenkinsfile
index 9554f6e3..1af7dec5 100644
--- a/packages/netfilter/Jenkinsfile
+++ b/packages/netfilter/Jenkinsfile
@@ -14,52 +14,8 @@
// along with this program. If not, see <http://www.gnu.org/licenses/>.
@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()
-}
+/* Using a version specifier library, use 'current' branch */
+@Library('vyos-build@current')
/* Only keep the 10 most recent builds. */
def projectProperties = [
@@ -71,20 +27,20 @@ setDescription()
node('Docker') {
stage('Define Agent') {
- 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) {
- branchName = "${env.CHANGE_TARGET}".toLowerCase()
- }
- if (branchName.equals("master")) {
- branchName = "current"
- }
- env.DOCKER_IMAGE = "vyos/vyos-build:" + branchName
- }
+ 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) {
+ branchName = "${env.CHANGE_TARGET}".toLowerCase()
+ }
+ if (branchName.equals("master")) {
+ branchName = "current"
+ }
+ env.DOCKER_IMAGE = "vyos/vyos-build:" + branchName
+ }
}
}
@@ -101,13 +57,20 @@ pipeline {
CHANGESET_DIR = "**/${env.BASE_DIR}*"
}
options {
+ disableConcurrentBuilds()
timeout(time: 60, unit: 'MINUTES')
timestamps()
}
stages {
stage('Fetch') {
when {
- changeset "${env.CHANGESET_DIR}"
+ beforeOptions true
+ beforeAgent true
+ anyOf {
+ changeset "${env.CHANGESET_DIR}"
+ triggeredBy 'TimerTrigger'
+ triggeredBy cause: "UserIdCause"
+ }
}
steps {
script {
@@ -190,9 +153,11 @@ pipeline {
deleteDir()
}
success {
- // archive *.deb artifact on custom builds, deploy to repo otherwise
- if ( isCustomBuild()) {
- archiveArtifacts artifacts: '**/*.deb', allowEmptyArchive: true
+ script {
+ // archive *.deb artifact on custom builds, deploy to repo otherwise
+ if ( isCustomBuild()) {
+ archiveArtifacts artifacts: '**/*.deb', allowEmptyArchive: true
+ }
}
}
}