#!/usr/bin/env bash exit_if_not_on_git_tag() { # Have an override for debugging purposes if [[ -n "${TEST_WITHOUT_GIT_TAG-}" ]] ;then >&2 echo "+ WARN: Continuing without being on a git tag" exit 0 fi # Exit if we're not currently on a git tag if ! git describe --tags --exact >/dev/null 2>/dev/null; then >&2 echo "- ERROR: Attempting to promote on a non-git tag, must have tagged current commit locally first" exit 1 fi # Exit if we're currently on an RC if git describe --tags | grep "-rc" >/dev/null 2>/dev/null; then >&2 echo "- ERROR: Attempting to promote on a non GA git tag, current tag must be a GA tag" >&2 echo " Example: v1.5.0" exit 1 fi } get_pytorch_version() { if [[ -n "${TEST_WITHOUT_GIT_TAG-}" ]];then if [[ -z "${TEST_PYTORCH_PROMOTE_VERSION-}" ]]; then >&2 echo "- ERROR: Specified TEST_WITHOUT_GIT_TAG without specifying TEST_PYTORCH_PROMOTE_VERSION" >&2 echo "- TEST_PYTORCH_PROMOTE_VERSION must be specified" exit 1 else echo "${TEST_PYTORCH_PROMOTE_VERSION}" exit 0 fi fi exit_if_not_on_git_tag # Echo git tag, strip leading v git describe --tags | sed -e 's/^v//' } aws_promote() { package_name=$1 pytorch_version=$(get_pytorch_version) # Dry run by default DRY_RUN=${DRY_RUN:-enabled} DRY_RUN_FLAG="--dryrun" if [[ $DRY_RUN = "disabled" ]]; then DRY_RUN_FLAG="" fi AWS=${AWS:-aws} ( set -x ${AWS} s3 cp ${DRY_RUN_FLAG} \ --only-show-errors \ --acl public-read \ --recursive \ --exclude '*' \ --include "*${package_name}-${pytorch_version}*" \ "${PYTORCH_S3_FROM/\/$//}" \ "${PYTORCH_S3_TO/\/$//}" ) # ^ We grep for package_name-.*pytorch_version to avoid any situations where domain libraries have # the same version on our S3 buckets }