From bd260eef9dbc5c0b0302af2ea6822eccc6131dea Mon Sep 17 00:00:00 2001 From: driazati Date: Wed, 9 Nov 2022 12:43:19 -0800 Subject: [PATCH 1/2] [ci] Split out C++ unittests This makes C++ unittests follow the normal flow of build -> upload artifacts -> download and run tests. To simplify the changes there is a new utility for interacting with S3. --- Jenkinsfile | 1479 ++++------------- ci/jenkins/Build.groovy.j2 | 123 +- ci/jenkins/Jenkinsfile.j2 | 6 +- ci/jenkins/Test.groovy.j2 | 47 +- ci/jenkins/macros.j2 | 40 +- ci/scripts/jenkins/s3.py | 108 ++ ...{task_ci_setup.sh => task_clear_pytest.sh} | 17 - tests/scripts/task_cpp_unittest.sh | 27 +- tests/scripts/task_microtvm_cpp_tests.sh | 44 + 9 files changed, 579 insertions(+), 1312 deletions(-) create mode 100755 ci/scripts/jenkins/s3.py rename tests/scripts/{task_ci_setup.sh => task_clear_pytest.sh} (58%) create mode 100755 tests/scripts/task_microtvm_cpp_tests.sh diff --git a/Jenkinsfile b/Jenkinsfile index 9fd926430b6a..7eab3e74d94c 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-11-14T12:32:18.663464 +// Generated at 2022-11-15T16:25:54.047844 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils // NOTE: these lines are scanned by docker/dev_common.sh. Please update the regex as needed. --> @@ -104,7 +104,8 @@ max_time = 180 rebuild_docker_images = false // Filenames for stashing between build and test steps -s3_prefix = "tvm-jenkins-artifacts-prod/tvm/${env.BRANCH_NAME}/${env.BUILD_NUMBER}" +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" @@ -672,8 +673,8 @@ def lint() { } def ci_setup(image) { sh ( - script: "${docker_run} ${image} ./tests/scripts/task_ci_setup.sh", - label: 'Set up CI environment', + script: "${docker_run} ${image} ./tests/scripts/task_clear_pytest.sh", + label: 'Clean up old workspace', ) } @@ -691,17 +692,40 @@ def fsim_test(image) { ) } -def cmake_build(image, path, make_flag) { +def make_standalone_crt(image, build_dir) { sh ( - script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_build.py --sccache-bucket tvm-sccache-prod", - label: 'Run cmake build', + script: """ + set -eux + ${docker_run} ${image} python3 ./tests/scripts/task_build.py \ + --sccache-bucket tvm-sccache-prod \ + --cmake-target standalone_crt \ + --build-dir build + ${docker_run} ${image} python3 ./tests/scripts/task_build.py \ + --sccache-bucket tvm-sccache-prod \ + --cmake-target crttest \ + --build-dir build + """, + label: 'Make standalone CRT', ) } -def cpp_unittest(image) { +def make_cpp_tests(image, build_dir) { sh ( - script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_cpp_unittest.sh", - label: 'Build and run C++ tests', + script: """ + set -eux + ${docker_run} ${image} python3 ./tests/scripts/task_build.py \ + --sccache-bucket tvm-sccache-prod \ + --cmake-target cpptest \ + --build-dir ${build_dir} + """, + label: 'Make C++ tests', + ) +} + +def cmake_build(image, path, make_flag) { + sh ( + script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_build.py --sccache-bucket tvm-sccache-prod", + label: 'Run cmake build', ) } @@ -719,26 +743,11 @@ def add_hexagon_permissions() { ) } -// Run make. First try to do an incremental make from a previous workspace in hope to -// accelerate the compilation. If something is wrong, clean the workspace and then -// build from scratch. -def make(docker_type, path, make_flag) { - timeout(time: max_time, unit: 'MINUTES') { - try { - cmake_build(docker_type, path, make_flag) - } catch (hudson.AbortException ae) { - // script exited due to user abort, directly throw instead of retry - if (ae.getMessage().contains('script returned exit code 143')) { - throw ae - } - echo 'Incremental compilation failed. Fall back to build from scratch' - sh ( - script: "${docker_run} ${docker_type} ./tests/scripts/task_clean.sh ${path}", - label: 'Clear old cmake workspace', - ) - cmake_build(docker_type, path, make_flag) - } - } +def add_crttest_permissions() { + sh( + script: 'chmod +x build/crttest', + label: 'Add execute permissions for crttest', + ) } @@ -757,41 +766,21 @@ stage('Build') { docker_init(ci_gpu) timeout(time: max_time, unit: 'MINUTES') { sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu.sh build" - make("${ci_gpu} --no-gpu", 'build', '-j2') + cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') + make_standalone_crt("${ci_gpu} --no-gpu", 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/gpu/build/libtvm.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress build/libvta_fsim.so s3://${s3_prefix}/gpu/build/libvta_fsim.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/gpu/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/gpu/build/config.cmake - retry 3 aws s3 cp --no-progress build/microtvm_template_projects s3://${s3_prefix}/gpu/build/microtvm_template_projects --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/crttest build/standalone_crt", label: 'Upload artifacts to S3', ) // compiler test - sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build2" - make("${ci_gpu} --no-gpu", 'build2', '-j2') + sh "rm -rf build" + sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build" + cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') + make_standalone_crt("${ci_gpu} --no-gpu", 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/gpu2/build/libtvm.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress build/libvta_fsim.so s3://${s3_prefix}/gpu2/build/libvta_fsim.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/gpu2/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/gpu2/build/config.cmake - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu2 --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt", label: 'Upload artifacts to S3', ) } @@ -813,22 +802,11 @@ stage('Build') { script: "${docker_run} ${ci_cpu} ./tests/scripts/task_config_build_cpu.sh build", label: 'Create CPU cmake config', ) - make(ci_cpu, 'build', '-j2') + cmake_build(ci_cpu, 'build', '-j2') + make_standalone_crt(ci_cpu, 'build') + make_cpp_tests(ci_cpu, 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress build/libvta_tsim.so s3://${s3_prefix}/cpu/build/libvta_tsim.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/cpu/build/libtvm.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress build/libvta_fsim.so s3://${s3_prefix}/cpu/build/libvta_fsim.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/cpu/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/cpu/build/config.cmake - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/crttest build/cpptest build/standalone_crt", label: 'Upload artifacts to S3', ) @@ -855,18 +833,10 @@ stage('Build') { script: "${docker_run} ${ci_minimal} ./tests/scripts/task_config_build_minimal.sh build", label: 'Create CPU minimal cmake config', ) - make(ci_minimal, 'build', '-j2') + cmake_build(ci_minimal, 'build', '-j2') + make_cpp_tests(ci_minimal, 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/cpu-minimal/build/libtvm.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/cpu-minimal/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/cpu-minimal/build/config.cmake - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu-minimal --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest", label: 'Upload artifacts to S3', ) } @@ -888,7 +858,9 @@ stage('Build') { script: "${docker_run} ${ci_wasm} ./tests/scripts/task_config_build_wasm.sh build", label: 'Create WASM cmake config', ) - make(ci_wasm, 'build', '-j2') + cmake_build(ci_wasm, 'build', '-j2') + make_standalone_crt(ci_wasm, 'build') + make_cpp_tests(ci_wasm, 'build') cpp_unittest(ci_wasm) ci_setup(ci_wasm) sh ( @@ -914,22 +886,11 @@ stage('Build') { script: "${docker_run} ${ci_i386} ./tests/scripts/task_config_build_i386.sh build", label: 'Create i386 cmake config', ) - make(ci_i386, 'build', '-j2') + cmake_build(ci_i386, 'build', '-j2') + make_standalone_crt(ci_i386, 'build') + make_cpp_tests(ci_i386, 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress build/libvta_tsim.so s3://${s3_prefix}/i386/build/libvta_tsim.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/i386/build/libtvm.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress build/libvta_fsim.so s3://${s3_prefix}/i386/build/libvta_fsim.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/i386/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/i386/build/config.cmake - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", label: 'Upload artifacts to S3', ) } @@ -951,20 +912,11 @@ stage('Build') { script: "${docker_run} ${ci_arm} ./tests/scripts/task_config_build_arm.sh build", label: 'Create ARM cmake config', ) - make(ci_arm, 'build', '-j4') + cmake_build(ci_arm, 'build', '-j4') + make_standalone_crt(ci_arm, 'build') + make_cpp_tests(ci_arm, 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/arm/build/libtvm.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress build/libvta_fsim.so s3://${s3_prefix}/arm/build/libvta_fsim.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/arm/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/arm/build/config.cmake - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest build/standalone_crt", label: 'Upload artifacts to S3', ) } @@ -986,19 +938,11 @@ stage('Build') { script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_config_build_cortexm.sh build", label: 'Create Cortex-M cmake config', ) - make(ci_cortexm, 'build', '-j2') + cmake_build(ci_cortexm, 'build', '-j2') + make_standalone_crt(ci_cortexm, 'build') + make_cpp_tests(ci_cortexm, 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/cortexm/build/libtvm.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/cortexm/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/cortexm/build/config.cmake - retry 3 aws s3 cp --no-progress build/microtvm_template_projects s3://${s3_prefix}/cortexm/build/microtvm_template_projects --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt build/cpptest build/microtvm_template_projects", label: 'Upload artifacts to S3', ) } @@ -1020,23 +964,14 @@ stage('Build') { script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_config_build_hexagon.sh build", label: 'Create Hexagon cmake config', ) - make(ci_hexagon, 'build', '-j2') + cmake_build(ci_hexagon, 'build', '-j2') + make_cpp_tests(ci_hexagon, 'build') sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_build_hexagon_api.sh", label: 'Build Hexagon API', ) sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/hexagon/build/libtvm.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/hexagon/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/hexagon/build/config.cmake - retry 3 aws s3 cp --no-progress build/hexagon_api_output s3://${s3_prefix}/hexagon/build/hexagon_api_output --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest build/hexagon_api_output", label: 'Upload artifacts to S3', ) } @@ -1058,19 +993,11 @@ stage('Build') { script: "${docker_run} ${ci_riscv} ./tests/scripts/task_config_build_riscv.sh build", label: 'Create RISC-V cmake config', ) - make(ci_riscv, 'build', '-j2') + cmake_build(ci_riscv, 'build', '-j2') + make_standalone_crt(ci_riscv, 'build') + make_cpp_tests(ci_riscv, 'build') sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress build/libtvm.so s3://${s3_prefix}/riscv/build/libtvm.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress build/libtvm_runtime.so s3://${s3_prefix}/riscv/build/libtvm_runtime.so - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress build/config.cmake s3://${s3_prefix}/riscv/build/config.cmake - retry 3 aws s3 cp --no-progress build/microtvm_template_projects s3://${s3_prefix}/riscv/build/microtvm_template_projects --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/riscv --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/cpptest build/microtvm_template_projects", label: 'Upload artifacts to S3', ) } @@ -1085,6 +1012,13 @@ stage('Build') { } } +def cpp_unittest(image) { + sh ( + script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_cpp_unittest.sh", + label: 'Run C++ tests', + ) +} + // We have to do this whacky split of the code from where it's used since the // JVM limits method length to 64k and we easily exceed that with all this // autogenerated code. This makes it so each test step is in its own method so @@ -1105,40 +1039,26 @@ def shard_run_unittest_GPU_1_of_3() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu2/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu2/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu2/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu2/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu2 --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt", + label: 'Download artifacts from S3', + ) - cpp_unittest(ci_gpu) + sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build" + // These require a GPU to finish the build (i.e. CUDA needs to be load-able) + make_standalone_crt(ci_gpu, 'build') + // make_cpp_tests(ci_gpu, 'build') + // cpp_unittest(ci_gpu) + sh "rm -rf build" sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/crttest build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) + sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu.sh build" + make_standalone_crt(ci_gpu, 'build') + make_cpp_tests(ci_gpu, 'build') cpp_unittest(ci_gpu) sh ( script: "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh", @@ -1153,11 +1073,7 @@ def shard_run_unittest_GPU_1_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/unittest_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/unittest_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1188,20 +1104,9 @@ def shard_run_unittest_GPU_2_of_3() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -1221,11 +1126,7 @@ def shard_run_unittest_GPU_2_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/unittest_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/unittest_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1256,20 +1157,9 @@ def shard_run_unittest_GPU_3_of_3() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -1285,11 +1175,7 @@ def shard_run_unittest_GPU_3_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/unittest_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/unittest_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1321,22 +1207,9 @@ def shard_run_integration_CPU_1_of_4() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_tsim.so build/libvta_tsim.so - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1348,11 +1221,7 @@ def shard_run_integration_CPU_1_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_CPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_CPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1383,22 +1252,9 @@ def shard_run_integration_CPU_2_of_4() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_tsim.so build/libvta_tsim.so - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1410,11 +1266,7 @@ def shard_run_integration_CPU_2_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_CPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_CPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1445,22 +1297,9 @@ def shard_run_integration_CPU_3_of_4() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_tsim.so build/libvta_tsim.so - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1472,11 +1311,7 @@ def shard_run_integration_CPU_3_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_CPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_CPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1507,22 +1342,9 @@ def shard_run_integration_CPU_4_of_4() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_tsim.so build/libvta_tsim.so - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1534,11 +1356,7 @@ def shard_run_integration_CPU_4_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_CPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_CPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1570,20 +1388,9 @@ def shard_run_python_i386_1_of_3() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + label: 'Download artifacts from S3', + ) ci_setup(ci_i386) cpp_unittest(ci_i386) @@ -1597,11 +1404,7 @@ def shard_run_python_i386_1_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/python_i386 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/python_i386 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1632,20 +1435,9 @@ def shard_run_python_i386_2_of_3() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + label: 'Download artifacts from S3', + ) ci_setup(ci_i386) python_unittest(ci_i386) @@ -1659,11 +1451,7 @@ def shard_run_python_i386_2_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/python_i386 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/python_i386 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1694,20 +1482,9 @@ def shard_run_python_i386_3_of_3() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/i386/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + label: 'Download artifacts from S3', + ) ci_setup(ci_i386) python_unittest(ci_i386) @@ -1720,11 +1497,7 @@ def shard_run_python_i386_3_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/python_i386 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/python_i386 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1756,21 +1529,10 @@ def shard_run_test_Hexagon_1_of_8() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) cpp_unittest(ci_hexagon) sh ( @@ -1782,11 +1544,7 @@ def shard_run_test_Hexagon_1_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1817,21 +1575,10 @@ def shard_run_test_Hexagon_2_of_8() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -1842,11 +1589,7 @@ def shard_run_test_Hexagon_2_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1877,21 +1620,10 @@ def shard_run_test_Hexagon_3_of_8() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -1902,11 +1634,7 @@ def shard_run_test_Hexagon_3_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1937,21 +1665,10 @@ def shard_run_test_Hexagon_4_of_8() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -1962,11 +1679,7 @@ def shard_run_test_Hexagon_4_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -1997,21 +1710,10 @@ def shard_run_test_Hexagon_5_of_8() { 'TVM_SHARD_INDEX=4', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -2022,11 +1724,7 @@ def shard_run_test_Hexagon_5_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2057,21 +1755,10 @@ def shard_run_test_Hexagon_6_of_8() { 'TVM_SHARD_INDEX=5', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -2082,11 +1769,7 @@ def shard_run_test_Hexagon_6_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2117,21 +1800,10 @@ def shard_run_test_Hexagon_7_of_8() { 'TVM_SHARD_INDEX=6', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -2142,11 +1814,7 @@ def shard_run_test_Hexagon_7_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2177,21 +1845,10 @@ def shard_run_test_Hexagon_8_of_8() { 'TVM_SHARD_INDEX=7', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/hexagon/build/hexagon_api_output build/hexagon_api_output --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_python_hexagon.sh", @@ -2202,11 +1859,7 @@ def shard_run_test_Hexagon_8_of_8() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Hexagon --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Hexagon --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2238,20 +1891,9 @@ def shard_run_integration_aarch64_1_of_4() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2264,11 +1906,7 @@ def shard_run_integration_aarch64_1_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2299,20 +1937,9 @@ def shard_run_integration_aarch64_2_of_4() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2325,11 +1952,7 @@ def shard_run_integration_aarch64_2_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2360,20 +1983,9 @@ def shard_run_integration_aarch64_3_of_4() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2386,11 +1998,7 @@ def shard_run_integration_aarch64_3_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2421,20 +2029,9 @@ def shard_run_integration_aarch64_4_of_4() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2447,11 +2044,7 @@ def shard_run_integration_aarch64_4_of_4() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/integration_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/integration_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2483,20 +2076,9 @@ def shard_run_topi_GPU_1_of_3() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2508,11 +2090,7 @@ def shard_run_topi_GPU_1_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/topi_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/topi_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2543,20 +2121,9 @@ def shard_run_topi_GPU_2_of_3() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2568,11 +2135,7 @@ def shard_run_topi_GPU_2_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/topi_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/topi_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2603,20 +2166,9 @@ def shard_run_topi_GPU_3_of_3() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2628,11 +2180,7 @@ def shard_run_topi_GPU_3_of_3() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/topi_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/topi_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2664,20 +2212,9 @@ def shard_run_frontend_GPU_1_of_6() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2689,11 +2226,7 @@ def shard_run_frontend_GPU_1_of_6() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2724,20 +2257,9 @@ def shard_run_frontend_GPU_2_of_6() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2749,11 +2271,7 @@ def shard_run_frontend_GPU_2_of_6() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2784,20 +2302,9 @@ def shard_run_frontend_GPU_3_of_6() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2809,11 +2316,7 @@ def shard_run_frontend_GPU_3_of_6() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2844,20 +2347,9 @@ def shard_run_frontend_GPU_4_of_6() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2869,11 +2361,7 @@ def shard_run_frontend_GPU_4_of_6() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2904,20 +2392,9 @@ def shard_run_frontend_GPU_5_of_6() { 'TVM_SHARD_INDEX=4', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2929,11 +2406,7 @@ def shard_run_frontend_GPU_5_of_6() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -2964,20 +2437,9 @@ def shard_run_frontend_GPU_6_of_6() { 'TVM_SHARD_INDEX=5', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2989,11 +2451,7 @@ def shard_run_frontend_GPU_6_of_6() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_GPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_GPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3025,20 +2483,9 @@ def shard_run_topi_aarch64_1_of_2() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) cpp_unittest(ci_arm) @@ -3055,11 +2502,7 @@ def shard_run_topi_aarch64_1_of_2() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/topi_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/topi_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3090,20 +2533,9 @@ def shard_run_topi_aarch64_2_of_2() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) sh ( @@ -3119,11 +2551,7 @@ def shard_run_topi_aarch64_2_of_2() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/topi_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/topi_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3155,20 +2583,9 @@ def shard_run_frontend_aarch64_1_of_2() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) sh ( @@ -3180,11 +2597,7 @@ def shard_run_frontend_aarch64_1_of_2() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3215,20 +2628,9 @@ def shard_run_frontend_aarch64_2_of_2() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/arm/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) sh ( @@ -3240,11 +2642,7 @@ def shard_run_frontend_aarch64_2_of_2() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_aarch64 --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_aarch64 --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3276,21 +2674,10 @@ def shard_run_test_Cortex_M_1_of_12() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) cpp_unittest(ci_cortexm) sh ( @@ -3306,11 +2693,7 @@ def shard_run_test_Cortex_M_1_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3341,21 +2724,10 @@ def shard_run_test_Cortex_M_2_of_12() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3366,11 +2738,7 @@ def shard_run_test_Cortex_M_2_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3401,21 +2769,10 @@ def shard_run_test_Cortex_M_3_of_12() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3426,11 +2783,7 @@ def shard_run_test_Cortex_M_3_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3461,21 +2814,10 @@ def shard_run_test_Cortex_M_4_of_12() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3486,11 +2828,7 @@ def shard_run_test_Cortex_M_4_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3521,21 +2859,10 @@ def shard_run_test_Cortex_M_5_of_12() { 'TVM_SHARD_INDEX=4', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3546,11 +2873,7 @@ def shard_run_test_Cortex_M_5_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3581,21 +2904,10 @@ def shard_run_test_Cortex_M_6_of_12() { 'TVM_SHARD_INDEX=5', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3606,11 +2918,7 @@ def shard_run_test_Cortex_M_6_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3641,21 +2949,10 @@ def shard_run_test_Cortex_M_7_of_12() { 'TVM_SHARD_INDEX=6', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3666,11 +2963,7 @@ def shard_run_test_Cortex_M_7_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3701,21 +2994,10 @@ def shard_run_test_Cortex_M_8_of_12() { 'TVM_SHARD_INDEX=7', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3726,11 +3008,7 @@ def shard_run_test_Cortex_M_8_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3761,21 +3039,10 @@ def shard_run_test_Cortex_M_9_of_12() { 'TVM_SHARD_INDEX=8', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3786,11 +3053,7 @@ def shard_run_test_Cortex_M_9_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3821,21 +3084,10 @@ def shard_run_test_Cortex_M_10_of_12() { 'TVM_SHARD_INDEX=9', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3846,11 +3098,7 @@ def shard_run_test_Cortex_M_10_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3881,21 +3129,10 @@ def shard_run_test_Cortex_M_11_of_12() { 'TVM_SHARD_INDEX=10', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3906,11 +3143,7 @@ def shard_run_test_Cortex_M_11_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -3941,21 +3174,10 @@ def shard_run_test_Cortex_M_12_of_12() { 'TVM_SHARD_INDEX=11', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cortexm/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_python_microtvm.sh", @@ -3966,11 +3188,7 @@ def shard_run_test_Cortex_M_12_of_12() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_Cortex_M --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_Cortex_M --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -4002,21 +3220,10 @@ def shard_run_test_RISC_V_1_of_1() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/riscv/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/riscv/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/riscv/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/riscv/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/riscv --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() ci_setup(ci_riscv) cpp_unittest(ci_cortexm) sh ( @@ -4028,11 +3235,7 @@ def shard_run_test_RISC_V_1_of_1() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/test_RISC_V --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/test_RISC_V --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -4059,18 +3262,9 @@ def run_unittest_minimal() { docker_init(ci_minimal) withEnv(['PLATFORM=minimal'], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu-minimal/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu-minimal/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu-minimal/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu-minimal --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest", + label: 'Download artifacts from S3', + ) cpp_unittest(ci_minimal) python_unittest(ci_minimal) @@ -4078,11 +3272,7 @@ def run_unittest_minimal() { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/unittest_CPU_MINIMAL --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/unittest_CPU_MINIMAL --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -4264,22 +3454,9 @@ stage('Test') { 'TEST_STEP_NAME=unittest: CPU', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_tsim.so build/libvta_tsim.so - md5sum build/libvta_tsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest build/standalone_crt", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) cpp_unittest(ci_cpu) @@ -4293,11 +3470,7 @@ stage('Test') { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/unittest_CPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/unittest_CPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -4325,20 +3498,9 @@ stage('Test') { 'TEST_STEP_NAME=frontend: CPU', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/cpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -4349,11 +3511,7 @@ stage('Test') { } finally { try { sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/frontend_CPU --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/frontend_CPU --items build/pytest-results", label: 'Upload JUnits to S3', ) @@ -4376,23 +3534,10 @@ stage('Test') { init_git() docker_init(ci_gpu) sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm.so build/libtvm.so - md5sum build/libtvm.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libvta_fsim.so build/libvta_fsim.so - md5sum build/libvta_fsim.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/libtvm_runtime.so build/libtvm_runtime.so - md5sum build/libtvm_runtime.so - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/config.cmake build/config.cmake - md5sum build/config.cmake - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/gpu/build/microtvm_template_projects build/microtvm_template_projects --recursive - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/standalone_crt", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() timeout(time: 180, unit: 'MINUTES') { ci_setup(ci_gpu) sh ( @@ -4401,17 +3546,12 @@ stage('Test') { ) } sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - md5sum docs.tgz - retry 3 aws s3 cp --no-progress docs.tgz s3://${s3_prefix}/docs/docs.tgz - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/docs --items docs.tgz", label: 'Upload artifacts to S3', ) sh( - script: "aws s3 cp --no-progress _docs s3://${s3_prefix}/docs --recursive", + script: "aws s3 cp --no-progress _docs s3://${s3_bucket}/${s3_prefix}/docs --recursive", label: 'Upload docs to S3', ) } @@ -4515,14 +3655,9 @@ def deploy() { timeout(time: max_time, unit: 'MINUTES') { init_git() sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/docs/docs.tgz docs.tgz - md5sum docs.tgz - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/docs --items docs.tgz", + label: 'Download artifacts from S3', + ) deploy_docs() } diff --git a/ci/jenkins/Build.groovy.j2 b/ci/jenkins/Build.groovy.j2 index 49cffacdc16e..04499712c7b1 100644 --- a/ci/jenkins/Build.groovy.j2 +++ b/ci/jenkins/Build.groovy.j2 @@ -1,7 +1,7 @@ def ci_setup(image) { sh ( - script: "${docker_run} ${image} ./tests/scripts/task_ci_setup.sh", - label: 'Set up CI environment', + script: "${docker_run} ${image} ./tests/scripts/task_clear_pytest.sh", + label: 'Clean up old workspace', ) } @@ -19,17 +19,40 @@ def fsim_test(image) { ) } -def cmake_build(image, path, make_flag) { +def make_standalone_crt(image, build_dir) { sh ( - script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_build.py --sccache-bucket tvm-sccache-prod", - label: 'Run cmake build', + script: """ + set -eux + ${docker_run} ${image} python3 ./tests/scripts/task_build.py \ + --sccache-bucket tvm-sccache-prod \ + --cmake-target standalone_crt \ + --build-dir build + ${docker_run} ${image} python3 ./tests/scripts/task_build.py \ + --sccache-bucket tvm-sccache-prod \ + --cmake-target crttest \ + --build-dir build + """, + label: 'Make standalone CRT', + ) +} + +def make_cpp_tests(image, build_dir) { + sh ( + script: """ + set -eux + ${docker_run} ${image} python3 ./tests/scripts/task_build.py \ + --sccache-bucket tvm-sccache-prod \ + --cmake-target cpptest \ + --build-dir ${build_dir} + """, + label: 'Make C++ tests', ) } -def cpp_unittest(image) { +def cmake_build(image, path, make_flag) { sh ( - script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_cpp_unittest.sh", - label: 'Build and run C++ tests', + script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_build.py --sccache-bucket tvm-sccache-prod", + label: 'Run cmake build', ) } @@ -51,26 +74,13 @@ def add_hexagon_permissions() { {% endfor %} } -// Run make. First try to do an incremental make from a previous workspace in hope to -// accelerate the compilation. If something is wrong, clean the workspace and then -// build from scratch. -def make(docker_type, path, make_flag) { - timeout(time: max_time, unit: 'MINUTES') { - try { - cmake_build(docker_type, path, make_flag) - } catch (hudson.AbortException ae) { - // script exited due to user abort, directly throw instead of retry - if (ae.getMessage().contains('script returned exit code 143')) { - throw ae - } - echo 'Incremental compilation failed. Fall back to build from scratch' - sh ( - script: "${docker_run} ${docker_type} ./tests/scripts/task_clean.sh ${path}", - label: 'Clear old cmake workspace', - ) - cmake_build(docker_type, path, make_flag) - } - } +def add_crttest_permissions() { + {% for file in crttest %} + sh( + script: 'chmod +x {{ file }}', + label: 'Add execute permissions for crttest', + ) + {% endfor %} } @@ -89,13 +99,16 @@ stage('Build') { docker_image='ci_gpu', ) %} sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu.sh build" - make("${ci_gpu} --no-gpu", 'build', '-j2') - {{ m.upload_artifacts(tag='gpu', filenames=tvm_multilib, folders=microtvm_template_projects) }} + cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') + make_standalone_crt("${ci_gpu} --no-gpu", 'build') + {{ m.upload_artifacts(tag='gpu', filenames=tvm_multilib + microtvm_template_projects + crttest + standalone_crt) }} // compiler test - sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build2" - make("${ci_gpu} --no-gpu", 'build2', '-j2') - {{ m.upload_artifacts(tag='gpu2', filenames=tvm_multilib) }} + sh "rm -rf build" + sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build" + cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') + make_standalone_crt("${ci_gpu} --no-gpu", 'build') + {{ m.upload_artifacts(tag='gpu2', filenames=tvm_lib + crttest + standalone_crt) }} {% endcall %} {% call m.build_step( @@ -109,8 +122,10 @@ stage('Build') { script: "${docker_run} ${ci_cpu} ./tests/scripts/task_config_build_cpu.sh build", label: 'Create CPU cmake config', ) - make(ci_cpu, 'build', '-j2') - {{ m.upload_artifacts(tag='cpu', filenames=tvm_multilib_tsim) }} + cmake_build(ci_cpu, 'build', '-j2') + make_standalone_crt(ci_cpu, 'build') + make_cpp_tests(ci_cpu, 'build') + {{ m.upload_artifacts(tag='cpu', filenames=tvm_multilib_tsim + crttest + cpptest + standalone_crt) }} ci_setup(ci_cpu) // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch @@ -128,8 +143,9 @@ stage('Build') { script: "${docker_run} ${ci_minimal} ./tests/scripts/task_config_build_minimal.sh build", label: 'Create CPU minimal cmake config', ) - make(ci_minimal, 'build', '-j2') - {{ m.upload_artifacts(tag='cpu-minimal', filenames=tvm_lib) }} + cmake_build(ci_minimal, 'build', '-j2') + make_cpp_tests(ci_minimal, 'build') + {{ m.upload_artifacts(tag='cpu-minimal', filenames=tvm_lib + cpptest) }} {% endcall %} {% call m.build_step( @@ -143,7 +159,9 @@ stage('Build') { script: "${docker_run} ${ci_wasm} ./tests/scripts/task_config_build_wasm.sh build", label: 'Create WASM cmake config', ) - make(ci_wasm, 'build', '-j2') + cmake_build(ci_wasm, 'build', '-j2') + make_standalone_crt(ci_wasm, 'build') + make_cpp_tests(ci_wasm, 'build') cpp_unittest(ci_wasm) ci_setup(ci_wasm) sh ( @@ -163,8 +181,10 @@ stage('Build') { script: "${docker_run} ${ci_i386} ./tests/scripts/task_config_build_i386.sh build", label: 'Create i386 cmake config', ) - make(ci_i386, 'build', '-j2') - {{ m.upload_artifacts(tag='i386', filenames=tvm_multilib_tsim) }} + cmake_build(ci_i386, 'build', '-j2') + make_standalone_crt(ci_i386, 'build') + make_cpp_tests(ci_i386, 'build') + {{ m.upload_artifacts(tag='i386', filenames=tvm_multilib_tsim + standalone_crt + crttest + cpptest) }} {% endcall %} {% call m.build_step( @@ -178,8 +198,10 @@ stage('Build') { script: "${docker_run} ${ci_arm} ./tests/scripts/task_config_build_arm.sh build", label: 'Create ARM cmake config', ) - make(ci_arm, 'build', '-j4') - {{ m.upload_artifacts(tag='arm', filenames=tvm_multilib) }} + cmake_build(ci_arm, 'build', '-j4') + make_standalone_crt(ci_arm, 'build') + make_cpp_tests(ci_arm, 'build') + {{ m.upload_artifacts(tag='arm', filenames=tvm_multilib + cpptest + standalone_crt) }} {% endcall %} {% call m.build_step( @@ -193,8 +215,10 @@ stage('Build') { script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_config_build_cortexm.sh build", label: 'Create Cortex-M cmake config', ) - make(ci_cortexm, 'build', '-j2') - {{ m.upload_artifacts(tag='cortexm', filenames=tvm_lib, folders=microtvm_template_projects) }} + cmake_build(ci_cortexm, 'build', '-j2') + make_standalone_crt(ci_cortexm, 'build') + make_cpp_tests(ci_cortexm, 'build') + {{ m.upload_artifacts(tag='cortexm', filenames=tvm_lib + crttest + standalone_crt + cpptest + microtvm_template_projects) }} {% endcall %} {% call m.build_step( @@ -208,12 +232,13 @@ stage('Build') { script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_config_build_hexagon.sh build", label: 'Create Hexagon cmake config', ) - make(ci_hexagon, 'build', '-j2') + cmake_build(ci_hexagon, 'build', '-j2') + make_cpp_tests(ci_hexagon, 'build') sh ( script: "${docker_run} ${ci_hexagon} ./tests/scripts/task_build_hexagon_api.sh", label: 'Build Hexagon API', ) - {{ m.upload_artifacts(tag='hexagon', filenames=tvm_lib, folders=hexagon_api) }} + {{ m.upload_artifacts(tag='hexagon', filenames=tvm_lib + cpptest + hexagon_api) }} {% endcall %} {% call m.build_step( @@ -227,8 +252,10 @@ stage('Build') { script: "${docker_run} ${ci_riscv} ./tests/scripts/task_config_build_riscv.sh build", label: 'Create RISC-V cmake config', ) - make(ci_riscv, 'build', '-j2') - {{ m.upload_artifacts(tag='riscv', filenames=tvm_lib, folders=microtvm_template_projects) }} + cmake_build(ci_riscv, 'build', '-j2') + make_standalone_crt(ci_riscv, 'build') + make_cpp_tests(ci_riscv, 'build') + {{ m.upload_artifacts(tag='riscv', filenames=tvm_lib + crttest + cpptest + microtvm_template_projects) }} {% endcall %} ) diff --git a/ci/jenkins/Jenkinsfile.j2 b/ci/jenkins/Jenkinsfile.j2 index 7ceef81e4e7c..5e15b608e2f6 100644 --- a/ci/jenkins/Jenkinsfile.j2 +++ b/ci/jenkins/Jenkinsfile.j2 @@ -93,12 +93,16 @@ rebuild_docker_images = false // Filenames for stashing between build and test steps {% set tvm_runtime = ['build/libtvm_runtime.so', 'build/config.cmake'] %} +{% set crttest = ['build/crttest'] %} +{% set cpptest = ['build/cpptest'] %} {% set tvm_lib = ['build/libtvm.so'] + tvm_runtime %} {% set tvm_multilib = ['build/libtvm.so', 'build/libvta_fsim.so'] + tvm_runtime %} {% set tvm_multilib_tsim = ['build/libvta_tsim.so'] + tvm_multilib %} {% set microtvm_template_projects = ['build/microtvm_template_projects',] %} {% set hexagon_api = ['build/hexagon_api_output',] %} -s3_prefix = "tvm-jenkins-artifacts-prod/tvm/${env.BRANCH_NAME}/${env.BUILD_NUMBER}" +{% set standalone_crt = ['build/standalone_crt'] %} +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" diff --git a/ci/jenkins/Test.groovy.j2 b/ci/jenkins/Test.groovy.j2 index 52ed742d4cc0..4000e39ab2a9 100644 --- a/ci/jenkins/Test.groovy.j2 +++ b/ci/jenkins/Test.groovy.j2 @@ -1,5 +1,12 @@ {% set test_method_names = [] %} +def cpp_unittest(image) { + sh ( + script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_cpp_unittest.sh", + label: 'Run C++ tests', + ) +} + // We have to do this whacky split of the code from where it's used since the // JVM limits method length to 64k and we easily exceed that with all this // autogenerated code. This makes it so each test step is in its own method so @@ -14,11 +21,19 @@ test_method_names=test_method_names, ) %} {% if shard_index == 1 %} - {{ m.download_artifacts(tag='gpu2', filenames=tvm_multilib) }} - cpp_unittest(ci_gpu) + {{ m.download_artifacts(tag='gpu2', filenames=tvm_multilib + crttest + standalone_crt) }} + sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build" + // These require a GPU to finish the build (i.e. CUDA needs to be load-able) + make_standalone_crt(ci_gpu, 'build') + // make_cpp_tests(ci_gpu, 'build') + // cpp_unittest(ci_gpu) - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib) }} + sh "rm -rf build" + {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib + microtvm_template_projects + crttest + standalone_crt) }} ci_setup(ci_gpu) + sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu.sh build" + make_standalone_crt(ci_gpu, 'build') + make_cpp_tests(ci_gpu, 'build') cpp_unittest(ci_gpu) {% else %} {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib) }} @@ -48,7 +63,7 @@ docker_image="ci_cpu", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim) }} + {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim + standalone_crt) }} ci_setup(ci_cpu) sh ( script: "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh", @@ -64,7 +79,7 @@ docker_image="ci_i386", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='i386', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='i386', filenames=tvm_multilib_tsim + standalone_crt + crttest + cpptest) }} ci_setup(ci_i386) {% if shard_index == 1 %} cpp_unittest(ci_i386) @@ -87,8 +102,7 @@ test_method_names=test_method_names, num_shards=8, ) %} - {{ m.download_artifacts(tag='hexagon', filenames=tvm_lib, folders=hexagon_api) }} - add_hexagon_permissions() + {{ m.download_artifacts(tag='hexagon', filenames=tvm_lib + hexagon_api + cpptest) }} ci_setup(ci_hexagon) {% if shard_index == 1 %} cpp_unittest(ci_hexagon) @@ -107,7 +121,7 @@ docker_image="ci_arm", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='arm', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='arm', filenames=tvm_multilib + standalone_crt) }} ci_setup(ci_arm) python_unittest(ci_arm) sh ( @@ -156,7 +170,7 @@ num_shards=2, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='arm', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='arm', filenames=tvm_multilib + cpptest) }} ci_setup(ci_arm) {% if shard_index == 1 %} cpp_unittest(ci_arm) @@ -195,8 +209,7 @@ num_shards=12, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='cortexm', filenames=tvm_lib, folders=microtvm_template_projects) }} - add_microtvm_permissions() + {{ m.download_artifacts(tag='cortexm', filenames=tvm_lib + microtvm_template_projects + cpptest + standalone_crt) }} ci_setup(ci_cortexm) {% if shard_index == 1%} cpp_unittest(ci_cortexm) @@ -219,8 +232,7 @@ num_shards=1, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='riscv', filenames=tvm_lib, folders=microtvm_template_projects) }} - add_microtvm_permissions() + {{ m.download_artifacts(tag='riscv', filenames=tvm_lib + microtvm_template_projects + cpptest) }} ci_setup(ci_riscv) {% if shard_index == 1%} cpp_unittest(ci_cortexm) @@ -239,7 +251,7 @@ def run_unittest_minimal() { platform="minimal", docker_image="ci_minimal", ) %} - {{ m.download_artifacts(tag='cpu-minimal', filenames=tvm_lib) }} + {{ m.download_artifacts(tag='cpu-minimal', filenames=tvm_lib + cpptest) }} cpp_unittest(ci_minimal) python_unittest(ci_minimal) {% endcall %} @@ -266,7 +278,7 @@ stage('Test') { platform="cpu", docker_image="ci_cpu", ) %} - {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim) }} + {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim + cpptest + standalone_crt) }} ci_setup(ci_cpu) cpp_unittest(ci_cpu) python_unittest(ci_cpu) @@ -296,8 +308,7 @@ stage('Test') { ws({{ m.per_exec_ws('tvm/docs-python-gpu') }}) { init_git() docker_init(ci_gpu) - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib, folders=microtvm_template_projects) }} - add_microtvm_permissions() + {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib + microtvm_template_projects + standalone_crt) }} timeout(time: 180, unit: 'MINUTES') { ci_setup(ci_gpu) sh ( @@ -307,7 +318,7 @@ stage('Test') { } {{ m.upload_artifacts(tag='docs', filenames=["docs.tgz"]) }} sh( - script: "aws s3 cp --no-progress _docs s3://${s3_prefix}/docs --recursive", + script: "aws s3 cp --no-progress _docs s3://${s3_bucket}/${s3_prefix}/docs --recursive", label: 'Upload docs to S3', ) } diff --git a/ci/jenkins/macros.j2 b/ci/jenkins/macros.j2 index b8ac0de91ce6..3fec2cc741ca 100644 --- a/ci/jenkins/macros.j2 +++ b/ci/jenkins/macros.j2 @@ -21,11 +21,7 @@ {% macro junit_to_s3(test_dir_name) %} sh( - script: """ - set -eux - . ci/scripts/retry.sh - retry 3 aws s3 cp --no-progress build/pytest-results s3://${s3_prefix}/pytest-results/{{ test_dir_name }} --recursive - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/pytest-results/{{ test_dir_name }} --items build/pytest-results", label: 'Upload JUnits to S3', ) {% endmacro %} @@ -187,36 +183,18 @@ def {{ method_name }}() { }, {% endmacro %} -{% macro upload_artifacts(tag, filenames, folders=None) %} +{% macro upload_artifacts(action, tag, filenames) %} +{% set items = ' '.join(filenames) %} sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - {% for filename in filenames %} - md5sum {{ filename }} - retry 3 aws s3 cp --no-progress {{ filename }} s3://${s3_prefix}/{{ tag }}/{{ filename }} - {% endfor %} - {% for folder in (folders or []) %} - retry 3 aws s3 cp --no-progress {{ folder }} s3://${s3_prefix}/{{ tag }}/{{ folder }} --recursive - {% endfor %} - """, + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/{{ tag }} --items {{ items }}", label: 'Upload artifacts to S3', ) {% endmacro %} -{% macro download_artifacts(tag, filenames, folders=None) %} +{% macro download_artifacts(tag, filenames) %} +{% set items = ' '.join(filenames) %} sh( - script: """ - set -eux - . ${jenkins_scripts_root}/retry.sh - {% for filename in filenames %} - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/{{ tag }}/{{ filename }} {{ filename }} - md5sum {{ filename }} - {% endfor %} - {% for folder in (folders or []) %} - retry 3 aws s3 cp --no-progress s3://${s3_prefix}/{{ tag }}/{{ folder }} {{ folder }} --recursive - {% endfor %} - """, - label: 'Download artifacts from S3', - ) + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/{{ tag }} --items {{ items }}", + label: 'Download artifacts from S3', + ) {% endmacro %} diff --git a/ci/scripts/jenkins/s3.py b/ci/scripts/jenkins/s3.py new file mode 100755 index 000000000000..c823a0fb9a65 --- /dev/null +++ b/ci/scripts/jenkins/s3.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 +# 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. + +import argparse +import logging +from pathlib import Path + +from cmd_utils import Sh, REPO_ROOT, init_log + +RETRY_SCRIPT = REPO_ROOT / "ci" / "scripts" / "jenkins" / "retry.sh" + + +def show_md5(item: str) -> None: + if not Path(item).is_dir(): + sh.run(f"md5sum {item}") + + +def is_file(bucket: str, prefix: str) -> bool: + cmd = f"aws s3api head-object --bucket {bucket} --key {prefix}" + proc = Sh().run(cmd, check=False) + return proc.returncode == 0 + + +if __name__ == "__main__": + init_log() + help = "Uploads or downloads files from S3" + parser = argparse.ArgumentParser(description=help) + parser.add_argument("--action", help="either 'upload' or 'download'", required=True) + parser.add_argument("--bucket", help="s3 bucket", required=True) + parser.add_argument( + "--prefix", help="s3 bucket + tag (e.g. s3://tvm-ci-prod/PR-1234/cpu", required=True + ) + parser.add_argument("--items", help="files and folders to upload", nargs="+", required=True) + + args = parser.parse_args() + logging.info(args) + + sh = Sh() + + if Path.cwd() != REPO_ROOT: + logging.error(f"s3.py can only be executed from the repo root, instead was in {Path.cwd()}") + exit(1) + + prefix = args.prefix.strip("/") + s3_path = f"s3://{args.bucket}/{prefix}" + logging.info(f"Using s3 path: {s3_path}") + + if args.action == "upload": + upload = True + elif args.action == "download": + upload = False + else: + logging.error(f"Unsupported action: {args.action}") + exit(1) + + for item in args.items: + destination = s3_path + "/" + item + recursive_arg = "" + + if upload: + # Show md5 before uploading + show_md5(item) + + # Download/upload the item + cmd = f". {RETRY_SCRIPT.relative_to(REPO_ROOT)} && retry 3 aws s3 cp --no-progress" + if upload and Path(item).is_dir(): + cmd += " --recursive" + if not upload and not is_file(args.bucket, prefix + "/" + item): + cmd += " --recursive" + + if upload: + cmd += f" {item} {destination}" + else: + cmd += f" {destination} {item}" + sh.run(cmd) + + if not upload: + to_chmod = [] + print(item) + if Path(item).is_dir(): + to_chmod = [f for f in Path(item).glob("**/*") if not f.is_dir()] + else: + to_chmod = [item] + + # Add execute bit for downloads + to_chmod = [str(f) for f in to_chmod] + logging.info(f"Adding execute bit for files: {to_chmod}") + if len(to_chmod) > 0: + sh.run(f"chmod +x {' '.join(to_chmod)}") + + if not upload: + # Show md5 after downloading + show_md5(item) diff --git a/tests/scripts/task_ci_setup.sh b/tests/scripts/task_clear_pytest.sh similarity index 58% rename from tests/scripts/task_ci_setup.sh rename to tests/scripts/task_clear_pytest.sh index 5af0d0c9801e..0a24f62531d5 100755 --- a/tests/scripts/task_ci_setup.sh +++ b/tests/scripts/task_clear_pytest.sh @@ -18,23 +18,6 @@ set -euxo pipefail -# Script to setup additional python env. -# -# Use the following command to install the -# package to /workspace/.local, these additional -# packages will have precedence over the system packages. -# -# command: python3 -m pip install --user == -# -echo "Additional setup in ${CI_IMAGE_NAME}" - -# Rebuild standalone_crt in build/ tree. This file is not currently archived by pack_lib() in -# Jenkinsfile. We expect config.cmake to be present from pack_lib(). -# TODO(areusch): Make pack_lib() pack all the data dependencies of TVM. -python3 tests/scripts/task_build.py \ - --sccache-bucket tvm-sccache-prod \ - --cmake-target standalone_crt - # Ensure no stale pytest-results remain from a previous test run. pushd build rm -rf pytest-results diff --git a/tests/scripts/task_cpp_unittest.sh b/tests/scripts/task_cpp_unittest.sh index 22cc937e8784..0df2656a1ea0 100755 --- a/tests/scripts/task_cpp_unittest.sh +++ b/tests/scripts/task_cpp_unittest.sh @@ -28,38 +28,15 @@ else BUILD_DIR=build fi -# Python is required by apps/bundle_deploy -source tests/scripts/setup-pytest-env.sh -export LD_LIBRARY_PATH="lib:${LD_LIBRARY_PATH:-}" # NOTE: important to use abspath, when VTA is enabled. -export VTA_HW_PATH=`pwd`/3rdparty/vta-hw +VTA_HW_PATH=$(pwd)/3rdparty/vta-hw +export VTA_HW_PATH # to avoid CI thread throttling. export TVM_BIND_THREADS=0 export OMP_NUM_THREADS=1 -# Build cpptest suite -python3 tests/scripts/task_build.py \ - --sccache-bucket tvm-sccache-prod \ - --cmake-target cpptest \ - --build-dir "${BUILD_DIR}" - -# crttest requries USE_MICRO to be enabled. -if grep -Fq "USE_MICRO ON" ${BUILD_DIR}/TVMBuildOptions.txt; then - pushd "${BUILD_DIR}" - ninja crttest - popd -fi - pushd "${BUILD_DIR}" ctest --gtest_death_test_style=threadsafe popd - -# Test MISRA-C runtime. It requires USE_MICRO to be enabled. -if grep -Fq "USE_MICRO ON" ${BUILD_DIR}/TVMBuildOptions.txt; then - pushd apps/bundle_deploy - rm -rf build - make test_dynamic test_static - popd -fi diff --git a/tests/scripts/task_microtvm_cpp_tests.sh b/tests/scripts/task_microtvm_cpp_tests.sh new file mode 100755 index 000000000000..4e6297d39eec --- /dev/null +++ b/tests/scripts/task_microtvm_cpp_tests.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash +# 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. + +set -euxo pipefail + +BUILD_DIR=$1 + +# Python is required by apps/bundle_deploy +source tests/scripts/setup-pytest-env.sh + +export LD_LIBRARY_PATH="lib:${LD_LIBRARY_PATH:-}" +# NOTE: important to use abspath, when VTA is enabled. +VTA_HW_PATH=$(pwd)/3rdparty/vta-hw +export VTA_HW_PATH + +# to avoid CI thread throttling. +export TVM_BIND_THREADS=0 +export OMP_NUM_THREADS=1 + +# crttest requries USE_MICRO to be enabled. +pushd "${BUILD_DIR}" +ninja crttest +popd + +# Test MISRA-C runtime. It requires USE_MICRO to be enabled. +pushd apps/bundle_deploy +rm -rf build +make test_dynamic test_static +popd From e9f70fa38c973d89eb2c65945a460887e766293d Mon Sep 17 00:00:00 2001 From: driazati Date: Tue, 15 Nov 2022 23:01:03 -0800 Subject: [PATCH 2/2] Comments --- Jenkinsfile | 163 +++++++++++------------ ci/jenkins/Build.groovy.j2 | 40 +----- ci/jenkins/Deploy.groovy.j2 | 2 +- ci/jenkins/Jenkinsfile.j2 | 5 +- ci/jenkins/Test.groovy.j2 | 47 ++++--- ci/jenkins/macros.j2 | 5 +- ci/scripts/jenkins/cmd_utils.py | 11 ++ ci/scripts/jenkins/s3.py | 118 ++++++++++------ tests/scripts/task_cpp_unittest.sh | 3 +- tests/scripts/task_microtvm_cpp_tests.sh | 4 +- 10 files changed, 208 insertions(+), 190 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 7eab3e74d94c..dfa9a7eda284 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-11-15T16:25:54.047844 +// Generated at 2022-11-17T23:53:21.059864 import org.jenkinsci.plugins.pipeline.modeldefinition.Utils // NOTE: these lines are scanned by docker/dev_common.sh. Please update the regex as needed. --> @@ -729,28 +729,6 @@ def cmake_build(image, path, make_flag) { ) } -def add_microtvm_permissions() { - sh( - script: 'find build/microtvm_template_projects -type f | grep qemu-hack | xargs chmod +x', - label: 'Add execute permissions for microTVM files', - ) -} - -def add_hexagon_permissions() { - sh( - script: 'find build/hexagon_api_output -type f | xargs chmod +x', - label: 'Add execute permissions for hexagon files', - ) -} - -def add_crttest_permissions() { - sh( - script: 'chmod +x build/crttest', - label: 'Add execute permissions for crttest', - ) -} - - def build() { stage('Build') { environment { @@ -769,7 +747,7 @@ stage('Build') { cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') make_standalone_crt("${ci_gpu} --no-gpu", 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/crttest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/libtvm_allvisible.so build/microtvm_template_projects build/crttest build/standalone_crt build/build.ninja", label: 'Upload artifacts to S3', ) @@ -780,7 +758,7 @@ stage('Build') { cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') make_standalone_crt("${ci_gpu} --no-gpu", 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu2 --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu2 --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt build/build.ninja", label: 'Upload artifacts to S3', ) } @@ -806,7 +784,7 @@ stage('Build') { make_standalone_crt(ci_cpu, 'build') make_cpp_tests(ci_cpu, 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/crttest build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/libtvm_allvisible.so build/crttest build/cpptest build/build.ninja build/CMakeFiles/rules.ninja build/standalone_crt build/build.ninja", label: 'Upload artifacts to S3', ) @@ -836,7 +814,7 @@ stage('Build') { cmake_build(ci_minimal, 'build', '-j2') make_cpp_tests(ci_minimal, 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu-minimal --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu-minimal --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/libtvm_allvisible.so build/cpptest build/build.ninja build/CMakeFiles/rules.ninja", label: 'Upload artifacts to S3', ) } @@ -890,7 +868,7 @@ stage('Build') { make_standalone_crt(ci_i386, 'build') make_cpp_tests(ci_i386, 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/build.ninja build/crttest build/cpptest build/build.ninja build/CMakeFiles/rules.ninja", label: 'Upload artifacts to S3', ) } @@ -916,7 +894,7 @@ stage('Build') { make_standalone_crt(ci_arm, 'build') make_cpp_tests(ci_arm, 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest build/build.ninja build/CMakeFiles/rules.ninja build/crttest build/standalone_crt build/build.ninja", label: 'Upload artifacts to S3', ) } @@ -942,7 +920,7 @@ stage('Build') { make_standalone_crt(ci_cortexm, 'build') make_cpp_tests(ci_cortexm, 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt build/cpptest build/microtvm_template_projects", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/libtvm_allvisible.so build/crttest build/standalone_crt build/build.ninja build/cpptest build/build.ninja build/CMakeFiles/rules.ninja build/microtvm_template_projects", label: 'Upload artifacts to S3', ) } @@ -971,7 +949,7 @@ stage('Build') { label: 'Build Hexagon API', ) sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest build/hexagon_api_output", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest build/build.ninja build/CMakeFiles/rules.ninja build/hexagon_api_output", label: 'Upload artifacts to S3', ) } @@ -997,7 +975,7 @@ stage('Build') { make_standalone_crt(ci_riscv, 'build') make_cpp_tests(ci_riscv, 'build') sh( - script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/riscv --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/crttest build/cpptest build/microtvm_template_projects", + script: "./${jenkins_scripts_root}/s3.py --action upload --bucket ${s3_bucket} --prefix ${s3_prefix}/riscv --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/libtvm_allvisible.so build/standalone_crt build/build.ninja build/crttest build/cpptest build/build.ninja build/CMakeFiles/rules.ninja build/microtvm_template_projects", label: 'Upload artifacts to S3', ) } @@ -1019,6 +997,13 @@ def cpp_unittest(image) { ) } +def micro_cpp_unittest(image) { + sh ( + script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_microtvm_cpp_tests.sh build", + label: 'Run microTVM C++ tests', + ) +} + // We have to do this whacky split of the code from where it's used since the // JVM limits method length to 64k and we easily exceed that with all this // autogenerated code. This makes it so each test step is in its own method so @@ -1039,7 +1024,7 @@ def shard_run_unittest_GPU_1_of_3() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu2 --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/crttest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu2", label: 'Download artifacts from S3', ) @@ -1051,7 +1036,7 @@ def shard_run_unittest_GPU_1_of_3() { sh "rm -rf build" sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/crttest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -1060,6 +1045,7 @@ def shard_run_unittest_GPU_1_of_3() { make_standalone_crt(ci_gpu, 'build') make_cpp_tests(ci_gpu, 'build') cpp_unittest(ci_gpu) + micro_cpp_unittest(ci_gpu) sh ( script: "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh", label: 'Run Python GPU unit tests', @@ -1104,7 +1090,7 @@ def shard_run_unittest_GPU_2_of_3() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -1157,7 +1143,7 @@ def shard_run_unittest_GPU_3_of_3() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -1207,7 +1193,7 @@ def shard_run_integration_CPU_1_of_4() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu", label: 'Download artifacts from S3', ) @@ -1252,7 +1238,7 @@ def shard_run_integration_CPU_2_of_4() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu", label: 'Download artifacts from S3', ) @@ -1297,7 +1283,7 @@ def shard_run_integration_CPU_3_of_4() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu", label: 'Download artifacts from S3', ) @@ -1342,7 +1328,7 @@ def shard_run_integration_CPU_4_of_4() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu", label: 'Download artifacts from S3', ) @@ -1388,12 +1374,13 @@ def shard_run_python_i386_1_of_3() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386", label: 'Download artifacts from S3', ) ci_setup(ci_i386) cpp_unittest(ci_i386) + micro_cpp_unittest(ci_i386) python_unittest(ci_i386) sh ( script: "${docker_run} ${ci_i386} ./tests/scripts/task_python_integration_i386only.sh", @@ -1435,7 +1422,7 @@ def shard_run_python_i386_2_of_3() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386", label: 'Download artifacts from S3', ) @@ -1482,7 +1469,7 @@ def shard_run_python_i386_3_of_3() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386 --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt build/crttest build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/i386", label: 'Download artifacts from S3', ) @@ -1529,7 +1516,7 @@ def shard_run_test_Hexagon_1_of_8() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1575,7 +1562,7 @@ def shard_run_test_Hexagon_2_of_8() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1620,7 +1607,7 @@ def shard_run_test_Hexagon_3_of_8() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1665,7 +1652,7 @@ def shard_run_test_Hexagon_4_of_8() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1710,7 +1697,7 @@ def shard_run_test_Hexagon_5_of_8() { 'TVM_SHARD_INDEX=4', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1755,7 +1742,7 @@ def shard_run_test_Hexagon_6_of_8() { 'TVM_SHARD_INDEX=5', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1800,7 +1787,7 @@ def shard_run_test_Hexagon_7_of_8() { 'TVM_SHARD_INDEX=6', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1845,7 +1832,7 @@ def shard_run_test_Hexagon_8_of_8() { 'TVM_SHARD_INDEX=7', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/hexagon_api_output build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/hexagon", label: 'Download artifacts from S3', ) @@ -1891,7 +1878,7 @@ def shard_run_integration_aarch64_1_of_4() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -1937,7 +1924,7 @@ def shard_run_integration_aarch64_2_of_4() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -1983,7 +1970,7 @@ def shard_run_integration_aarch64_3_of_4() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -2029,7 +2016,7 @@ def shard_run_integration_aarch64_4_of_4() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -2076,7 +2063,7 @@ def shard_run_topi_GPU_1_of_3() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2121,7 +2108,7 @@ def shard_run_topi_GPU_2_of_3() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2166,7 +2153,7 @@ def shard_run_topi_GPU_3_of_3() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2212,7 +2199,7 @@ def shard_run_frontend_GPU_1_of_6() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2257,7 +2244,7 @@ def shard_run_frontend_GPU_2_of_6() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2302,7 +2289,7 @@ def shard_run_frontend_GPU_3_of_6() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2347,7 +2334,7 @@ def shard_run_frontend_GPU_4_of_6() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2392,7 +2379,7 @@ def shard_run_frontend_GPU_5_of_6() { 'TVM_SHARD_INDEX=4', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2437,7 +2424,7 @@ def shard_run_frontend_GPU_6_of_6() { 'TVM_SHARD_INDEX=5', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -2483,12 +2470,13 @@ def shard_run_topi_aarch64_1_of_2() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) ci_setup(ci_arm) cpp_unittest(ci_arm) + micro_cpp_unittest(ci_arm) sh ( script: "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh", label: 'Run test_arm_compute_lib test', @@ -2533,7 +2521,7 @@ def shard_run_topi_aarch64_2_of_2() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -2583,7 +2571,7 @@ def shard_run_frontend_aarch64_1_of_2() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -2628,7 +2616,7 @@ def shard_run_frontend_aarch64_2_of_2() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/arm", label: 'Download artifacts from S3', ) @@ -2674,12 +2662,13 @@ def shard_run_test_Cortex_M_1_of_12() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) ci_setup(ci_cortexm) cpp_unittest(ci_cortexm) + micro_cpp_unittest(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_demo_microtvm.sh", label: 'Run microTVM demos', @@ -2724,7 +2713,7 @@ def shard_run_test_Cortex_M_2_of_12() { 'TVM_SHARD_INDEX=1', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -2769,7 +2758,7 @@ def shard_run_test_Cortex_M_3_of_12() { 'TVM_SHARD_INDEX=2', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -2814,7 +2803,7 @@ def shard_run_test_Cortex_M_4_of_12() { 'TVM_SHARD_INDEX=3', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -2859,7 +2848,7 @@ def shard_run_test_Cortex_M_5_of_12() { 'TVM_SHARD_INDEX=4', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -2904,7 +2893,7 @@ def shard_run_test_Cortex_M_6_of_12() { 'TVM_SHARD_INDEX=5', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -2949,7 +2938,7 @@ def shard_run_test_Cortex_M_7_of_12() { 'TVM_SHARD_INDEX=6', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -2994,7 +2983,7 @@ def shard_run_test_Cortex_M_8_of_12() { 'TVM_SHARD_INDEX=7', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -3039,7 +3028,7 @@ def shard_run_test_Cortex_M_9_of_12() { 'TVM_SHARD_INDEX=8', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -3084,7 +3073,7 @@ def shard_run_test_Cortex_M_10_of_12() { 'TVM_SHARD_INDEX=9', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -3129,7 +3118,7 @@ def shard_run_test_Cortex_M_11_of_12() { 'TVM_SHARD_INDEX=10', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -3174,7 +3163,7 @@ def shard_run_test_Cortex_M_12_of_12() { 'TVM_SHARD_INDEX=11', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cortexm", label: 'Download artifacts from S3', ) @@ -3220,12 +3209,13 @@ def shard_run_test_RISC_V_1_of_1() { 'TVM_SHARD_INDEX=0', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/riscv --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/riscv", label: 'Download artifacts from S3', ) ci_setup(ci_riscv) cpp_unittest(ci_cortexm) + micro_cpp_unittest(ci_cortexm) sh ( script: "${docker_run} ${ci_riscv} ./tests/scripts/task_riscv_microtvm.sh", label: 'Run microTVM tests', @@ -3262,7 +3252,7 @@ def run_unittest_minimal() { docker_init(ci_minimal) withEnv(['PLATFORM=minimal'], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu-minimal --items build/libtvm.so build/libtvm_runtime.so build/config.cmake build/cpptest", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu-minimal", label: 'Download artifacts from S3', ) @@ -3454,12 +3444,13 @@ stage('Test') { 'TEST_STEP_NAME=unittest: CPU', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libvta_tsim.so build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/cpptest build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu", label: 'Download artifacts from S3', ) ci_setup(ci_cpu) cpp_unittest(ci_cpu) + micro_cpp_unittest(ci_cpu) python_unittest(ci_cpu) fsim_test(ci_cpu) sh ( @@ -3498,7 +3489,7 @@ stage('Test') { 'TEST_STEP_NAME=frontend: CPU', "SKIP_SLOW_TESTS=${skip_slow_tests}"], { sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/cpu", label: 'Download artifacts from S3', ) @@ -3534,7 +3525,7 @@ stage('Test') { init_git() docker_init(ci_gpu) sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu --items build/libtvm.so build/libvta_fsim.so build/libtvm_runtime.so build/config.cmake build/microtvm_template_projects build/standalone_crt", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/gpu", label: 'Download artifacts from S3', ) @@ -3655,7 +3646,7 @@ def deploy() { timeout(time: max_time, unit: 'MINUTES') { init_git() sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/docs --items docs.tgz", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/docs", label: 'Download artifacts from S3', ) diff --git a/ci/jenkins/Build.groovy.j2 b/ci/jenkins/Build.groovy.j2 index 04499712c7b1..914e3e99b659 100644 --- a/ci/jenkins/Build.groovy.j2 +++ b/ci/jenkins/Build.groovy.j2 @@ -56,34 +56,6 @@ def cmake_build(image, path, make_flag) { ) } -def add_microtvm_permissions() { - {% for folder in microtvm_template_projects %} - sh( - script: 'find {{ folder }} -type f | grep qemu-hack | xargs chmod +x', - label: 'Add execute permissions for microTVM files', - ) - {% endfor %} -} - -def add_hexagon_permissions() { - {% for folder in hexagon_api %} - sh( - script: 'find {{ folder }} -type f | xargs chmod +x', - label: 'Add execute permissions for hexagon files', - ) - {% endfor %} -} - -def add_crttest_permissions() { - {% for file in crttest %} - sh( - script: 'chmod +x {{ file }}', - label: 'Add execute permissions for crttest', - ) - {% endfor %} -} - - def build() { stage('Build') { environment { @@ -101,7 +73,7 @@ stage('Build') { sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu.sh build" cmake_build("${ci_gpu} --no-gpu", 'build', '-j2') make_standalone_crt("${ci_gpu} --no-gpu", 'build') - {{ m.upload_artifacts(tag='gpu', filenames=tvm_multilib + microtvm_template_projects + crttest + standalone_crt) }} + {{ m.upload_artifacts(tag='gpu', filenames=tvm_multilib + tvm_allvisible + microtvm_template_projects + crttest + standalone_crt) }} // compiler test sh "rm -rf build" @@ -125,7 +97,7 @@ stage('Build') { cmake_build(ci_cpu, 'build', '-j2') make_standalone_crt(ci_cpu, 'build') make_cpp_tests(ci_cpu, 'build') - {{ m.upload_artifacts(tag='cpu', filenames=tvm_multilib_tsim + crttest + cpptest + standalone_crt) }} + {{ m.upload_artifacts(tag='cpu', filenames=tvm_multilib_tsim + tvm_allvisible + crttest + cpptest + standalone_crt) }} ci_setup(ci_cpu) // sh "${docker_run} ${ci_cpu} ./tests/scripts/task_golang.sh" // TODO(@jroesch): need to resolve CI issue will turn back on in follow up patch @@ -145,7 +117,7 @@ stage('Build') { ) cmake_build(ci_minimal, 'build', '-j2') make_cpp_tests(ci_minimal, 'build') - {{ m.upload_artifacts(tag='cpu-minimal', filenames=tvm_lib + cpptest) }} + {{ m.upload_artifacts(tag='cpu-minimal', filenames=tvm_lib + tvm_allvisible + cpptest) }} {% endcall %} {% call m.build_step( @@ -201,7 +173,7 @@ stage('Build') { cmake_build(ci_arm, 'build', '-j4') make_standalone_crt(ci_arm, 'build') make_cpp_tests(ci_arm, 'build') - {{ m.upload_artifacts(tag='arm', filenames=tvm_multilib + cpptest + standalone_crt) }} + {{ m.upload_artifacts(tag='arm', filenames=tvm_multilib + cpptest + crttest + standalone_crt) }} {% endcall %} {% call m.build_step( @@ -218,7 +190,7 @@ stage('Build') { cmake_build(ci_cortexm, 'build', '-j2') make_standalone_crt(ci_cortexm, 'build') make_cpp_tests(ci_cortexm, 'build') - {{ m.upload_artifacts(tag='cortexm', filenames=tvm_lib + crttest + standalone_crt + cpptest + microtvm_template_projects) }} + {{ m.upload_artifacts(tag='cortexm', filenames=tvm_lib + tvm_allvisible + crttest + standalone_crt + cpptest + microtvm_template_projects) }} {% endcall %} {% call m.build_step( @@ -255,7 +227,7 @@ stage('Build') { cmake_build(ci_riscv, 'build', '-j2') make_standalone_crt(ci_riscv, 'build') make_cpp_tests(ci_riscv, 'build') - {{ m.upload_artifacts(tag='riscv', filenames=tvm_lib + crttest + cpptest + microtvm_template_projects) }} + {{ m.upload_artifacts(tag='riscv', filenames=tvm_lib + tvm_allvisible + standalone_crt + crttest + cpptest + microtvm_template_projects) }} {% endcall %} ) diff --git a/ci/jenkins/Deploy.groovy.j2 b/ci/jenkins/Deploy.groovy.j2 index f11d901258f6..9bb6257f7a74 100644 --- a/ci/jenkins/Deploy.groovy.j2 +++ b/ci/jenkins/Deploy.groovy.j2 @@ -91,7 +91,7 @@ def deploy() { ws="tvm/deploy-docs", ) %} init_git() - {{ m.download_artifacts(tag='docs', filenames=["docs.tgz"]) }} + {{ m.download_artifacts(tag='docs') }} deploy_docs() {% endcall %} {% call m.deploy_step( diff --git a/ci/jenkins/Jenkinsfile.j2 b/ci/jenkins/Jenkinsfile.j2 index 5e15b608e2f6..2a3ade049361 100644 --- a/ci/jenkins/Jenkinsfile.j2 +++ b/ci/jenkins/Jenkinsfile.j2 @@ -94,13 +94,14 @@ rebuild_docker_images = false // Filenames for stashing between build and test steps {% set tvm_runtime = ['build/libtvm_runtime.so', 'build/config.cmake'] %} {% set crttest = ['build/crttest'] %} -{% set cpptest = ['build/cpptest'] %} +{% set tvm_allvisible = ['build/libtvm_allvisible.so'] %} +{% set cpptest = ['build/cpptest', 'build/build.ninja', 'build/CMakeFiles/rules.ninja'] %} {% set tvm_lib = ['build/libtvm.so'] + tvm_runtime %} {% set tvm_multilib = ['build/libtvm.so', 'build/libvta_fsim.so'] + tvm_runtime %} {% set tvm_multilib_tsim = ['build/libvta_tsim.so'] + tvm_multilib %} {% set microtvm_template_projects = ['build/microtvm_template_projects',] %} {% set hexagon_api = ['build/hexagon_api_output',] %} -{% set standalone_crt = ['build/standalone_crt'] %} +{% set standalone_crt = ['build/standalone_crt', 'build/build.ninja'] %} s3_bucket = 'tvm-jenkins-artifacts-prod' s3_prefix = "tvm/${env.BRANCH_NAME}/${env.BUILD_NUMBER}" diff --git a/ci/jenkins/Test.groovy.j2 b/ci/jenkins/Test.groovy.j2 index 4000e39ab2a9..eb7c8fdc0c0d 100644 --- a/ci/jenkins/Test.groovy.j2 +++ b/ci/jenkins/Test.groovy.j2 @@ -7,6 +7,13 @@ def cpp_unittest(image) { ) } +def micro_cpp_unittest(image) { + sh ( + script: "${docker_run} --env CI_NUM_EXECUTORS ${image} ./tests/scripts/task_microtvm_cpp_tests.sh build", + label: 'Run microTVM C++ tests', + ) +} + // We have to do this whacky split of the code from where it's used since the // JVM limits method length to 64k and we easily exceed that with all this // autogenerated code. This makes it so each test step is in its own method so @@ -21,7 +28,7 @@ def cpp_unittest(image) { test_method_names=test_method_names, ) %} {% if shard_index == 1 %} - {{ m.download_artifacts(tag='gpu2', filenames=tvm_multilib + crttest + standalone_crt) }} + {{ m.download_artifacts(tag='gpu2') }} sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu_other.sh build" // These require a GPU to finish the build (i.e. CUDA needs to be load-able) make_standalone_crt(ci_gpu, 'build') @@ -29,14 +36,15 @@ def cpp_unittest(image) { // cpp_unittest(ci_gpu) sh "rm -rf build" - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib + microtvm_template_projects + crttest + standalone_crt) }} + {{ m.download_artifacts(tag='gpu') }} ci_setup(ci_gpu) sh "${docker_run} --no-gpu ${ci_gpu} ./tests/scripts/task_config_build_gpu.sh build" make_standalone_crt(ci_gpu, 'build') make_cpp_tests(ci_gpu, 'build') cpp_unittest(ci_gpu) + micro_cpp_unittest(ci_gpu) {% else %} - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='gpu') }} ci_setup(ci_gpu) {% endif %} {% if shard_index == 2 or num_shards < 2 %} @@ -63,7 +71,7 @@ def cpp_unittest(image) { docker_image="ci_cpu", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim + standalone_crt) }} + {{ m.download_artifacts(tag='cpu') }} ci_setup(ci_cpu) sh ( script: "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh", @@ -79,10 +87,11 @@ def cpp_unittest(image) { docker_image="ci_i386", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='i386', filenames=tvm_multilib_tsim + standalone_crt + crttest + cpptest) }} + {{ m.download_artifacts(tag='i386') }} ci_setup(ci_i386) {% if shard_index == 1 %} cpp_unittest(ci_i386) + micro_cpp_unittest(ci_i386) {% endif %} python_unittest(ci_i386) sh ( @@ -102,7 +111,7 @@ def cpp_unittest(image) { test_method_names=test_method_names, num_shards=8, ) %} - {{ m.download_artifacts(tag='hexagon', filenames=tvm_lib + hexagon_api + cpptest) }} + {{ m.download_artifacts(tag='hexagon') }} ci_setup(ci_hexagon) {% if shard_index == 1 %} cpp_unittest(ci_hexagon) @@ -121,7 +130,7 @@ def cpp_unittest(image) { docker_image="ci_arm", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='arm', filenames=tvm_multilib + standalone_crt) }} + {{ m.download_artifacts(tag='arm') }} ci_setup(ci_arm) python_unittest(ci_arm) sh ( @@ -138,7 +147,7 @@ def cpp_unittest(image) { docker_image="ci_gpu", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='gpu') }} ci_setup(ci_gpu) sh ( script: "${docker_run} ${ci_gpu} ./tests/scripts/task_python_topi.sh", @@ -154,7 +163,7 @@ def cpp_unittest(image) { docker_image="ci_gpu", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='gpu') }} ci_setup(ci_gpu) sh ( script: "${docker_run} ${ci_gpu} ./tests/scripts/task_python_frontend.sh", @@ -170,10 +179,11 @@ def cpp_unittest(image) { num_shards=2, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='arm', filenames=tvm_multilib + cpptest) }} + {{ m.download_artifacts(tag='arm') }} ci_setup(ci_arm) {% if shard_index == 1 %} cpp_unittest(ci_arm) + micro_cpp_unittest(ci_arm) {% endif %} sh ( script: "${docker_run} ${ci_arm} ./tests/scripts/task_python_arm_compute_library.sh", @@ -193,7 +203,7 @@ def cpp_unittest(image) { num_shards=2, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='arm', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='arm') }} ci_setup(ci_arm) sh ( script: "${docker_run} ${ci_arm} ./tests/scripts/task_python_frontend_cpu.sh", @@ -209,10 +219,11 @@ def cpp_unittest(image) { num_shards=12, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='cortexm', filenames=tvm_lib + microtvm_template_projects + cpptest + standalone_crt) }} + {{ m.download_artifacts(tag='cortexm') }} ci_setup(ci_cortexm) {% if shard_index == 1%} cpp_unittest(ci_cortexm) + micro_cpp_unittest(ci_cortexm) sh ( script: "${docker_run} ${ci_cortexm} ./tests/scripts/task_demo_microtvm.sh", label: 'Run microTVM demos', @@ -232,10 +243,11 @@ def cpp_unittest(image) { num_shards=1, test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='riscv', filenames=tvm_lib + microtvm_template_projects + cpptest) }} + {{ m.download_artifacts(tag='riscv') }} ci_setup(ci_riscv) {% if shard_index == 1%} cpp_unittest(ci_cortexm) + micro_cpp_unittest(ci_cortexm) {% endif %} sh ( script: "${docker_run} ${ci_riscv} ./tests/scripts/task_riscv_microtvm.sh", @@ -251,7 +263,7 @@ def run_unittest_minimal() { platform="minimal", docker_image="ci_minimal", ) %} - {{ m.download_artifacts(tag='cpu-minimal', filenames=tvm_lib + cpptest) }} + {{ m.download_artifacts(tag='cpu-minimal') }} cpp_unittest(ci_minimal) python_unittest(ci_minimal) {% endcall %} @@ -278,9 +290,10 @@ stage('Test') { platform="cpu", docker_image="ci_cpu", ) %} - {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim + cpptest + standalone_crt) }} + {{ m.download_artifacts(tag='cpu') }} ci_setup(ci_cpu) cpp_unittest(ci_cpu) + micro_cpp_unittest(ci_cpu) python_unittest(ci_cpu) fsim_test(ci_cpu) sh ( @@ -295,7 +308,7 @@ stage('Test') { platform="cpu", docker_image="ci_cpu", ) %} - {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='cpu') }} ci_setup(ci_cpu) sh ( script: "${docker_run} ${ci_cpu} ./tests/scripts/task_python_frontend_cpu.sh", @@ -308,7 +321,7 @@ stage('Test') { ws({{ m.per_exec_ws('tvm/docs-python-gpu') }}) { init_git() docker_init(ci_gpu) - {{ m.download_artifacts(tag='gpu', filenames=tvm_multilib + microtvm_template_projects + standalone_crt) }} + {{ m.download_artifacts(tag='gpu') }} timeout(time: 180, unit: 'MINUTES') { ci_setup(ci_gpu) sh ( diff --git a/ci/jenkins/macros.j2 b/ci/jenkins/macros.j2 index 3fec2cc741ca..ff59a4046179 100644 --- a/ci/jenkins/macros.j2 +++ b/ci/jenkins/macros.j2 @@ -191,10 +191,9 @@ sh( ) {% endmacro %} -{% macro download_artifacts(tag, filenames) %} -{% set items = ' '.join(filenames) %} +{% macro download_artifacts(tag) %} sh( - script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/{{ tag }} --items {{ items }}", + script: "./${jenkins_scripts_root}/s3.py --action download --bucket ${s3_bucket} --prefix ${s3_prefix}/{{ tag }}", label: 'Download artifacts from S3', ) {% endmacro %} diff --git a/ci/scripts/jenkins/cmd_utils.py b/ci/scripts/jenkins/cmd_utils.py index 52eaf9ac0ad2..1b282c50ba0f 100644 --- a/ci/scripts/jenkins/cmd_utils.py +++ b/ci/scripts/jenkins/cmd_utils.py @@ -20,6 +20,7 @@ import logging import sys import re +import tempfile from pathlib import Path from typing import List @@ -53,6 +54,16 @@ def __init__(self, env=None, cwd=None): self.env.update(env) self.cwd = cwd + def tee(self, cmd: str, **kwargs): + """ + Run 'cmd' in a shell then return the (process, stdout) as a tuple + """ + with tempfile.NamedTemporaryFile(delete=False) as f: + proc = self.run(f"{cmd} | tee {f.name}", **kwargs) + with open(f.name, "r") as f: + output = f.read() + return proc, output + def run(self, cmd: str, **kwargs): logging.info(f"+ {cmd}") defaults = { diff --git a/ci/scripts/jenkins/s3.py b/ci/scripts/jenkins/s3.py index c823a0fb9a65..f5aa535df8c4 100755 --- a/ci/scripts/jenkins/s3.py +++ b/ci/scripts/jenkins/s3.py @@ -18,11 +18,21 @@ import argparse import logging +import re from pathlib import Path +from typing import List +from enum import Enum from cmd_utils import Sh, REPO_ROOT, init_log RETRY_SCRIPT = REPO_ROOT / "ci" / "scripts" / "jenkins" / "retry.sh" +S3_DOWNLOAD_REGEX = re.compile(r"download: s3://.* to (.*)") +SH = Sh() + + +class Action(Enum): + UPLOAD = 1 + DOWNLOAD = 2 def show_md5(item: str) -> None: @@ -30,10 +40,48 @@ def show_md5(item: str) -> None: sh.run(f"md5sum {item}") -def is_file(bucket: str, prefix: str) -> bool: - cmd = f"aws s3api head-object --bucket {bucket} --key {prefix}" - proc = Sh().run(cmd, check=False) - return proc.returncode == 0 +def parse_output_files(stdout: str) -> List[str]: + """ + Grab the list of downloaded files from the output of 'aws s3 cp'. Lines look + like: + + download: s3://some/prefix/a_file.txt to a_file.txt + """ + files = [] + for line in stdout.split("\n"): + line = line.strip() + if line == "": + continue + m = S3_DOWNLOAD_REGEX.match(line) + if m: + files.append(m.groups()[0]) + + return files + + +def chmod(files: List[str]) -> None: + """ + S3 has no concept of file permissions so add them back in here to every file + """ + # Add execute bit for downloads + to_chmod = [str(f) for f in files] + logging.info(f"Adding execute bit for files: {to_chmod}") + if len(to_chmod) > 0: + SH.run(f"chmod +x {' '.join(to_chmod)}") + + +def s3(source: str, destination: str, recursive: bool) -> List[str]: + """ + Send or download the source to the destination in S3 + """ + cmd = f". {RETRY_SCRIPT.relative_to(REPO_ROOT)} && retry 3 aws s3 cp --no-progress" + + if recursive: + cmd += " --recursive" + + cmd += f" {source} {destination}" + _, stdout = SH.tee(cmd) + return stdout if __name__ == "__main__": @@ -45,7 +93,7 @@ def is_file(bucket: str, prefix: str) -> bool: parser.add_argument( "--prefix", help="s3 bucket + tag (e.g. s3://tvm-ci-prod/PR-1234/cpu", required=True ) - parser.add_argument("--items", help="files and folders to upload", nargs="+", required=True) + parser.add_argument("--items", help="files and folders to upload", nargs="+") args = parser.parse_args() logging.info(args) @@ -61,48 +109,32 @@ def is_file(bucket: str, prefix: str) -> bool: logging.info(f"Using s3 path: {s3_path}") if args.action == "upload": - upload = True + action = Action.UPLOAD elif args.action == "download": - upload = False + action = Action.DOWNLOAD else: logging.error(f"Unsupported action: {args.action}") exit(1) - for item in args.items: - destination = s3_path + "/" + item - recursive_arg = "" - - if upload: - # Show md5 before uploading - show_md5(item) - - # Download/upload the item - cmd = f". {RETRY_SCRIPT.relative_to(REPO_ROOT)} && retry 3 aws s3 cp --no-progress" - if upload and Path(item).is_dir(): - cmd += " --recursive" - if not upload and not is_file(args.bucket, prefix + "/" + item): - cmd += " --recursive" - - if upload: - cmd += f" {item} {destination}" + if args.items is None: + if args.action == "upload": + logging.error(f"Cannot upload without --items") + exit(1) else: - cmd += f" {destination} {item}" - sh.run(cmd) - - if not upload: - to_chmod = [] - print(item) - if Path(item).is_dir(): - to_chmod = [f for f in Path(item).glob("**/*") if not f.is_dir()] - else: - to_chmod = [item] - - # Add execute bit for downloads - to_chmod = [str(f) for f in to_chmod] - logging.info(f"Adding execute bit for files: {to_chmod}") - if len(to_chmod) > 0: - sh.run(f"chmod +x {' '.join(to_chmod)}") - - if not upload: - # Show md5 after downloading + # Download the whole prefix + items = ["."] + + else: + items = args.items + + for item in items: + if action == Action.DOWNLOAD: + stdout = s3(source=s3_path, destination=item, recursive=True) + files = parse_output_files(stdout) + chmod(files) + for file in files: + # Show md5 after downloading + show_md5(file) + elif action == Action.UPLOAD: show_md5(item) + s3(item, s3_path + "/" + item, recursive=Path(item).is_dir()) diff --git a/tests/scripts/task_cpp_unittest.sh b/tests/scripts/task_cpp_unittest.sh index 0df2656a1ea0..bc152dfba34f 100755 --- a/tests/scripts/task_cpp_unittest.sh +++ b/tests/scripts/task_cpp_unittest.sh @@ -38,5 +38,6 @@ export TVM_BIND_THREADS=0 export OMP_NUM_THREADS=1 pushd "${BUILD_DIR}" -ctest --gtest_death_test_style=threadsafe +# run cpp test executable +./cpptest popd diff --git a/tests/scripts/task_microtvm_cpp_tests.sh b/tests/scripts/task_microtvm_cpp_tests.sh index 4e6297d39eec..cc36963afa5b 100755 --- a/tests/scripts/task_microtvm_cpp_tests.sh +++ b/tests/scripts/task_microtvm_cpp_tests.sh @@ -33,9 +33,7 @@ export TVM_BIND_THREADS=0 export OMP_NUM_THREADS=1 # crttest requries USE_MICRO to be enabled. -pushd "${BUILD_DIR}" -ninja crttest -popd +./build/crttest # Test MISRA-C runtime. It requires USE_MICRO to be enabled. pushd apps/bundle_deploy