Skip to content

Commit a4896cf

Browse files
authored
ci: skip jenkins for develop developments (#4953)
* ci: skip jenkins for develop developments * ci: skip jenkins for develop developments
1 parent 6b2908c commit a4896cf

1 file changed

Lines changed: 140 additions & 123 deletions

File tree

Jenkinsfile

Lines changed: 140 additions & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -20,155 +20,168 @@ pipeline {
2020
stage('Check for [skip ci]') {
2121
when {
2222
expression {
23-
return isSkipCI()
23+
return isSkipCI() || isTargetDevelop()
2424
}
2525
}
2626
steps {
2727
script {
28-
currentBuild.result = 'UNSTABLE' // Mark build as a warning instead of an error
29-
echo "⚠️ Warning: Skipping CI because '[skip ci]' was found in the PR title or description."
30-
}
31-
}
32-
}
33-
stage('Change to JAVA 17') {
34-
steps {
35-
script {
36-
echo 'Changing JAVA version to 17'
37-
sh 'sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java'
38-
env.JAVA_HOME = '/usr/lib/jvm/java-17-openjdk-amd64'
28+
if (isTargetDevelop()) {
29+
currentBuild.description = "CI skipped: develop runs on GitHub Actions"
30+
echo "✅ Skipping CI because the target branch is 'develop'. CI for develop runs on GitHub Actions."
31+
} else {
32+
currentBuild.description = "CI skipped: '[skip ci]' found in the PR"
33+
echo "✅ Skipping CI because '[skip ci]' was found in the PR title or description."
34+
}
3935
}
4036
}
4137
}
42-
stage('Check PR Size') {
38+
stage('CI') {
4339
when {
4440
expression {
45-
return !isSkipSizeCheck()
46-
}
47-
}
48-
environment {
49-
GIT_BRANCH = "${env.CHANGE_BRANCH}"
50-
GIT_BRANCH_DEST = "${env.CHANGE_TARGET == null ? '' : env.CHANGE_TARGET}"
51-
}
52-
steps {
53-
script {
54-
echo "Checking PR Size against ${env.CHANGE_TARGET ?: 'None (CI build)'}"
55-
sh 'chmod +x ./scripts/check_pr_size.sh'
56-
sh './scripts/check_pr_size.sh'
41+
return !isSkipCI() && !isTargetDevelop()
5742
}
5843
}
59-
}
60-
stage('Lint Check') {
61-
steps {
62-
script {
63-
echo 'Running Ktlint'
64-
sh './gradlew ktlintCheck'
65-
}
66-
}
67-
}
68-
stage('Unit tests') {
69-
when {
70-
expression {
71-
return !isSkipUnitTest()
44+
stages {
45+
stage('Change to JAVA 17') {
46+
steps {
47+
script {
48+
echo 'Changing JAVA version to 17'
49+
sh 'sudo update-alternatives --set java /usr/lib/jvm/java-17-openjdk-amd64/bin/java'
50+
env.JAVA_HOME = '/usr/lib/jvm/java-17-openjdk-amd64'
51+
}
52+
}
7253
}
73-
}
74-
environment {
75-
ANDROID_HOME = '/opt/android-sdk'
76-
}
77-
steps {
78-
script {
79-
echo 'Running unit tests'
80-
sh './gradlew testDebugUnitTest testDhis2DebugUnitTest testAndroidHostTest --stacktrace --no-daemon'
54+
stage('Check PR Size') {
55+
when {
56+
expression {
57+
return !isSkipSizeCheck()
58+
}
59+
}
60+
environment {
61+
GIT_BRANCH = "${env.CHANGE_BRANCH}"
62+
GIT_BRANCH_DEST = "${env.CHANGE_TARGET == null ? '' : env.CHANGE_TARGET}"
63+
}
64+
steps {
65+
script {
66+
echo "Checking PR Size against ${env.CHANGE_TARGET ?: 'None (CI build)'}"
67+
sh 'chmod +x ./scripts/check_pr_size.sh'
68+
sh './scripts/check_pr_size.sh'
69+
}
70+
}
8171
}
82-
}
83-
}
84-
stage('Build Test APKs') {
85-
steps {
86-
script {
87-
echo 'Building UI APKs'
88-
sh './gradlew :app:assembleDhis2Debug :app:assembleDhis2DebugAndroidTest :form:assembleAndroidTest'
72+
stage('Lint Check') {
73+
steps {
74+
script {
75+
echo 'Running Ktlint'
76+
sh './gradlew ktlintCheck'
77+
}
78+
}
8979
}
90-
}
91-
}
92-
stage('Run Form Tests') {
93-
environment {
94-
BROWSERSTACK = credentials('android-browserstack')
95-
form_apk = sh(returnStdout: true, script: 'find form/build/outputs -iname "*.apk" | sed -n 1p')
96-
form_apk_path = "${env.WORKSPACE}/${form_apk}"
97-
buildTag = "${env.GIT_BRANCH} - form"
80+
stage('Unit tests') {
81+
when {
82+
expression {
83+
return !isSkipUnitTest()
84+
}
85+
}
86+
environment {
87+
ANDROID_HOME = '/opt/android-sdk'
88+
}
89+
steps {
90+
script {
91+
echo 'Running unit tests'
92+
sh './gradlew testDebugUnitTest testDhis2DebugUnitTest testAndroidHostTest --stacktrace --no-daemon'
93+
}
94+
}
9895
}
99-
steps {
100-
dir("${env.WORKSPACE}/scripts"){
96+
stage('Build Test APKs') {
97+
steps {
10198
script {
102-
echo 'Browserstack deployment and running Form module tests'
103-
sh 'chmod +x browserstackJenkinsForm.sh'
104-
sh './browserstackJenkinsForm.sh'
99+
echo 'Building UI APKs'
100+
sh './gradlew :app:assembleDhis2Debug :app:assembleDhis2DebugAndroidTest :form:assembleAndroidTest'
105101
}
106102
}
107103
}
108-
}
109-
stage('Run UI Tests in portrait') {
110-
environment {
111-
BROWSERSTACK = credentials('android-browserstack')
112-
app_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/dhis2/debug -iname "*.apk"')
113-
test_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/androidTest -iname "*.apk"')
114-
app_apk_path = "${env.WORKSPACE}/${app_apk}"
115-
test_apk_path = "${env.WORKSPACE}/${test_apk}"
116-
buildTag = "${env.GIT_BRANCH}"
117-
}
118-
steps {
119-
dir("${env.WORKSPACE}/scripts"){
120-
script {
121-
echo 'Browserstack deployment and running tests'
122-
sh 'chmod +x browserstackJenkins.sh'
123-
sh './browserstackJenkins.sh'
104+
stage('Run Form Tests') {
105+
environment {
106+
BROWSERSTACK = credentials('android-browserstack')
107+
form_apk = sh(returnStdout: true, script: 'find form/build/outputs -iname "*.apk" | sed -n 1p')
108+
form_apk_path = "${env.WORKSPACE}/${form_apk}"
109+
buildTag = "${env.GIT_BRANCH} - form"
110+
}
111+
steps {
112+
dir("${env.WORKSPACE}/scripts"){
113+
script {
114+
echo 'Browserstack deployment and running Form module tests'
115+
sh 'chmod +x browserstackJenkinsForm.sh'
116+
sh './browserstackJenkinsForm.sh'
117+
}
118+
}
124119
}
125120
}
126-
}
127-
}
128-
stage('Run UI Tests in Landscape') {
129-
environment {
130-
BROWSERSTACK = credentials('android-browserstack')
131-
app_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/dhis2/debug -iname "*.apk"')
132-
test_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/androidTest -iname "*.apk"')
133-
app_apk_path = "${env.WORKSPACE}/${app_apk}"
134-
test_apk_path = "${env.WORKSPACE}/${test_apk}"
135-
buildTag = "${env.GIT_BRANCH}"
136-
}
137-
steps {
138-
dir("${env.WORKSPACE}/scripts"){
139-
script {
140-
echo 'Browserstack deployment and running tests'
141-
sh 'chmod +x browserstackJenkinsLandscape.sh'
142-
sh './browserstackJenkinsLandscape.sh'
121+
stage('Run UI Tests in portrait') {
122+
environment {
123+
BROWSERSTACK = credentials('android-browserstack')
124+
app_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/dhis2/debug -iname "*.apk"')
125+
test_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/androidTest -iname "*.apk"')
126+
app_apk_path = "${env.WORKSPACE}/${app_apk}"
127+
test_apk_path = "${env.WORKSPACE}/${test_apk}"
128+
buildTag = "${env.GIT_BRANCH}"
129+
}
130+
steps {
131+
dir("${env.WORKSPACE}/scripts"){
132+
script {
133+
echo 'Browserstack deployment and running tests'
134+
sh 'chmod +x browserstackJenkins.sh'
135+
sh './browserstackJenkins.sh'
136+
}
137+
}
143138
}
144139
}
145-
}
146-
}
147-
stage('JaCoCo report') {
148-
steps {
149-
script {
150-
echo 'Running JaCoCo report on app module'
151-
sh './gradlew jacocoReport --stacktrace --no-daemon'
140+
stage('Run UI Tests in Landscape') {
141+
environment {
142+
BROWSERSTACK = credentials('android-browserstack')
143+
app_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/dhis2/debug -iname "*.apk"')
144+
test_apk = sh(returnStdout: true, script: 'find app/build/outputs/apk/androidTest -iname "*.apk"')
145+
app_apk_path = "${env.WORKSPACE}/${app_apk}"
146+
test_apk_path = "${env.WORKSPACE}/${test_apk}"
147+
buildTag = "${env.GIT_BRANCH}"
148+
}
149+
steps {
150+
dir("${env.WORKSPACE}/scripts"){
151+
script {
152+
echo 'Browserstack deployment and running tests'
153+
sh 'chmod +x browserstackJenkinsLandscape.sh'
154+
sh './browserstackJenkinsLandscape.sh'
155+
}
156+
}
157+
}
152158
}
153-
}
154-
}
155-
stage('Sonarqube') {
156-
environment {
157-
GIT_BRANCH = "${env.GIT_BRANCH}"
158-
// Jenkinsfile considers empty value ('') as null
159-
GIT_BRANCH_DEST = "${env.CHANGE_TARGET == null ? '' : env.CHANGE_TARGET}"
160-
PULL_REQUEST = "${env.CHANGE_ID == null ? '' : env.CHANGE_ID }"
161-
SONAR_TOKEN = credentials('android-sonarcloud-token')
162-
}
163-
steps {
164-
script {
165-
echo 'Running Sonarqube'
166-
sh 'chmod +x ./scripts/sonarqube.sh'
167-
sh './scripts/sonarqube.sh'
159+
stage('JaCoCo report') {
160+
steps {
161+
script {
162+
echo 'Running JaCoCo report on app module'
163+
sh './gradlew jacocoReport --stacktrace --no-daemon'
164+
}
165+
}
166+
}
167+
stage('Sonarqube') {
168+
environment {
169+
GIT_BRANCH = "${env.GIT_BRANCH}"
170+
// Jenkinsfile considers empty value ('') as null
171+
GIT_BRANCH_DEST = "${env.CHANGE_TARGET == null ? '' : env.CHANGE_TARGET}"
172+
PULL_REQUEST = "${env.CHANGE_ID == null ? '' : env.CHANGE_ID }"
173+
SONAR_TOKEN = credentials('android-sonarcloud-token')
174+
}
175+
steps {
176+
script {
177+
echo 'Running Sonarqube'
178+
sh 'chmod +x ./scripts/sonarqube.sh'
179+
sh './scripts/sonarqube.sh'
180+
}
181+
}
168182
}
169183
}
170184
}
171-
172185
}
173186
post {
174187
success {
@@ -202,6 +215,10 @@ def isSkipCI() {
202215
return (prTitle.contains("[skip ci]") || prDescription.contains("[skip ci]"))
203216
}
204217

218+
def isTargetDevelop() {
219+
return (env.CHANGE_TARGET ?: "") == 'develop'
220+
}
221+
205222
def isSkipSizeCheck() {
206223
def prTitle = env.CHANGE_TITLE ?: ""
207224
def prDescription = env.CHANGE_DESCRIPTION ?: ""
@@ -212,4 +229,4 @@ def isSkipUnitTest() {
212229
def prTitle = env.CHANGE_TITLE ?: ""
213230
def prDescription = env.CHANGE_DESCRIPTION ?: ""
214231
return (prTitle.contains("[skip unitTest]") || prDescription.contains("[skip unitTest]"))
215-
}
232+
}

0 commit comments

Comments
 (0)