This is an automated email from the ASF dual-hosted git repository.
tqchen pushed a commit to branch refactor
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/refactor by this push:
new dbdd4d9801 Update jenkins to only rerun in last build
dbdd4d9801 is described below
commit dbdd4d9801884a1777c4fcfbf2c36fb0139e62a2
Author: tqchen <[email protected]>
AuthorDate: Sat Feb 15 10:14:27 2025 -0500
Update jenkins to only rerun in last build
---
ci/jenkins/generated/arm_jenkinsfile.groovy | 89 ++++++++++----
ci/jenkins/generated/cpu_jenkinsfile.groovy | 105 +++++++++++-----
ci/jenkins/generated/docker_jenkinsfile.groovy | 9 +-
ci/jenkins/generated/gpu_jenkinsfile.groovy | 73 +++++++----
ci/jenkins/generated/hexagon_jenkinsfile.groovy | 153 +++++++++++++++++-------
ci/jenkins/generated/i386_jenkinsfile.groovy | 73 +++++++----
ci/jenkins/generated/lint_jenkinsfile.groovy | 9 +-
ci/jenkins/generated/wasm_jenkinsfile.groovy | 25 +++-
ci/jenkins/templates/utils/Prepare.groovy.j2 | 7 ++
ci/jenkins/templates/utils/macros.j2 | 32 +++--
10 files changed, 412 insertions(+), 163 deletions(-)
diff --git a/ci/jenkins/generated/arm_jenkinsfile.groovy
b/ci/jenkins/generated/arm_jenkinsfile.groovy
index a8949af697..5e48cc6500 100644
--- a/ci/jenkins/generated/arm_jenkinsfile.groovy
+++ b/ci/jenkins/generated/arm_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-14T17:21:20.745906
+// Generated at 2025-02-15T10:14:10.162250
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
@@ -523,11 +530,17 @@ def build() {
try {
run_build('ARM-GRAVITON3-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('ARM-GRAVITON3')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('ARM-GRAVITON3')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
@@ -735,44 +748,68 @@ def test() {
try {
shard_run_integration_aarch64_1_of_4('ARM-GRAVITON3-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_aarch64_1_of_4('ARM-GRAVITON3')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_aarch64_1_of_4('ARM-GRAVITON3')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'integration: aarch64 2 of 4': {
try {
shard_run_integration_aarch64_2_of_4('ARM-GRAVITON3-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_aarch64_2_of_4('ARM-GRAVITON3')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_aarch64_2_of_4('ARM-GRAVITON3')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'integration: aarch64 3 of 4': {
try {
shard_run_integration_aarch64_3_of_4('ARM-GRAVITON3-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_aarch64_3_of_4('ARM-GRAVITON3')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_aarch64_3_of_4('ARM-GRAVITON3')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'integration: aarch64 4 of 4': {
try {
shard_run_integration_aarch64_4_of_4('ARM-GRAVITON3-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_aarch64_4_of_4('ARM-GRAVITON3')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_aarch64_4_of_4('ARM-GRAVITON3')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
)
diff --git a/ci/jenkins/generated/cpu_jenkinsfile.groovy
b/ci/jenkins/generated/cpu_jenkinsfile.groovy
index 647ded7f26..b54fdf51ca 100644
--- a/ci/jenkins/generated/cpu_jenkinsfile.groovy
+++ b/ci/jenkins/generated/cpu_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-09T12:21:01.787826
+// Generated at 2025-02-15T10:14:10.181874
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
@@ -528,11 +535,17 @@ def build() {
try {
run_build('CPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('CPU')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('CPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
@@ -781,55 +794,85 @@ def test() {
try {
shard_run_integration_CPU_1_of_4('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_CPU_1_of_4('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_CPU_1_of_4('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'integration: CPU 2 of 4': {
try {
shard_run_integration_CPU_2_of_4('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_CPU_2_of_4('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_CPU_2_of_4('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'integration: CPU 3 of 4': {
try {
shard_run_integration_CPU_3_of_4('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_CPU_3_of_4('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_CPU_3_of_4('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'integration: CPU 4 of 4': {
try {
shard_run_integration_CPU_4_of_4('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_integration_CPU_4_of_4('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_integration_CPU_4_of_4('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'unittest: CPU 1 of 1': {
try {
shard_run_unittest_CPU_1_of_1('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_unittest_CPU_1_of_1('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_unittest_CPU_1_of_1('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
)
diff --git a/ci/jenkins/generated/docker_jenkinsfile.groovy
b/ci/jenkins/generated/docker_jenkinsfile.groovy
index b7947ab2bf..daad2188ff 100644
--- a/ci/jenkins/generated/docker_jenkinsfile.groovy
+++ b/ci/jenkins/generated/docker_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-09T12:21:01.715947
+// Generated at 2025-02-15T10:12:52.000152
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
diff --git a/ci/jenkins/generated/gpu_jenkinsfile.groovy
b/ci/jenkins/generated/gpu_jenkinsfile.groovy
index 3d3f3175c3..236447bdc2 100644
--- a/ci/jenkins/generated/gpu_jenkinsfile.groovy
+++ b/ci/jenkins/generated/gpu_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-15T09:43:05.709342
+// Generated at 2025-02-15T10:14:10.120180
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
@@ -529,11 +536,17 @@ def build() {
try {
run_build('CPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('CPU')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('CPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
@@ -703,33 +716,51 @@ def test() {
try {
shard_run_unittest_GPU_1_of_2('GPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_unittest_GPU_1_of_2('GPU')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_unittest_GPU_1_of_2('GPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'unittest: GPU 2 of 2': {
try {
shard_run_unittest_GPU_2_of_2('GPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_unittest_GPU_2_of_2('GPU')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_unittest_GPU_2_of_2('GPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'docs: GPU 1 of 1': {
try {
shard_run_docs_GPU_1_of_1('GPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_docs_GPU_1_of_1('GPU')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_docs_GPU_1_of_1('GPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
)
diff --git a/ci/jenkins/generated/hexagon_jenkinsfile.groovy
b/ci/jenkins/generated/hexagon_jenkinsfile.groovy
index 0155a7a843..da20f33bbb 100644
--- a/ci/jenkins/generated/hexagon_jenkinsfile.groovy
+++ b/ci/jenkins/generated/hexagon_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-09T12:21:01.760323
+// Generated at 2025-02-15T10:14:10.056677
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
@@ -527,11 +534,17 @@ def build() {
try {
run_build('CPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('CPU')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('CPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
@@ -920,88 +933,136 @@ def test() {
try {
shard_run_test_Hexagon_1_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_1_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_1_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 2 of 8': {
try {
shard_run_test_Hexagon_2_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_2_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_2_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 3 of 8': {
try {
shard_run_test_Hexagon_3_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_3_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_3_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 4 of 8': {
try {
shard_run_test_Hexagon_4_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_4_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_4_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 5 of 8': {
try {
shard_run_test_Hexagon_5_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_5_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_5_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 6 of 8': {
try {
shard_run_test_Hexagon_6_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_6_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_6_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 7 of 8': {
try {
shard_run_test_Hexagon_7_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_7_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_7_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'test: Hexagon 8 of 8': {
try {
shard_run_test_Hexagon_8_of_8('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_test_Hexagon_8_of_8('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_test_Hexagon_8_of_8('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
)
diff --git a/ci/jenkins/generated/i386_jenkinsfile.groovy
b/ci/jenkins/generated/i386_jenkinsfile.groovy
index 5651091936..993f1d3e83 100644
--- a/ci/jenkins/generated/i386_jenkinsfile.groovy
+++ b/ci/jenkins/generated/i386_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-09T12:21:01.734278
+// Generated at 2025-02-15T10:14:10.142167
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
@@ -523,11 +530,17 @@ def build() {
try {
run_build('CPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('CPU')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('CPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
@@ -689,33 +702,51 @@ def test() {
try {
shard_run_python_i386_1_of_3('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_python_i386_1_of_3('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_python_i386_1_of_3('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'python: i386 2 of 3': {
try {
shard_run_python_i386_2_of_3('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_python_i386_2_of_3('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_python_i386_2_of_3('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
'python: i386 3 of 3': {
try {
shard_run_python_i386_3_of_3('CPU-SMALL-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- shard_run_python_i386_3_of_3('CPU-SMALL')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ shard_run_python_i386_3_of_3('CPU-SMALL')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
)
diff --git a/ci/jenkins/generated/lint_jenkinsfile.groovy
b/ci/jenkins/generated/lint_jenkinsfile.groovy
index d85f6af857..a1750eb853 100644
--- a/ci/jenkins/generated/lint_jenkinsfile.groovy
+++ b/ci/jenkins/generated/lint_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-09T12:21:01.747933
+// Generated at 2025-02-15T10:12:51.981152
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
diff --git a/ci/jenkins/generated/wasm_jenkinsfile.groovy
b/ci/jenkins/generated/wasm_jenkinsfile.groovy
index a0cb13d558..407f4c8004 100644
--- a/ci/jenkins/generated/wasm_jenkinsfile.groovy
+++ b/ci/jenkins/generated/wasm_jenkinsfile.groovy
@@ -60,7 +60,7 @@
// 'python3 jenkins/generate.py'
// Note: This timestamp is here to ensure that updates to the Jenkinsfile are
// always rebased on main before merging:
-// Generated at 2025-02-09T12:21:01.801132
+// Generated at 2025-02-15T10:14:10.202706
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// These are set at runtime from data in ci/jenkins/docker-images.yml, update
@@ -279,6 +279,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
@@ -525,11 +532,17 @@ def build() {
try {
run_build('CPU-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('CPU')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('CPU')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
diff --git a/ci/jenkins/templates/utils/Prepare.groovy.j2
b/ci/jenkins/templates/utils/Prepare.groovy.j2
index 3f27b98861..68e6569d4e 100644
--- a/ci/jenkins/templates/utils/Prepare.groovy.j2
+++ b/ci/jenkins/templates/utils/Prepare.groovy.j2
@@ -155,6 +155,13 @@ def cancel_previous_build() {
}
}
+def is_last_build() {
+ // whether it is last build
+ def job = Jenkins.instance.getItem(env.JOB_NAME)
+ def lastBuild = job.getLastBuild()
+ return lastBuild.getNumber() == env.BUILD_NUMBER
+}
+
def checkout_trusted_files() {
// trust everything from branch builds
if (env.BRANCH_NAME == null || !env.BRANCH_NAME.startsWith('PR-')) {
diff --git a/ci/jenkins/templates/utils/macros.j2
b/ci/jenkins/templates/utils/macros.j2
index 81eeaa1fdf..ee90b043cc 100644
--- a/ci/jenkins/templates/utils/macros.j2
+++ b/ci/jenkins/templates/utils/macros.j2
@@ -96,11 +96,17 @@ def build() {
try {
run_build('{{ node }}-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- run_build('{{ node }}')
+ if (is_last_build()) {
+ // retry if we are currently at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ run_build('{{ node }}')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
}
}
@@ -119,11 +125,17 @@ def test() {
try {
{{ method_name }}('{{ node }}-SPOT')
} catch (Throwable ex) {
- // mark the current stage as success
- // and try again via on demand node
- echo 'Exception during SPOT run ' + ex.toString() + ' retry on-demand'
- currentBuild.result = 'SUCCESS'
- {{ method_name }}('{{ node }}')
+ if (is_last_build()) {
+ // retry if at last build
+ // mark the current stage as success
+ // and try again via on demand node
+ echo 'Exception during SPOT run ' + ex.toString() + ' retry
on-demand'
+ currentBuild.result = 'SUCCESS'
+ {{ method_name }}('{{ node }}')
+ } else {
+ echo 'Exception during SPOT run ' + ex.toString() + ' exit since it
is not last build'
+ throw ex
+ }
}
},
{% endfor %}