@@ -5,12 +5,16 @@ set -euo pipefail
55
66CODEBUILD_IMAGE_TAG=" ${CODEBUILD_IMAGE_TAG:- al2/ x86_64/ standard/ 3.0} "
77DRYRUN=" ${DRYRUN-0} "
8+ # When set, only the matching platform from each buildspec is run. Used by CI to
9+ # run each architecture on its own native runner instead of emulating via QEMU.
10+ PLATFORM_FILTER=" ${PLATFORM_FILTER-} "
811
912function usage {
10- echo " usage: test_all.sh buildspec_yml_dir "
13+ echo " usage: test_all.sh buildspec_yml_dir_or_file "
1114 echo " Runs all buildspec build-matrix combinations via test_one.sh."
1215 echo " Required:"
13- echo " buildspec_yml_dir Used to specify the CodeBuild buildspec template file."
16+ echo " buildspec_yml_dir_or_file A directory of buildspec templates (runs every *.yml),"
17+ echo " or a single buildspec .yml file."
1418}
1519
1620do_one_yaml () {
@@ -21,6 +25,10 @@ do_one_yaml() {
2125 RUNTIME_VERSIONS=$( sed ' 1,/RUNTIME_VERSION/d;/PLATFORM/,$d' " $YML " | sed ' /#.*$/d' | tr -d ' \-" ' )
2226 PLATFORMS=$( sed ' 1,/PLATFORM/d;/phases/,$d' " $YML " | tr -d ' \-" ' )
2327
28+ if [ -n " $PLATFORM_FILTER " ]; then
29+ PLATFORMS=" $PLATFORM_FILTER "
30+ fi
31+
2432 for DISTRO_VERSION in $DISTRO_VERSIONS ; do
2533 for RUNTIME_VERSION in $RUNTIME_VERSIONS ; do
2634 for PLATFORM in $PLATFORMS ; do
@@ -56,9 +64,16 @@ main() {
5664 usage
5765 exit 1
5866 fi
59- BUILDSPEC_YML_DIR=" $1 "
67+ BUILDSPEC_YML_PATH=" $1 "
68+
69+ # Allow passing a single buildspec file so CI can parallelize per OS.
70+ if [ -f " $BUILDSPEC_YML_PATH " ]; then
71+ do_one_yaml " $BUILDSPEC_YML_PATH "
72+ return
73+ fi
74+
6075 HAS_YML=0
61- for f in " $BUILDSPEC_YML_DIR " /* .yml ; do
76+ for f in " $BUILDSPEC_YML_PATH " /* .yml ; do
6277 [ -f " $f " ] || continue ;
6378 do_one_yaml " $f "
6479 HAS_YML=1
0 commit comments