This is an automated email from the ASF dual-hosted git repository.
areusch pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/tvm.git
The following commit(s) were added to refs/heads/main by this push:
new e09e9398e7 [ci] Add a tag to generated Jenkinsfile (#10825)
e09e9398e7 is described below
commit e09e9398e7e6c964326c298681afd9e1cfc39e82
Author: driazati <[email protected]>
AuthorDate: Wed Apr 6 11:00:49 2022 -0700
[ci] Add a tag to generated Jenkinsfile (#10825)
This adds a timestamp to the generated Jenkinsfile that is ignored when
`--check`-ing. This line should generate merge conflicts for updates that would
not pass `--check` in CI on main, so PRs will need to be rebased and the
Jenkinsfile regenerated.
Co-authored-by: driazati <[email protected]>
---
Jenkinsfile | 22 ++++++++++++++++++++++
jenkins/Jenkinsfile.j2 | 22 ++++++++++++++++++++++
jenkins/generate.py | 15 +++++++++++++--
3 files changed, 57 insertions(+), 2 deletions(-)
diff --git a/Jenkinsfile b/Jenkinsfile
index f685be9fdd..34835397e3 100755
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -43,6 +43,9 @@
// This file is generated by 'jenkins/generate.py'. Do not edit this file
directly!
// Make edits to 'jenkins/Jenkinsfile.j2' and regenerate this with
// '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 2022-03-30T11:40:52.107833
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
// NOTE: these lines are scanned by docker/dev_common.sh. Please update the
regex as needed. -->
@@ -82,6 +85,7 @@ tvm_multilib = 'build/libtvm.so, ' +
tvm_multilib_tsim = 'build/libvta_tsim.so, ' +
tvm_multilib
+upstream_revision = null
// command to start a docker container
docker_run = 'docker/bash.sh'
@@ -102,6 +106,24 @@ def init_git() {
script: './tests/scripts/task_show_node_info.sh',
label: 'Show executor node info',
)
+
+ // Determine merge commit to use for all stages
+ sh(
+ script: 'git fetch origin main',
+ label: 'Fetch upstream',
+ )
+ if (upstream_revision == null) {
+ upstream_revision = sh(
+ script: 'git log -1 FETCH_HEAD --format=\'%H\'',
+ label: 'Determine upstream revision',
+ returnStdout: true,
+ ).trim()
+ }
+ sh (
+ script: "git merge ${upstream_revision}",
+ label: 'Merge to origin/main'
+ )
+
retry(5) {
timeout(time: 2, unit: 'MINUTES') {
sh (script: 'git submodule update --init -f', label: 'Update git
submodules')
diff --git a/jenkins/Jenkinsfile.j2 b/jenkins/Jenkinsfile.j2
index 016432e2c5..b77befe474 100644
--- a/jenkins/Jenkinsfile.j2
+++ b/jenkins/Jenkinsfile.j2
@@ -43,6 +43,9 @@
// This file is generated by 'jenkins/generate.py'. Do not edit this file
directly!
// Make edits to 'jenkins/Jenkinsfile.j2' and regenerate this with
// '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 {{ generated_time }}
import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
{% import 'jenkins/macros.j2' as m with context -%}
@@ -79,6 +82,7 @@ tvm_multilib = 'build/libtvm.so, ' +
tvm_multilib_tsim = 'build/libvta_tsim.so, ' +
tvm_multilib
+upstream_revision = null
// command to start a docker container
docker_run = 'docker/bash.sh'
@@ -99,6 +103,24 @@ def init_git() {
script: './tests/scripts/task_show_node_info.sh',
label: 'Show executor node info',
)
+
+ // Determine merge commit to use for all stages
+ sh(
+ script: 'git fetch origin main',
+ label: 'Fetch upstream',
+ )
+ if (upstream_revision == null) {
+ upstream_revision = sh(
+ script: 'git log -1 FETCH_HEAD --format=\'%H\'',
+ label: 'Determine upstream revision',
+ returnStdout: true,
+ ).trim()
+ }
+ sh (
+ script: "git merge ${upstream_revision}",
+ label: 'Merge to origin/main'
+ )
+
retry(5) {
timeout(time: 2, unit: 'MINUTES') {
sh (script: 'git submodule update --init -f', label: 'Update git
submodules')
diff --git a/jenkins/generate.py b/jenkins/generate.py
index 95985b73dc..ba7f165925 100644
--- a/jenkins/generate.py
+++ b/jenkins/generate.py
@@ -17,10 +17,13 @@
# under the License.
import jinja2
import argparse
-from pathlib import Path
import difflib
+import re
+import datetime
import textwrap
+from pathlib import Path
+
REPO_ROOT = Path(__file__).resolve().parent.parent
JENKINSFILE_TEMPLATE = REPO_ROOT / "jenkins" / "Jenkinsfile.j2"
@@ -65,6 +68,12 @@ data = {
}
+def lines_without_generated_tag(content):
+ return [
+ line for line in content.splitlines(keepends=True) if not
line.startswith("// Generated at")
+ ]
+
+
if __name__ == "__main__":
help = "Regenerate Jenkinsfile from template"
parser = argparse.ArgumentParser(description=help)
@@ -74,6 +83,8 @@ if __name__ == "__main__":
with open(JENKINSFILE) as f:
content = f.read()
+ data["generated_time"] = datetime.datetime.now().isoformat()
+
environment = jinja2.Environment(
loader=jinja2.FileSystemLoader(REPO_ROOT),
undefined=jinja2.StrictUndefined,
@@ -86,7 +97,7 @@ if __name__ == "__main__":
diff = "".join(
difflib.unified_diff(
- content.splitlines(keepends=True),
new_content.splitlines(keepends=True)
+ lines_without_generated_tag(content),
lines_without_generated_tag(new_content)
)
)
if args.check: