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

tlopex 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 d40f8bf2b0 [CI] Stop building ci_lint Docker image (#19872)
d40f8bf2b0 is described below

commit d40f8bf2b011ee6354c80004bcb25aacace6227c
Author: Shushi Hong <[email protected]>
AuthorDate: Tue Jun 23 21:34:13 2026 -0400

    [CI] Stop building ci_lint Docker image (#19872)
    
    This is the first step in retiring the unused `ci_lint` Docker image.
    
    This PR removes `ci_lint` from the generated Jenkins Docker image matrix
    so new Jenkinsfiles no longer resolve, build, or deploy that image. It
    also skips `ci_lint` in the nightly Docker image updater and teaches
    `git_change_docker.sh` to ignore the lint Docker files that will be
    removed later.
    
    The actual lint Docker files are intentionally kept in this PR for
    compatibility with the current Jenkins PR bootstrap path. Some PR Docker
    jobs may still run the main-branch pipeline while reading files from the
    PR checkout, and that older pipeline still passes `ci_lint` to
    `determine_docker_images.py` during prepare. Keeping the files and the
    temporary `docker-images.ini` entry avoids failing before the updated
    generated Jenkinsfiles take effect.
    
    A follow-up PR can delete `docker/Dockerfile.ci_lint`,
    `docker/install/ubuntu_install_clang_format.sh`, `docker/lint.sh`, and
    the README lint Docker example after this lands.
---
 ci/jenkins/generate.py                         |  1 -
 ci/jenkins/generated/arm_jenkinsfile.groovy    | 14 ++-------
 ci/jenkins/generated/cpu_jenkinsfile.groovy    | 14 ++-------
 ci/jenkins/generated/docker_jenkinsfile.groovy | 40 ++------------------------
 ci/jenkins/generated/gpu_jenkinsfile.groovy    | 14 ++-------
 ci/jenkins/generated/wasm_jenkinsfile.groovy   | 14 ++-------
 ci/jenkins/templates/utils/base.groovy.j2      |  1 -
 ci/scripts/jenkins/git_change_docker.sh        |  5 ++++
 ci/scripts/jenkins/open_docker_update_pr.py    |  4 +++
 tests/python/ci/test_ci.py                     |  8 +++---
 tests/scripts/ci.py                            | 28 +++++++++---------
 11 files changed, 37 insertions(+), 106 deletions(-)

diff --git a/ci/jenkins/generate.py b/ci/jenkins/generate.py
index fc6e09ab80..6a860f3f34 100644
--- a/ci/jenkins/generate.py
+++ b/ci/jenkins/generate.py
@@ -39,7 +39,6 @@ _IMAGE_PLATFORMS = {
     "ci_arm": "ARM",
     "ci_cpu": "CPU",
     "ci_gpu": "GPU",
-    "ci_lint": "CPU",
     "ci_wasm": "CPU",
 }
 
diff --git a/ci/jenkins/generated/arm_jenkinsfile.groovy 
b/ci/jenkins/generated/arm_jenkinsfile.groovy
index 99a13e85fc..d6826878bf 100644
--- a/ci/jenkins/generated/arm_jenkinsfile.groovy
+++ b/ci/jenkins/generated/arm_jenkinsfile.groovy
@@ -60,12 +60,11 @@
 // '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 2026-06-16T13:42:33.948016
+// Generated at 2026-06-23T03:28:14.520193
 
 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 // These are set at runtime from data in ci/jenkins/docker-images.yml, update
 // image tags in that file
-ci_lint = ''
 ci_gpu = ''
 ci_cpu = ''
 ci_minimal = ''
@@ -82,7 +81,6 @@ properties([
     string(name: 'ci_arm_param', defaultValue: ''),
     string(name: 'ci_cpu_param', defaultValue: ''),
     string(name: 'ci_gpu_param', defaultValue: ''),
-    string(name: 'ci_lint_param', defaultValue: ''),
     string(name: 'ci_wasm_param', defaultValue: ''),
   ])
 ])
