diff options
Diffstat (limited to 'scripts/publish_binary_size.sh')
-rwxr-xr-x | scripts/publish_binary_size.sh | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/scripts/publish_binary_size.sh b/scripts/publish_binary_size.sh new file mode 100755 index 0000000000..d5ab71b8c4 --- /dev/null +++ b/scripts/publish_binary_size.sh @@ -0,0 +1,75 @@ +#!/usr/bin/env bash + +set -e +set -o pipefail +set -u + +# Downloads log data from AWS CloudWatch and uploads it as a JSON file to S3 for public access. + +function publish_binary_size { + local DIMENSIONS=$1 + + if [ -z "${DIMENSIONS}" ]; then + echo "* No dimensions specified" + exit 1 + fi + + function print_dimensions { + for ITEM in ${DIMENSIONS//,/ } ; do + echo -n "Name=${ITEM//=/,Value=} " + done + } + + local DATE_FORMAT="%Y-%m-%dT%H:%M:%SZ" + local DATE_END=$(date -u +${DATE_FORMAT}) + + if [ `uname -s` = 'Darwin' ]; then # BSD date + local DATE_BEGIN=$(date -jf "${DATE_FORMAT}" -v-30d "${DATE_END}" +"${DATE_FORMAT}") + else # GNU date + local DATE_BEGIN=$(date --date="${DATE_END} - 30 days" +"${DATE_FORMAT}") + fi + + # Download the metrics, gzip, and upload to S3. + aws --region us-east-1 cloudwatch get-metric-statistics \ + --namespace "Mapbox/GL" \ + --metric-name "BinarySize" \ + --unit "Bytes" \ + --start-time "${DATE_BEGIN}" \ + --end-time "${DATE_END}" \ + --period 3600 \ + --statistics Maximum \ + --dimensions `print_dimensions` \ + | gzip | aws s3 cp \ + --acl public-read \ + --cache-control "max-age=300" \ + --content-encoding gzip \ + --content-type application/json \ + - "s3://mapbox/mapbox-gl-native/metrics/binary-size/${DIMENSIONS}.json" + + echo "* Uploaded data to 's3://mapbox/mapbox-gl-native/metrics/binary-size/${DIMENSIONS}.json'" +} + +if [ $# -gt 0 ]; then + # Upload the specified dimension only + publish_binary_size "$1" +else + # Upload all dimensions that we are tracking + publish_binary_size "Platform=iOS,Arch=armv7" + publish_binary_size "Platform=iOS,Arch=arm64" + publish_binary_size "Platform=iOS,Arch=i386" + publish_binary_size "Platform=iOS,Arch=x86_64" + publish_binary_size "Platform=iOS,Arch=Dynamic" + + publish_binary_size "Platform=macOS,Arch=x86_64" + + publish_binary_size "Platform=Linux,Compiler=clang-3.8,Arch=x86_64" + publish_binary_size "Platform=Linux,Compiler=gcc-5,Arch=x86_64" + + publish_binary_size "Platform=Android,Arch=arm-v5" + publish_binary_size "Platform=Android,Arch=arm-v7" + publish_binary_size "Platform=Android,Arch=arm-v8" + publish_binary_size "Platform=Android,Arch=x86" + publish_binary_size "Platform=Android,Arch=x86_64" + publish_binary_size "Platform=Android,Arch=mips" + publish_binary_size "Platform=Android,Arch=Archive" +fi |