Skip to content

Commit

Permalink
jenkinsfile: filter stages based on path
Browse files Browse the repository at this point in the history
Ideally we would want to trigger Jenkins build based on the path where
change occurred. Unfortunately this is not supported by Jenkins. As a
workaround we are conditionally executing steps if the change occured in
the apps/connector/ path. Prior to this we need to fetch the changelog
diff between current branch and target branch to understand if there was
a change present in the target dir and if we need to run all stages.
The population of changelog is needed just the first time the PR is
opened and in the subsequent steps we don't need this.

Referenced issue: #590

Signed-off-by: markoburcul <[email protected]>
  • Loading branch information
markoburcul committed Oct 11, 2024
1 parent b7be3d7 commit 40f0155
Showing 1 changed file with 62 additions and 2 deletions.
64 changes: 62 additions & 2 deletions apps/connector/Jenkinsfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#!/usr/bin/env groovy
library '[email protected]'

def changesDetected = false

pipeline {
agent { label 'linux' }

Expand All @@ -27,7 +29,41 @@ pipeline {
}

stages {
stage('Initial changelog checkout') {
when {
expression { currentBuild.previousCompletedBuild == null }
}
steps {
script {
checkout scmGit(
branches: scm.branches,
extensions: [
cloneOption(depth: 100, noTags: true, reference: '', shallow: true),
changelogToBranch(changelogBase(
compareRemote: 'origin',
compareTarget: CHANGE_TARGET
))
],
userRemoteConfigs: scm.userRemoteConfigs
)
}
}
}

stage('Check changes') {
when {
changeset pattern: "apps/connector/**", comparator: "GLOB"
}
steps {
script {
changesDetected = true
}
}
}
stage('Install') {
when {
expression { changesDetected }
}
steps {
dir("${env.WORKSPACE}/apps/connector") {
script {
Expand All @@ -42,6 +78,9 @@ pipeline {
}

stage('Build') {
when {
expression { changesDetected }
}
steps {
dir("${env.WORKSPACE}/apps/connector") {
script {
Expand All @@ -56,6 +95,9 @@ pipeline {
}

stage('Zip') {
when {
expression { changesDetected }
}
steps {
dir("${env.WORKSPACE}/apps/connector") {
zip(
Expand All @@ -68,6 +110,9 @@ pipeline {
}

stage('Archive') {
when {
expression { changesDetected }
}
steps {
dir("${env.WORKSPACE}/apps/connector") {
archiveArtifacts(
Expand All @@ -79,6 +124,9 @@ pipeline {
}

stage('Upload') {
when {
expression { changesDetected }
}
steps {
dir("${env.WORKSPACE}/apps/connector") {
script {
Expand All @@ -90,8 +138,20 @@ pipeline {
}

post {
success { script { github.notifyPR(true) } }
failure { script { github.notifyPR(false) } }
success {
script {
if(changesDetected) {
github.notifyPR(true)
}
}
}
failure {
script {
if(changesDetected) {
github.notifyPR(false)
}
}
}
cleanup { cleanWs() }
}
}

0 comments on commit 40f0155

Please sign in to comment.