| #!/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 | |
| } |