// -*- mode: groovy -*- // Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // Jenkins pipeline // See documents at https://jenkins.io/doc/book/pipeline/jenkinsfile/ // Docker env used for testing // Different image may have different version tag // because some of them are more stable than anoter. // // Docker images are maintained by PMC, cached in dockerhub // and remains relatively stable over the time. // Flow for upgrading docker env(need commiter) // // - Send PR to upgrade build script in the repo // - Build the new docker image // - Tag the docker image with a new version and push to a binary cache. // - Update the version in the Jenkinsfile, send a PR // - Fix any issues wrt to the new image version in the PR // - Merge the PR and now we are in new version // - Tag the new version as the lates // - Periodically cleanup the old versions on local workers // // ============================= IMPORTANT NOTE ============================= // 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 'utils/macros.j2' as m with context -%} // These are set at runtime from data in ci/jenkins/docker-images.yml, update // image tags in that file ci_gpu = '' ci_cpu = '' ci_minimal = '' ci_wasm = '' ci_cortexm = '' ci_arm = '' ci_riscv = '' // Parameters to allow overriding (in Jenkins UI), the images // to be used by a given build. When provided, they take precedence // over default values above. properties([ parameters([ {% for image in images %} string(name: '{{ image.name }}_param', defaultValue: ''), {% endfor %} ]) ]) // Placeholders for newly built Docker image names (if rebuild_docker_images // is used) {% for image in images %} built_{{ image.name }} = null; {% endfor %} // Global variable assigned during Sanity Check that holds the sha1 which should be // merged into the PR in all branches. upstream_revision = null // command to start a docker container docker_run = 'docker/bash.sh --env CI --env PLATFORM --env SKIP_SLOW_TESTS --env TEST_STEP_NAME' docker_build = 'docker/build.sh' // timeout in minutes max_time = 180 rebuild_docker_images = false s3_bucket = 'tvm-jenkins-artifacts-prod' s3_prefix = "tvm/${env.BRANCH_NAME}/${env.BUILD_NUMBER}" // Jenkins script root directory jenkins_scripts_root = "ci/scripts/jenkins" // General note: Jenkins has limits on the size of a method (or top level code) // that are pretty strict, so most usage of groovy methods in these templates // are purely to satisfy the JVM {% include "utils/Prepare.groovy.j2" %} {% include "utils/Build.groovy.j2" %} {% include "utils/Test.groovy.j2" %} cancel_previous_build() try { prepare('CPU-SMALL-SPOT') } catch(Exception ex) { prepare('CPU-SMALL') }