@@ -92,7 +90,6 @@ properties([
   built_ci_arm = null;
   built_ci_cpu = null;
   built_ci_gpu = null;
-  built_ci_lint = null;
   built_ci_wasm = null;
 
 // Global variable assigned during Sanity Check that holds the sha1 which 
should be
@@ -347,7 +344,7 @@ def prepare(node_type) {
 
         if (env.DETERMINE_DOCKER_IMAGES == 'yes') {
           sh(
-            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_lint ci_wasm ",
+            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_wasm ",
             label: 'Decide whether to use tlcpack or tlcpackstaging for Docker 
images',
           )
           // Pull image names from the results of should_rebuild_docker.py
@@ -366,11 +363,6 @@ def prepare(node_type) {
             label: "Find docker image name for ci_gpu",
             returnStdout: true,
           ).trim()
-          ci_lint = sh(
-            script: "cat .docker-image-names/ci_lint",
-            label: "Find docker image name for ci_lint",
-            returnStdout: true,
-          ).trim()
           ci_wasm = sh(
             script: "cat .docker-image-names/ci_wasm",
             label: "Find docker image name for ci_wasm",
@@ -381,7 +373,6 @@ def prepare(node_type) {
         ci_arm = params.ci_arm_param ?: ci_arm
         ci_cpu = params.ci_cpu_param ?: ci_cpu
         ci_gpu = params.ci_gpu_param ?: ci_gpu
-        ci_lint = params.ci_lint_param ?: ci_lint
         ci_wasm = params.ci_wasm_param ?: ci_wasm
 
         sh (script: """
@@ -389,7 +380,6 @@ def prepare(node_type) {
           echo " ci_arm = ${ci_arm}"
           echo " ci_cpu = ${ci_cpu}"
           echo " ci_gpu = ${ci_gpu}"
-          echo " ci_lint = ${ci_lint}"
           echo " ci_wasm = ${ci_wasm}"
         """, label: 'Docker image names')
 
diff --git a/ci/jenkins/generated/cpu_jenkinsfile.groovy 
b/ci/jenkins/generated/cpu_jenkinsfile.groovy
index a65edd3f7d..879cd8b79f 100644
--- a/ci/jenkins/generated/cpu_jenkinsfile.groovy
+++ b/ci/jenkins/generated/cpu_jenkinsfile.groovy
@@ -60,12 +60,11 @@
 // '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 2026-06-16T13:42:33.935741
+// Generated at 2026-06-23T03:28:14.505504
 
 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 // These are set at runtime from data in ci/jenkins/docker-images.yml, update
 // image tags in that file
-ci_lint = ''
 ci_gpu = ''
 ci_cpu = ''
 ci_minimal = ''
@@ -82,7 +81,6 @@ properties([
     string(name: 'ci_arm_param', defaultValue: ''),
     string(name: 'ci_cpu_param', defaultValue: ''),
     string(name: 'ci_gpu_param', defaultValue: ''),
-    string(name: 'ci_lint_param', defaultValue: ''),
     string(name: 'ci_wasm_param', defaultValue: ''),
   ])
 ])
@@ -92,7 +90,6 @@ properties([
   built_ci_arm = null;
   built_ci_cpu = null;
   built_ci_gpu = null;
-  built_ci_lint = null;
   built_ci_wasm = null;
 
 // Global variable assigned during Sanity Check that holds the sha1 which 
should be
@@ -347,7 +344,7 @@ def prepare(node_type) {
 
         if (env.DETERMINE_DOCKER_IMAGES == 'yes') {
           sh(
-            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_lint ci_wasm ",
+            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_wasm ",
             label: 'Decide whether to use tlcpack or tlcpackstaging for Docker 
images',
           )
           // Pull image names from the results of should_rebuild_docker.py
@@ -366,11 +363,6 @@ def prepare(node_type) {
             label: "Find docker image name for ci_gpu",
             returnStdout: true,
           ).trim()
-          ci_lint = sh(
-            script: "cat .docker-image-names/ci_lint",
-            label: "Find docker image name for ci_lint",
-            returnStdout: true,
-          ).trim()
           ci_wasm = sh(
             script: "cat .docker-image-names/ci_wasm",
             label: "Find docker image name for ci_wasm",
@@ -381,7 +373,6 @@ def prepare(node_type) {
         ci_arm = params.ci_arm_param ?: ci_arm
         ci_cpu = params.ci_cpu_param ?: ci_cpu
         ci_gpu = params.ci_gpu_param ?: ci_gpu
-        ci_lint = params.ci_lint_param ?: ci_lint
         ci_wasm = params.ci_wasm_param ?: ci_wasm
 
         sh (script: """
@@ -389,7 +380,6 @@ def prepare(node_type) {
           echo " ci_arm = ${ci_arm}"
           echo " ci_cpu = ${ci_cpu}"
           echo " ci_gpu = ${ci_gpu}"
-          echo " ci_lint = ${ci_lint}"
           echo " ci_wasm = ${ci_wasm}"
         """, label: 'Docker image names')
 
diff --git a/ci/jenkins/generated/docker_jenkinsfile.groovy 
b/ci/jenkins/generated/docker_jenkinsfile.groovy
index 19b785fd2a..f5409e23aa 100644
--- a/ci/jenkins/generated/docker_jenkinsfile.groovy
+++ b/ci/jenkins/generated/docker_jenkinsfile.groovy
@@ -60,12 +60,11 @@
 // '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 2026-06-16T13:42:33.958277
+// Generated at 2026-06-23T03:28:14.487314
 
 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 // These are set at runtime from data in ci/jenkins/docker-images.yml, update
 // image tags in that file
-ci_lint = ''
 ci_gpu = ''
 ci_cpu = ''
 ci_minimal = ''
@@ -82,7 +81,6 @@ properties([
     string(name: 'ci_arm_param', defaultValue: ''),
     string(name: 'ci_cpu_param', defaultValue: ''),
     string(name: 'ci_gpu_param', defaultValue: ''),
-    string(name: 'ci_lint_param', defaultValue: ''),
     string(name: 'ci_wasm_param', defaultValue: ''),
   ])
 ])
@@ -92,7 +90,6 @@ properties([
   built_ci_arm = null;
   built_ci_cpu = null;
   built_ci_gpu = null;
-  built_ci_lint = null;
   built_ci_wasm = null;
 
 // Global variable assigned during Sanity Check that holds the sha1 which 
should be
@@ -347,7 +344,7 @@ def prepare(node_type) {
 
         if (env.DETERMINE_DOCKER_IMAGES == 'yes') {
           sh(
-            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_lint ci_wasm ",
+            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_wasm ",
             label: 'Decide whether to use tlcpack or tlcpackstaging for Docker 
images',
           )
           // Pull image names from the results of should_rebuild_docker.py
@@ -366,11 +363,6 @@ def prepare(node_type) {
             label: "Find docker image name for ci_gpu",
             returnStdout: true,
           ).trim()
-          ci_lint = sh(
-            script: "cat .docker-image-names/ci_lint",
-            label: "Find docker image name for ci_lint",
-            returnStdout: true,
-          ).trim()
           ci_wasm = sh(
             script: "cat .docker-image-names/ci_wasm",
             label: "Find docker image name for ci_wasm",
@@ -381,7 +373,6 @@ def prepare(node_type) {
         ci_arm = params.ci_arm_param ?: ci_arm
         ci_cpu = params.ci_cpu_param ?: ci_cpu
         ci_gpu = params.ci_gpu_param ?: ci_gpu
-        ci_lint = params.ci_lint_param ?: ci_lint
         ci_wasm = params.ci_wasm_param ?: ci_wasm
 
         sh (script: """
@@ -389,7 +380,6 @@ def prepare(node_type) {
           echo " ci_arm = ${ci_arm}"
           echo " ci_cpu = ${ci_cpu}"
           echo " ci_gpu = ${ci_gpu}"
-          echo " ci_lint = ${ci_lint}"
           echo " ci_wasm = ${ci_wasm}"
         """, label: 'Docker image names')
 
@@ -571,7 +561,6 @@ def deploy() {
                       update_docker(built_ci_arm, 
"tlcpackstaging/ci_arm:${tag}")
                       update_docker(built_ci_cpu, 
"tlcpackstaging/ci_cpu:${tag}")
                       update_docker(built_ci_gpu, 
"tlcpackstaging/ci_gpu:${tag}")
-                      update_docker(built_ci_lint, 
"tlcpackstaging/ci_lint:${tag}")
                       update_docker(built_ci_wasm, 
"tlcpackstaging/ci_wasm:${tag}")
                     } finally {
                       sh(
@@ -643,20 +632,6 @@ def deploy() {
                             label: 'Tag tlcpackstaging/ci_gpu image to 
tlcpack',
                           )
                         }
-                        if (ci_lint.contains("tlcpackstaging")) {
-                          // Push image to tlcpack
-                          def tag = ci_lint.split(":")[1]
-                          sh(
-                            script: """
-                              set -eux
-                              . ${jenkins_scripts_root}/retry.sh
-                              docker pull tlcpackstaging/ci_lint:${tag}
-                              docker tag tlcpackstaging/ci_lint:${tag} 
tlcpack/ci-lint:${tag}
-                              retry 5 docker push tlcpack/ci-lint:${tag}
-                            """,
-                            label: 'Tag tlcpackstaging/ci_lint image to 
tlcpack',
-                          )
-                        }
                         if (ci_wasm.contains("tlcpackstaging")) {
                           // Push image to tlcpack
                           def tag = ci_wasm.split(":")[1]
@@ -728,17 +703,6 @@ if (rebuild_docker_images) {
           }
         }
       },
-      'ci_lint': {
-        node('CPU') {
-          timeout(time: max_time, unit: 'MINUTES') {
-            init_git()
-            // We're purposefully not setting the built image here since they
-            // are not yet being uploaded to tlcpack
-            // ci_lint = build_image('ci_lint')
-            built_ci_lint = build_image('ci_lint');
-          }
-        }
-      },
       'ci_wasm': {
         node('CPU') {
           timeout(time: max_time, unit: 'MINUTES') {
diff --git a/ci/jenkins/generated/gpu_jenkinsfile.groovy 
b/ci/jenkins/generated/gpu_jenkinsfile.groovy
index 8c04f811db..28c9a6040e 100644
--- a/ci/jenkins/generated/gpu_jenkinsfile.groovy
+++ b/ci/jenkins/generated/gpu_jenkinsfile.groovy
@@ -60,12 +60,11 @@
 // '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 2026-06-16T13:42:33.970141
+// Generated at 2026-06-23T03:28:14.533751
 
 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 // These are set at runtime from data in ci/jenkins/docker-images.yml, update
 // image tags in that file
-ci_lint = ''
 ci_gpu = ''
 ci_cpu = ''
 ci_minimal = ''
@@ -82,7 +81,6 @@ properties([
     string(name: 'ci_arm_param', defaultValue: ''),
     string(name: 'ci_cpu_param', defaultValue: ''),
     string(name: 'ci_gpu_param', defaultValue: ''),
-    string(name: 'ci_lint_param', defaultValue: ''),
     string(name: 'ci_wasm_param', defaultValue: ''),
   ])
 ])
@@ -92,7 +90,6 @@ properties([
   built_ci_arm = null;
   built_ci_cpu = null;
   built_ci_gpu = null;
-  built_ci_lint = null;
   built_ci_wasm = null;
 
 // Global variable assigned during Sanity Check that holds the sha1 which 
should be
@@ -347,7 +344,7 @@ def prepare(node_type) {
 
         if (env.DETERMINE_DOCKER_IMAGES == 'yes') {
           sh(
-            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_lint ci_wasm ",
+            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_wasm ",
             label: 'Decide whether to use tlcpack or tlcpackstaging for Docker 
images',
           )
           // Pull image names from the results of should_rebuild_docker.py
@@ -366,11 +363,6 @@ def prepare(node_type) {
             label: "Find docker image name for ci_gpu",
             returnStdout: true,
           ).trim()
-          ci_lint = sh(
-            script: "cat .docker-image-names/ci_lint",
-            label: "Find docker image name for ci_lint",
-            returnStdout: true,
-          ).trim()
           ci_wasm = sh(
             script: "cat .docker-image-names/ci_wasm",
             label: "Find docker image name for ci_wasm",
@@ -381,7 +373,6 @@ def prepare(node_type) {
         ci_arm = params.ci_arm_param ?: ci_arm
         ci_cpu = params.ci_cpu_param ?: ci_cpu
         ci_gpu = params.ci_gpu_param ?: ci_gpu
-        ci_lint = params.ci_lint_param ?: ci_lint
         ci_wasm = params.ci_wasm_param ?: ci_wasm
 
         sh (script: """
@@ -389,7 +380,6 @@ def prepare(node_type) {
           echo " ci_arm = ${ci_arm}"
           echo " ci_cpu = ${ci_cpu}"
           echo " ci_gpu = ${ci_gpu}"
-          echo " ci_lint = ${ci_lint}"
           echo " ci_wasm = ${ci_wasm}"
         """, label: 'Docker image names')
 
diff --git a/ci/jenkins/generated/wasm_jenkinsfile.groovy 
b/ci/jenkins/generated/wasm_jenkinsfile.groovy
index c7ab9a2cc9..ab64444e4a 100644
--- a/ci/jenkins/generated/wasm_jenkinsfile.groovy
+++ b/ci/jenkins/generated/wasm_jenkinsfile.groovy
@@ -60,12 +60,11 @@
 // '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 2026-06-16T13:42:33.982453
+// Generated at 2026-06-23T03:28:14.550555
 
 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 // These are set at runtime from data in ci/jenkins/docker-images.yml, update
 // image tags in that file
-ci_lint = ''
 ci_gpu = ''
 ci_cpu = ''
 ci_minimal = ''
@@ -82,7 +81,6 @@ properties([
     string(name: 'ci_arm_param', defaultValue: ''),
     string(name: 'ci_cpu_param', defaultValue: ''),
     string(name: 'ci_gpu_param', defaultValue: ''),
-    string(name: 'ci_lint_param', defaultValue: ''),
     string(name: 'ci_wasm_param', defaultValue: ''),
   ])
 ])
@@ -92,7 +90,6 @@ properties([
   built_ci_arm = null;
   built_ci_cpu = null;
   built_ci_gpu = null;
-  built_ci_lint = null;
   built_ci_wasm = null;
 
 // Global variable assigned during Sanity Check that holds the sha1 which 
should be
@@ -347,7 +344,7 @@ def prepare(node_type) {
 
         if (env.DETERMINE_DOCKER_IMAGES == 'yes') {
           sh(
-            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_lint ci_wasm ",
+            script: "./${jenkins_scripts_root}/determine_docker_images.py 
ci_arm ci_cpu ci_gpu ci_wasm ",
             label: 'Decide whether to use tlcpack or tlcpackstaging for Docker 
images',
           )
           // Pull image names from the results of should_rebuild_docker.py
@@ -366,11 +363,6 @@ def prepare(node_type) {
             label: "Find docker image name for ci_gpu",
             returnStdout: true,
           ).trim()
-          ci_lint = sh(
-            script: "cat .docker-image-names/ci_lint",
-            label: "Find docker image name for ci_lint",
-            returnStdout: true,
-          ).trim()
           ci_wasm = sh(
             script: "cat .docker-image-names/ci_wasm",
             label: "Find docker image name for ci_wasm",
@@ -381,7 +373,6 @@ def prepare(node_type) {
         ci_arm = params.ci_arm_param ?: ci_arm
         ci_cpu = params.ci_cpu_param ?: ci_cpu
         ci_gpu = params.ci_gpu_param ?: ci_gpu
-        ci_lint = params.ci_lint_param ?: ci_lint
         ci_wasm = params.ci_wasm_param ?: ci_wasm
 
         sh (script: """
@@ -389,7 +380,6 @@ def prepare(node_type) {
           echo " ci_arm = ${ci_arm}"
           echo " ci_cpu = ${ci_cpu}"
           echo " ci_gpu = ${ci_gpu}"
-          echo " ci_lint = ${ci_lint}"
           echo " ci_wasm = ${ci_wasm}"
         """, label: 'Docker image names')
 
diff --git a/ci/jenkins/templates/utils/base.groovy.j2 
b/ci/jenkins/templates/utils/base.groovy.j2
index 38c56bc9fb..813ceee886 100644
--- a/ci/jenkins/templates/utils/base.groovy.j2
+++ b/ci/jenkins/templates/utils/base.groovy.j2
@@ -52,7 +52,6 @@ import org.jenkinsci.plugins.pipeline.modeldefinition.Utils
 
 // These are set at runtime from data in ci/jenkins/docker-images.yml, update
 // image tags in that file
-ci_lint = ''
 ci_gpu = ''
 ci_cpu = ''
 ci_minimal = ''
diff --git a/ci/scripts/jenkins/git_change_docker.sh 
b/ci/scripts/jenkins/git_change_docker.sh
index f2c5fc726e..758ccfdf6e 100755
--- a/ci/scripts/jenkins/git_change_docker.sh
+++ b/ci/scripts/jenkins/git_change_docker.sh
@@ -28,6 +28,11 @@ fi
 FILES_THAT_SHOULDNT_TRIGGER_REBUILDS=(
     "docker/bash.sh"
     "docker/with_the_same_user"
+    "docker/README.md"
+    "docker/Dockerfile.ci_lint"
+    "docker/install/ubuntu_install_clang_format.sh"
+    "docker/lint.sh"
+    "docker/clear-stale-images.sh"
     "README.md"
     "lint.sh"
     "clear-stale-images.sh"
diff --git a/ci/scripts/jenkins/open_docker_update_pr.py 
b/ci/scripts/jenkins/open_docker_update_pr.py
index 0172fe0221..e66272c980 100755
--- a/ci/scripts/jenkins/open_docker_update_pr.py
+++ b/ci/scripts/jenkins/open_docker_update_pr.py
@@ -37,6 +37,7 @@ IMAGES_FILE = JENKINS_DIR / "docker-images.ini"
 GENERATE_SCRIPT = JENKINS_DIR / "generate.py"
 GITHUB_TOKEN = os.environ["GITHUB_TOKEN"]
 BRANCH = "nightly-docker-update"
+RETIRED_IMAGES = {"ci_lint"}
 
 
 def _testing_docker_api(data: dict[str, Any]) -> Callable[[str], dict[str, 
Any]]:
@@ -143,6 +144,9 @@ if __name__ == "__main__":
     for key in config.options("jenkins"):
         if key == "ci_tag":
             continue
+        if key in RETIRED_IMAGES:
+            logging.info(f"Skipping retired image {key}")
+            continue
         image_spec = config.get("jenkins", key)
         logging.info(f"Found {key} = {image_spec}")
         new_image = latest_tlcpackstaging_image(image_spec)
diff --git a/tests/python/ci/test_ci.py b/tests/python/ci/test_ci.py
index 4ff8be49d2..178a67d6f6 100644
--- a/tests/python/ci/test_ci.py
+++ b/tests/python/ci/test_ci.py
@@ -1270,10 +1270,10 @@ def test_open_docker_update_pr(
 
 @parameterize_named(
     use_tlcpack=dict(
-        images=["ci_arm", "ci_lint"],
+        images=["ci_arm", "ci_cpu"],
         expected={
             "ci_arm": "tlcpack/ci-arm:abc-abc-123",
-            "ci_lint": "tlcpack/ci-lint:abc-abc-234",
+            "ci_cpu": "tlcpack/ci-cpu:abc-abc-234",
         },
     ),
     use_staging=dict(
@@ -1291,12 +1291,12 @@ def test_determine_docker_images(tmpdir_factory, 
images, expected):
 
     docker_data = {
         "repositories/tlcpack/ci-arm/tags/abc-abc-123": {},
-        "repositories/tlcpack/ci-lint/tags/abc-abc-234": {},
+        "repositories/tlcpack/ci-cpu/tags/abc-abc-234": {},
     }
 
     images_data = {
         "ci_arm": "tlcpack/ci-arm:abc-abc-123",
-        "ci_lint": "tlcpack/ci-lint:abc-abc-234",
+        "ci_cpu": "tlcpack/ci-cpu:abc-abc-234",
         "ci_arm2": "tlcpack/ci-arm2:abc-abc-123",
     }
 
diff --git a/tests/scripts/ci.py b/tests/scripts/ci.py
index eb118ee1c3..bea70e0b52 100755
--- a/tests/scripts/ci.py
+++ b/tests/scripts/ci.py
@@ -167,7 +167,6 @@ def docker(
 
     # As sccache is added to these images these can be uncommented
     sccache_images = {
-        # "ci_lint",
         "ci_gpu",
         "ci_cpu",
         # "ci_wasm",
@@ -333,25 +332,26 @@ def serve_docs(directory: str = "_docs") -> None:
     cmd([sys.executable, "-m", "http.server"], cwd=directory_path)
 
 
-def lint(interactive: bool = False, fix: bool = False, docker_image: str | 
None = None) -> None:
+def lint(interactive: bool = False, docker_image: str | None = None) -> None:
     """
-    Run CI's Sanity Check step
+    Run lint checks locally.
 
     arguments:
-    interactive -- start a shell after running build / test scripts
-    fix -- where possible (currently black and clang-format) edit files in 
place with formatting fixes
-    docker-image -- manually specify the docker image to use
+    interactive -- start a shell after running build / test scripts when using 
--docker-image
+    docker-image -- manually specify a docker image to use
     """
-    env = {}
-    if fix:
-        env["IS_LOCAL"] = "true"
-        env["INPLACE_FORMAT"] = "true"
+    scripts = ["pre-commit run --all-files"]
+    if docker_image is None:
+        if interactive:
+            clean_exit("--interactive requires --docker-image")
+        cmd(scripts[0].split())
+        return
 
     docker(
-        name=gen_name("ci-lint"),
-        image="ci_lint" if docker_image is None else docker_image,
-        scripts=["pre-commit run --all-files"],
-        env=env,
+        name=gen_name("lint"),
+        image=docker_image,
+        scripts=scripts,
+        env={},
         interactive=interactive,
     )
 

Reply via email to