diff --git a/Jenkinsfile b/Jenkinsfile index 9fd926430b6a..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-14T12:32:18.663464 +// 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. --> @@ -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,57 +692,43 @@ 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', - ) -} - -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', + 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 add_hexagon_permissions() { - sh( - script: 'find build/hexagon_api_output -type f | xargs chmod +x', - label: 'Add execute permissions for hexagon files', +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', ) } -// 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 build() { stage('Build') { environment { @@ -757,41 +744,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/libtvm_allvisible.so build/microtvm_template_projects build/crttest build/standalone_crt build/build.ninja", 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 build/build.ninja", label: 'Upload artifacts to S3', ) } @@ -813,22 +780,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/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', ) @@ -855,18 +811,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/libtvm_allvisible.so build/cpptest build/build.ninja build/CMakeFiles/rules.ninja", label: 'Upload artifacts to S3', ) } @@ -888,7 +836,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 +864,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/build.ninja build/crttest build/cpptest build/build.ninja build/CMakeFiles/rules.ninja", label: 'Upload artifacts to S3', ) } @@ -951,20 +890,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/build.ninja build/CMakeFiles/rules.ninja build/crttest build/standalone_crt build/build.ninja", label: 'Upload artifacts to S3', ) } @@ -986,19 +916,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/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', ) } @@ -1020,23 +942,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/build.ninja build/CMakeFiles/rules.ninja build/hexagon_api_output", label: 'Upload artifacts to S3', ) } @@ -1058,19 +971,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/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', ) } @@ -1085,6 +990,20 @@ 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', + ) +} + +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 @@ -1105,41 +1024,28 @@ 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", + 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", + 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) + micro_cpp_unittest(ci_gpu) sh ( script: "${docker_run} ${ci_gpu} ./tests/scripts/task_python_unittest_gpuonly.sh", label: 'Run Python GPU unit tests', @@ -1153,11 +1059,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 +1090,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -1221,11 +1112,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 +1143,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -1285,11 +1161,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 +1193,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1348,11 +1207,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 +1238,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1410,11 +1252,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 +1283,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1472,11 +1297,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 +1328,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -1534,11 +1342,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,23 +1374,13 @@ 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", + 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", @@ -1597,11 +1391,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 +1422,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_i386) python_unittest(ci_i386) @@ -1659,11 +1438,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 +1469,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_i386) python_unittest(ci_i386) @@ -1720,11 +1484,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 +1516,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", + label: 'Download artifacts from S3', + ) - add_hexagon_permissions() ci_setup(ci_hexagon) cpp_unittest(ci_hexagon) sh ( @@ -1782,11 +1531,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 +1562,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", + 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 +1576,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 +1607,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", + 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 +1621,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 +1652,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", + 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 +1666,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 +1697,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", + 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 +1711,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 +1742,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", + 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 +1756,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 +1787,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", + 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 +1801,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 +1832,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", + 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 +1846,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 +1878,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2264,11 +1893,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 +1924,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2325,11 +1939,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 +1970,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2386,11 +1985,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 +2016,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) python_unittest(ci_arm) @@ -2447,11 +2031,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 +2063,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2508,11 +2077,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 +2108,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2568,11 +2122,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 +2153,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2628,11 +2167,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 +2199,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2689,11 +2213,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 +2244,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2749,11 +2258,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 +2289,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2809,11 +2303,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 +2334,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2869,11 +2348,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 +2379,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2929,11 +2393,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 +2424,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_gpu) sh ( @@ -2989,11 +2438,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,23 +2470,13 @@ 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", + 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', @@ -3055,11 +2490,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 +2521,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) sh ( @@ -3119,11 +2539,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 +2571,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) sh ( @@ -3180,11 +2585,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 +2616,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_arm) sh ( @@ -3240,11 +2630,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,23 +2662,13 @@ 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", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() 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', @@ -3306,11 +2682,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 +2713,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", + 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 +2727,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 +2758,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", + 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 +2772,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 +2803,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", + 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 +2817,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 +2848,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", + 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 +2862,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 +2893,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", + 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 +2907,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 +2938,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", + 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 +2952,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 +2983,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", + 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 +2997,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 +3028,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", + 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 +3042,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 +3073,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", + 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 +3087,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 +3118,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", + 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 +3132,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 +3163,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", + 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 +3177,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,23 +3209,13 @@ 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", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() 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', @@ -4028,11 +3225,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 +3252,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", + label: 'Download artifacts from S3', + ) cpp_unittest(ci_minimal) python_unittest(ci_minimal) @@ -4078,11 +3262,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,25 +3444,13 @@ 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", + 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 ( @@ -4293,11 +3461,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 +3489,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", + label: 'Download artifacts from S3', + ) ci_setup(ci_cpu) sh ( @@ -4349,11 +3502,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 +3525,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", + label: 'Download artifacts from S3', + ) - add_microtvm_permissions() timeout(time: 180, unit: 'MINUTES') { ci_setup(ci_gpu) sh ( @@ -4401,17 +3537,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 +3646,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", + label: 'Download artifacts from S3', + ) deploy_docs() } diff --git a/ci/jenkins/Build.groovy.j2 b/ci/jenkins/Build.groovy.j2 index 49cffacdc16e..914e3e99b659 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,61 +19,43 @@ 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 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', +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', ) - {% 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 build() { stage('Build') { environment { @@ -89,13 +71,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 + tvm_allvisible + 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 +94,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 + 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 @@ -128,8 +115,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 + tvm_allvisible + cpptest) }} {% endcall %} {% call m.build_step( @@ -143,7 +131,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 +153,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 +170,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 + crttest + standalone_crt) }} {% endcall %} {% call m.build_step( @@ -193,8 +187,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 + tvm_allvisible + crttest + standalone_crt + cpptest + microtvm_template_projects) }} {% endcall %} {% call m.build_step( @@ -208,12 +204,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 +224,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 + 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 7ceef81e4e7c..2a3ade049361 100644 --- a/ci/jenkins/Jenkinsfile.j2 +++ b/ci/jenkins/Jenkinsfile.j2 @@ -93,12 +93,17 @@ 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 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',] %} -s3_prefix = "tvm-jenkins-artifacts-prod/tvm/${env.BRANCH_NAME}/${env.BUILD_NUMBER}" +{% set standalone_crt = ['build/standalone_crt', 'build/build.ninja'] %} +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..eb7c8fdc0c0d 100644 --- a/ci/jenkins/Test.groovy.j2 +++ b/ci/jenkins/Test.groovy.j2 @@ -1,5 +1,19 @@ {% 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', + ) +} + +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 @@ -14,14 +28,23 @@ 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') }} + 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') }} 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 %} @@ -48,7 +71,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') }} ci_setup(ci_cpu) sh ( script: "${docker_run} ${ci_cpu} ./tests/scripts/task_python_integration.sh", @@ -64,10 +87,11 @@ docker_image="ci_i386", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='i386', filenames=tvm_multilib) }} + {{ 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 ( @@ -87,8 +111,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') }} ci_setup(ci_hexagon) {% if shard_index == 1 %} cpp_unittest(ci_hexagon) @@ -107,7 +130,7 @@ docker_image="ci_arm", test_method_names=test_method_names, ) %} - {{ m.download_artifacts(tag='arm', filenames=tvm_multilib) }} + {{ m.download_artifacts(tag='arm') }} ci_setup(ci_arm) python_unittest(ci_arm) sh ( @@ -124,7 +147,7 @@ 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", @@ -140,7 +163,7 @@ 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", @@ -156,10 +179,11 @@ 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) {% 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", @@ -179,7 +203,7 @@ 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", @@ -195,11 +219,11 @@ 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') }} 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', @@ -219,11 +243,11 @@ 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') }} 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", @@ -239,7 +263,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') }} cpp_unittest(ci_minimal) python_unittest(ci_minimal) {% endcall %} @@ -266,9 +290,10 @@ stage('Test') { platform="cpu", docker_image="ci_cpu", ) %} - {{ m.download_artifacts(tag='cpu', filenames=tvm_multilib_tsim) }} + {{ 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 ( @@ -283,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", @@ -296,8 +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, folders=microtvm_template_projects) }} - add_microtvm_permissions() + {{ m.download_artifacts(tag='gpu') }} timeout(time: 180, unit: 'MINUTES') { ci_setup(ci_gpu) sh ( @@ -307,7 +331,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..ff59a4046179 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,17 @@ 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) %} 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 }}", + 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 new file mode 100755 index 000000000000..f5aa535df8c4 --- /dev/null +++ b/ci/scripts/jenkins/s3.py @@ -0,0 +1,140 @@ +#!/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 +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: + if not Path(item).is_dir(): + sh.run(f"md5sum {item}") + + +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__": + 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="+") + + 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": + action = Action.UPLOAD + elif args.action == "download": + action = Action.DOWNLOAD + else: + logging.error(f"Unsupported action: {args.action}") + exit(1) + + if args.items is None: + if args.action == "upload": + logging.error(f"Cannot upload without --items") + exit(1) + else: + # 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_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..bc152dfba34f 100755 --- a/tests/scripts/task_cpp_unittest.sh +++ b/tests/scripts/task_cpp_unittest.sh @@ -28,38 +28,16 @@ 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 +# run cpp test executable +./cpptest 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..cc36963afa5b --- /dev/null +++ b/tests/scripts/task_microtvm_cpp_tests.sh @@ -0,0 +1,42 @@ +#!/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. +./build/crttest + +# Test MISRA-C runtime. It requires USE_MICRO to be enabled. +pushd apps/bundle_deploy +rm -rf build +make test_dynamic test_static +popd