You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tvm.apache.org by ar...@apache.org on 2022/05/17 23:51:48 UTC

[tvm] branch areusch/freeze-dependencies updated: escape image name

This is an automated email from the ASF dual-hosted git repository.

areusch pushed a commit to branch areusch/freeze-dependencies
in repository https://gitbox.apache.org/repos/asf/tvm.git


The following commit(s) were added to refs/heads/areusch/freeze-dependencies by this push:
     new f796b33f67 escape image name
f796b33f67 is described below

commit f796b33f676894212dc04306bcf3ff8fd41f475a
Author: Andrew Reusch <ar...@gmail.com>
AuthorDate: Tue May 17 16:51:35 2022 -0700

    escape image name
---
 Jenkinsfile            |  8 ++++++--
 docker/build.sh        | 12 +++++-------
 jenkins/Jenkinsfile.j2 |  6 +++++-
 3 files changed, 16 insertions(+), 10 deletions(-)

diff --git a/Jenkinsfile b/Jenkinsfile
index 674b6f8512..5d62367650 100755
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -45,7 +45,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 2022-05-17T13:48:28.023057
+// Generated at 2022-05-17T16:51:28.353553
 
 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 // NOTE: these lines are scanned by docker/dev_common.sh. Please update the regex as needed. -->
@@ -379,7 +379,11 @@ def build_image(image_name) {
     returnStdout: true,
     script: 'git log -1 --format=\'%h\''
   ).trim()
-  def full_name = "${image_name}:${env.BRANCH_NAME}-${hash}-${env.BUILD_NUMBER}"
+  def full_name = sh(
+    returnStdout: true,
+    script: "echo -n '${image_name}:${env.BRANCH_NAME}-${hash}-${env.BUILD_NUMBER}' | python3 -c 'import sys; import urllib.parse; print(urllib.parse.quote(sys.stdin.read(), safe=\"\").lower())' | tr % -",
+    label: 'Compute image name',
+  )
   unpack_lib("python-lockfiles", "docker/python/build/**")
   sh(
     script: "${docker_build} ${image_name} --spec ${full_name}",
diff --git a/docker/build.sh b/docker/build.sh
index ee09c5a01e..76534fa2df 100755
--- a/docker/build.sh
+++ b/docker/build.sh
@@ -166,27 +166,25 @@ function upsearch () {
 # commas (,) and equal signs (=), which are not valid inside docker image names.
 # Convert to all lower-case, as per requirement of Docker image names
 function sanitize_docker_name() {
-    echo "$@" | sed -e 's/=/_/g' -e 's/,/-/g' -e 's/\//-/g' | tr '[:upper:]' '[:lower:]'
+    echo -n "$@" | python3 -c 'import sys; import urllib.parse; print(urllib.parse.quote(sys.stdin.read(), safe="").lower())' | tr % -
 }
 
 # Set up WORKSPACE and BUILD_TAG. Jenkins will set them for you or we pick
 # reasonable defaults if you run it outside of Jenkins.
 WORKSPACE="${WORKSPACE:-${SCRIPT_DIR}/../}"
-BUILD_TAG=$(echo "${BUILD_TAG:-tvm}" | sed 's/-/--/g' | sed 's/%/-/g')
+BUILD_TAG=$(sanitize_docker_name "${BUILD_TAG:-tvm}")
 
 # Determine the docker image name
-DOCKER_IMG_NAME=$(echo "${BUILD_TAG}.${CONTAINER_TYPE}" | sanitize_docker_name)
-DOCKER_IMAGE_TAG=$(echo "${DOCKER_IMAGE_TAG:-latest}" | sanitize_docker_name)
+DOCKER_IMG_NAME=${BUILD_TAG}.$(sanitize_docker_name "${CONTAINER_TYPE}")
+DOCKER_IMAGE_TAG=$(sanitize_docker_name "${DOCKER_IMAGE_TAG:-latest}")
 
 # Compose the full image spec with "name:tag" e.g. "tvm.ci_cpu:v0.03"
 DOCKER_IMG_SPEC="${DOCKER_IMG_NAME}:${DOCKER_IMAGE_TAG}"
 
 if [[ -n ${OVERRIDE_IMAGE_SPEC+x} ]]; then
-    DOCKER_IMG_SPEC=$(echo "$OVERRIDE_IMAGE_SPEC" | sanitize_docker_name)
+    DOCKER_IMG_SPEC="${OVERRIDE_IMAGE_SPEC}" #$(sanitize_docker_name "$OVERRIDE_IMAGE_SPEC")
 fi
 
-DOCKER_IMG_SPEC=
-
 # Print arguments.
 echo "WORKSPACE: ${WORKSPACE}"
 echo "CI_DOCKER_EXTRA_PARAMS: ${CI_DOCKER_EXTRA_PARAMS[@]}"
diff --git a/jenkins/Jenkinsfile.j2 b/jenkins/Jenkinsfile.j2
index c66ed42de0..a8f4a0f9c6 100644
--- a/jenkins/Jenkinsfile.j2
+++ b/jenkins/Jenkinsfile.j2
@@ -296,7 +296,11 @@ def build_image(image_name) {
     returnStdout: true,
     script: 'git log -1 --format=\'%h\''
   ).trim()
-  def full_name = "${image_name}:${env.BRANCH_NAME}-${hash}-${env.BUILD_NUMBER}"
+  def full_name = sh(
+    returnStdout: true,
+    script: "echo -n '${image_name}:${env.BRANCH_NAME}-${hash}-${env.BUILD_NUMBER}' | python3 -c 'import sys; import urllib.parse; print(urllib.parse.quote(sys.stdin.read(), safe=\"\").lower())' | tr % -",
+    label: 'Compute image name',
+  )
   unpack_lib("python-lockfiles", "docker/python/build/**")
   sh(
     script: "${docker_build} ${image_name} --spec ${full_name}",