diff --git a/.circleci/cimodel/data/pytorch_build_definitions.py b/.circleci/cimodel/data/pytorch_build_definitions.py index b560aa33bd6..6ef69b616e0 100644 --- a/.circleci/cimodel/data/pytorch_build_definitions.py +++ b/.circleci/cimodel/data/pytorch_build_definitions.py @@ -11,6 +11,11 @@ from typing import List, Optional DOCKER_IMAGE_PATH_BASE = "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/" +# ARE YOU EDITING THIS NUMBER? MAKE SURE YOU READ THE GUIDANCE AT THE +# TOP OF .circleci/config.yml +DOCKER_IMAGE_VERSION = "9a3986fa-7ce7-4a36-a001-3c9bef9892e2" + + @dataclass class Conf: distro: str @@ -55,14 +60,11 @@ class Conf: return result def gen_docker_image_path(self): - return miniutils.quote( - DOCKER_IMAGE_PATH_BASE + self.gen_docker_image_name() - ) - def gen_docker_image_name(self): parms_source = self.parent_build or self base_build_env_name = "-".join(parms_source.get_parms(True)) - return base_build_env_name + + return miniutils.quote(DOCKER_IMAGE_PATH_BASE + base_build_env_name + ":" + str(DOCKER_IMAGE_VERSION)) def get_build_job_name_pieces(self, build_or_test): return self.get_parms(False) + [build_or_test] @@ -95,9 +97,6 @@ class Conf: job_def["name"] = self.gen_build_name(phase) job_def["requires"] = ["setup"] - if phase == "build": - job_def["requires"].append(miniutils.quote("docker-" + self.gen_docker_image_name())) - if phase == "test": # TODO When merging the caffe2 and pytorch jobs, it might be convenient for a while to make a diff --git a/.circleci/config.yml b/.circleci/config.yml index 481d7889da5..c0db5477b3b 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -39,21 +39,6 @@ commands: name: Attaching workspace at: ~/workspace - # Must be run after attaching workspace from previous steps - load_shared_env: - description: "Loads .circleci/shared/env_file into ${BASH_ENV}" - parameters: - # For some weird reason we decide to reattach our workspace to ~/workspace so - # in the vein of making it simple let's assume our share env_file is here - root: - type: string - default: "~/workspace" - steps: - - run: - name: "Load .circleci/shared/env_file into ${BASH_ENV}" - command: | - cat << parameters.root >>/.circleci/shared/env_file >> ${BASH_ENV} - # This system setup script is meant to run before the CI-related scripts, e.g., # installing Git client, checking out code, setting up CI env, and # building/testing. @@ -416,7 +401,6 @@ jobs: steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - checkout - optional_merge_target_branch @@ -427,9 +411,9 @@ jobs: command: | set -e # Pull Docker image and run build - echo "DOCKER_IMAGE: "${DOCKER_IMAGE}:${DOCKER_TAG} - time docker pull ${DOCKER_IMAGE}:${DOCKER_TAG} >/dev/null - export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}:${DOCKER_TAG}) + echo "DOCKER_IMAGE: "${DOCKER_IMAGE} + time docker pull ${DOCKER_IMAGE} >/dev/null + export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}) git submodule sync && git submodule update -q --init --recursive @@ -452,7 +436,7 @@ jobs: # The xla build uses the same docker image as # pytorch-linux-trusty-py3.6-gcc5.4-build. In the push step, we have to # distinguish between them so the test can pick up the correct image. - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-${CIRCLE_SHA1} if [[ ${BUILD_ENVIRONMENT} == *"xla"* ]]; then export COMMIT_DOCKER_IMAGE=$output_image-xla elif [[ ${BUILD_ENVIRONMENT} == *"libtorch"* ]]; then @@ -479,7 +463,6 @@ jobs: steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -488,7 +471,7 @@ jobs: command: | set -e # See Note [Special build images] - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-${CIRCLE_SHA1} if [[ ${BUILD_ENVIRONMENT} == *"xla"* ]]; then export COMMIT_DOCKER_IMAGE=$output_image-xla elif [[ ${BUILD_ENVIRONMENT} == *"libtorch"* ]]; then @@ -1296,14 +1279,13 @@ jobs: environment: BUILD_ENVIRONMENT: pytorch-python-doc-push # TODO: stop hardcoding this - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large machine: image: ubuntu-1604:201903-01 steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -1311,7 +1293,7 @@ jobs: no_output_timeout: "1h" command: | set -ex - export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1} echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} time docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE}) @@ -1348,14 +1330,13 @@ jobs: pytorch_cpp_doc_push: environment: BUILD_ENVIRONMENT: pytorch-cpp-doc-push - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large machine: image: ubuntu-1604:201903-01 steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -1363,7 +1344,7 @@ jobs: no_output_timeout: "1h" command: | set -ex - export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1} echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} time docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE}) @@ -1459,7 +1440,7 @@ jobs: pytorch_android_gradle_build: environment: BUILD_ENVIRONMENT: pytorch-linux-xenial-py3-clang5-android-ndk-r19c-gradle-build - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" PYTHON_VERSION: "3.6" resource_class: large machine: @@ -1474,7 +1455,7 @@ jobs: no_output_timeout: "1h" command: | set -eux - docker_image_commit=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + docker_image_commit=${DOCKER_IMAGE}-${CIRCLE_SHA1} docker_image_libtorch_android_x86_32=${docker_image_commit}-android-x86_32 docker_image_libtorch_android_x86_64=${docker_image_commit}-android-x86_64 @@ -1545,14 +1526,13 @@ jobs: pytorch_android_publish_snapshot: environment: BUILD_ENVIRONMENT: pytorch-linux-xenial-py3-clang5-android-ndk-r19c-gradle-publish-snapshot - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" PYTHON_VERSION: "3.6" resource_class: large machine: image: ubuntu-1604:201903-01 steps: - attach_scripts - - load_shared_env - setup_linux_system_environment - checkout - setup_ci_environment @@ -1561,7 +1541,7 @@ jobs: no_output_timeout: "1h" command: | set -eux - docker_image_commit=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + docker_image_commit=${DOCKER_IMAGE}-${CIRCLE_SHA1} docker_image_libtorch_android_x86_32_gradle=${docker_image_commit}-android-x86_32-gradle @@ -1582,14 +1562,13 @@ jobs: pytorch_android_gradle_build-x86_32: environment: BUILD_ENVIRONMENT: pytorch-linux-xenial-py3-clang5-android-ndk-r19c-gradle-build-only-x86_32 - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" PYTHON_VERSION: "3.6" resource_class: large machine: image: ubuntu-1604:201903-01 steps: - attach_scripts - - load_shared_env - run: name: filter out not PR runs no_output_timeout: "5m" @@ -1606,7 +1585,7 @@ jobs: no_output_timeout: "1h" command: | set -e - docker_image_libtorch_android_x86_32=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1}-android-x86_32 + docker_image_libtorch_android_x86_32=${DOCKER_IMAGE}-${CIRCLE_SHA1}-android-x86_32 echo "docker_image_libtorch_android_x86_32: "${docker_image_libtorch_android_x86_32} # x86 @@ -1751,7 +1730,6 @@ jobs: steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - checkout - setup_ci_environment @@ -1761,9 +1739,9 @@ jobs: command: | set -e # Pull Docker image and run build - echo "DOCKER_IMAGE: "${DOCKER_IMAGE}:${DOCKER_TAG} - time docker pull ${DOCKER_IMAGE}:${DOCKER_TAG} >/dev/null - export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}:${DOCKER_TAG}) + echo "DOCKER_IMAGE: "${DOCKER_IMAGE} + time docker pull ${DOCKER_IMAGE} >/dev/null + export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}) echo "Do NOT merge master branch into $CIRCLE_BRANCH in environment $BUILD_ENVIRONMENT" @@ -1778,7 +1756,7 @@ jobs: # Push intermediate Docker image for next phase to use if [ -z "${BUILD_ONLY}" ]; then # Augment our output image name with bazel to avoid collisions - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-bazel-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-bazel-${CIRCLE_SHA1} export COMMIT_DOCKER_IMAGE=$output_image docker commit "$id" ${COMMIT_DOCKER_IMAGE} time docker push ${COMMIT_DOCKER_IMAGE} @@ -1791,7 +1769,6 @@ jobs: steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -1799,7 +1776,7 @@ jobs: no_output_timeout: "90m" command: | set -e - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-bazel-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-bazel-${CIRCLE_SHA1} export COMMIT_DOCKER_IMAGE=$output_image echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} @@ -1832,14 +1809,14 @@ jobs: pytorch_doc_test: environment: BUILD_ENVIRONMENT: pytorch-doc-test - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + # TODO: stop hardcoding this + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: medium machine: image: ubuntu-1604:201903-01 steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -1847,7 +1824,7 @@ jobs: no_output_timeout: "30m" command: | set -ex - export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1} echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} time docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE}) @@ -1991,45 +1968,8 @@ jobs: resource_class: large environment: IMAGE_NAME: << parameters.image_name >> - # Enable 'docker manifest' - DOCKER_CLI_EXPERIMENTAL: "enabled" - DOCKER_BUILDKIT: 1 steps: - checkout - - run: - name: Calculate docker tag - command: | - set -x - mkdir .circleci/shared - # git keeps a hash of all sub trees - echo "export DOCKER_TAG=$(git rev-parse HEAD:.circleci/docker)" >> .circleci/shared/env_file - # Saves our calculated docker tag to our workpace for later use - - persist_to_workspace: - root: . - paths: - - .circleci/shared/ - - load_shared_env: - root: . - - run: - name: Check if image should be built - command: | - set +x - export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} - export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} - eval $(aws ecr get-login --no-include-email --region us-east-1) - set -x - # Check if image already exists, if it does then skip building it - if docker manifest inspect "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/${IMAGE_NAME}:${DOCKER_TAG}"; then - circleci-agent step halt - fi - PREVIOUS_DOCKER_TAG=$(git rev-parse "$(git merge-base HEAD << pipeline.git.base_revision >>):.circleci/docker") - # If no image exists but the hash is the same as the previous hash then we should error out here - # no stampeding herd effect plz. - if [[ ${PREVIOUS_DOCKER_TAG} = ${DOCKER_TAG} ]]; then - echo "ERROR: Something has gone wrong and the previous image isn't available for the merge-base of your branch" - echo " contact the PyTorch team to restore the original images" - exit 1 - fi - run: name: build_docker_image_<< parameters.image_name >> no_output_timeout: "1h" @@ -2038,9 +1978,7 @@ jobs: export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} set -x - source .circleci/shared/env_file cd .circleci/docker && ./build_docker.sh - docker_for_ecr_gc_build_job: machine: image: ubuntu-1604:201903-01 @@ -2067,25 +2005,14 @@ jobs: type: string environment: PROJECT: << parameters.project >> - # TODO: Remove legacy image tags once we feel comfortable with new docker image tags IMAGE_TAG: << parameters.tags_to_keep >> docker: - image: 308535385114.dkr.ecr.us-east-1.amazonaws.com/gc/ecr aws_auth: aws_access_key_id: ${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} aws_secret_access_key: ${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} + steps: - - checkout - - run: - # NOTE: see 'docker_build_job' for how these tags actually get built - name: dynamically generate tags to keep - no_output_timeout: "1h" - command: | - GENERATED_IMAGE_TAG=$(\ - git log --oneline --pretty='%H' .circleci/docker \ - | xargs -I '{}' git rev-parse '{}:.circleci/docker' \ - | paste -sd "," -) - echo "export GENERATED_IMAGE_TAG='${GENERATED_IMAGE_TAG}'" >> ${BASH_ENV} - run: name: garbage collecting for ecr images no_output_timeout: "1h" @@ -2094,7 +2021,7 @@ jobs: export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} set -x - /usr/bin/gc.py --filter-prefix ${PROJECT} --ignore-tags "${IMAGE_TAG},${GENERATED_IMAGE_TAG}" + /usr/bin/gc.py --filter-prefix ${PROJECT} --ignore-tags ${IMAGE_TAG} docker_hub_index_job: docker: @@ -2471,7 +2398,6 @@ workflows: name: pytorch_linux_xenial_pynightly_build requires: - setup - - "docker-pytorch-linux-xenial-pynightly" filters: branches: only: @@ -2479,7 +2405,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-pynightly-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-pynightly" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-pynightly:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_pynightly_test requires: @@ -2492,22 +2418,21 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-pynightly-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-pynightly" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-pynightly:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_linux_xenial_py3_6_gcc5_4_build requires: - setup - - "docker-pytorch-linux-xenial-py3.6-gcc5.4" build_environment: "pytorch-linux-xenial-py3.6-gcc5.4-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_py3_6_gcc5_4_test requires: - setup - pytorch_linux_xenial_py3_6_gcc5_4_build build_environment: "pytorch-linux-xenial-py3.6-gcc5.4-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_python_doc_push: requires: @@ -2524,13 +2449,12 @@ workflows: - setup - pytorch_linux_xenial_py3_6_gcc5_4_build build_environment: "pytorch-linux-backward-compatibility-check-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_paralleltbb_linux_xenial_py3_6_gcc5_4_build requires: - setup - - "docker-pytorch-linux-xenial-py3.6-gcc5.4" filters: branches: only: @@ -2538,7 +2462,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-paralleltbb-linux-xenial-py3.6-gcc5.4-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_paralleltbb_linux_xenial_py3_6_gcc5_4_test requires: @@ -2551,13 +2475,12 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-paralleltbb-linux-xenial-py3.6-gcc5.4-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_parallelnative_linux_xenial_py3_6_gcc5_4_build requires: - setup - - "docker-pytorch-linux-xenial-py3.6-gcc5.4" filters: branches: only: @@ -2565,7 +2488,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-parallelnative-linux-xenial-py3.6-gcc5.4-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_parallelnative_linux_xenial_py3_6_gcc5_4_test requires: @@ -2578,13 +2501,12 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-parallelnative-linux-xenial-py3.6-gcc5.4-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_linux_xenial_py3_6_gcc7_build requires: - setup - - "docker-pytorch-linux-xenial-py3.6-gcc7" filters: branches: only: @@ -2592,7 +2514,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-py3.6-gcc7-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_py3_6_gcc7_test requires: @@ -2605,28 +2527,26 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-py3.6-gcc7-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_asan_build requires: - setup - - "docker-pytorch-linux-xenial-py3-clang5-asan" build_environment: "pytorch-linux-xenial-py3-clang5-asan-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_py3_clang5_asan_test requires: - setup - pytorch_linux_xenial_py3_clang5_asan_build build_environment: "pytorch-linux-xenial-py3-clang5-asan-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_linux_xenial_cuda9_2_cudnn7_py3_gcc7_build requires: - setup - - "docker-pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" filters: branches: only: @@ -2634,7 +2554,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_cuda9_2_cudnn7_py3_gcc7_test requires: @@ -2647,14 +2567,13 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_build: name: pytorch_linux_xenial_cuda10_1_cudnn7_py3_gcc7_build requires: - setup - - "docker-pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" filters: branches: only: @@ -2662,7 +2581,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_cuda10_1_cudnn7_py3_gcc7_test requires: @@ -2675,7 +2594,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_test: @@ -2690,7 +2609,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-multigpu-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.large - pytorch_linux_test: @@ -2705,7 +2624,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-NO_AVX2-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_test: @@ -2720,7 +2639,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-NO_AVX-NO_AVX2-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_test: @@ -2735,7 +2654,7 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-slow-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_test: @@ -2750,52 +2669,48 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-nogpu-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build requires: - setup - - "docker-pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" build_environment: "pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_test requires: - setup - pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build build_environment: "pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_build: name: pytorch_libtorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build requires: - setup - - "docker-pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" build_environment: "pytorch-libtorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_libtorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_test requires: - setup - pytorch_libtorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build build_environment: "pytorch-libtorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_android_ndk_r19c_x86_32_build requires: - setup - - "docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c" build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-x86_32-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_android_ndk_r19c_x86_64_build requires: - setup - - "docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c" filters: branches: only: @@ -2803,12 +2718,11 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-x86_64-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_android_ndk_r19c_arm_v7a_build requires: - setup - - "docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c" filters: branches: only: @@ -2816,12 +2730,11 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-arm-v7a-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_android_ndk_r19c_arm_v8a_build requires: - setup - - "docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c" filters: branches: only: @@ -2829,36 +2742,34 @@ workflows: - /ci-all\/.*/ - /release\/.*/ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-arm-v8a-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_bionic_py3_6_clang9_build requires: - setup - - "docker-pytorch-linux-bionic-py3.6-clang9" build_environment: "pytorch-linux-bionic-py3.6-clang9-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_bionic_py3_6_clang9_test requires: - setup - pytorch_linux_bionic_py3_6_clang9_build build_environment: "pytorch-linux-bionic-py3.6-clang9-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_build: name: pytorch_xla_linux_bionic_py3_6_clang9_build requires: - setup - - "docker-pytorch-linux-bionic-py3.6-clang9" build_environment: "pytorch-xla-linux-bionic-py3.6-clang9-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_xla_linux_bionic_py3_6_clang9_test requires: - setup - pytorch_xla_linux_bionic_py3_6_clang9_build build_environment: "pytorch-xla-linux-bionic-py3.6-clang9-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-bionic-py3.6-clang9:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large # Warning: indentation here matters! @@ -2925,32 +2836,28 @@ workflows: name: pytorch_linux_xenial_py3_clang5_mobile_build requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-asan build_environment: "pytorch-linux-xenial-py3-clang5-mobile-build" build_only: "1" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_mobile_custom_build_static requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-asan build_environment: "pytorch-linux-xenial-py3-clang5-mobile-custom-build-static" build_only: "1" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_mobile_custom_build_dynamic requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c build_environment: "pytorch-linux-xenial-py3-clang5-mobile-custom-build-dynamic" build_only: "1" # Use LLVM-DEV toolchain in android-ndk-r19c docker image - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_mobile_code_analysis requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c # Most of this CI is already covered by "mobile-custom-build-dynamic" job filters: branches: @@ -2961,14 +2868,14 @@ workflows: build_environment: "pytorch-linux-xenial-py3-clang5-mobile-code-analysis" build_only: "1" # Use LLVM-DEV toolchain in android-ndk-r19c docker image - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_test: name: pytorch_linux_xenial_py3_6_gcc5_4_ge_config_legacy_test requires: - setup - pytorch_linux_xenial_py3_6_gcc5_4_build build_environment: "pytorch-linux-xenial-py3.6-gcc5.4-ge_config_legacy-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_test: name: pytorch_linux_xenial_py3_6_gcc5_4_ge_config_profiling_test @@ -2976,7 +2883,7 @@ workflows: - setup - pytorch_linux_xenial_py3_6_gcc5_4_build build_environment: "pytorch-linux-xenial-py3.6-gcc5.4-ge_config_profiling-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_test: name: pytorch_linux_xenial_cuda10_2_cudnn7_py3_ge_config_legacy_test @@ -2984,7 +2891,7 @@ workflows: - setup - pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-ge_config_legacy-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_test: @@ -2993,16 +2900,15 @@ workflows: - setup - pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-ge_config_profiling-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_bazel_build: name: pytorch_bazel_build requires: - setup - - docker-pytorch-linux-xenial-py3.6-gcc7 build_environment: "pytorch-linux-xenial-py3.6-gcc7-bazel-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7:f990c76a-a798-42bb-852f-5be5006f8026" resource_class: large - pytorch_linux_bazel_test: name: pytorch_bazel_test @@ -3010,7 +2916,7 @@ workflows: - setup - pytorch_bazel_build build_environment: "pytorch-linux-xenial-py3.6-gcc7-bazel-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7:f990c76a-a798-42bb-852f-5be5006f8026" - caffe2_linux_build: name: caffe2_onnx_main_py3_6_clang7_ubuntu16_04_build requires: @@ -5037,8 +4943,7 @@ workflows: build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-x86_32" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -5047,8 +4952,7 @@ workflows: build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-x86_64" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -5057,8 +4961,7 @@ workflows: build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-arm-v7a" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -5067,8 +4970,7 @@ workflows: build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-arm-v8a" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -7085,54 +6987,63 @@ workflows: branches: only: postnightly - # - docker_for_ecr_gc_build_job + docker_build: + triggers: + - schedule: + cron: "0 15 * * 0" + filters: + branches: + only: + - master + jobs: + - docker_for_ecr_gc_build_job - docker_build_job: - name: "docker-pytorch-linux-bionic-py3.6-clang9" + name: "pytorch-linux-bionic-py3.6-clang9" image_name: "pytorch-linux-bionic-py3.6-clang9" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda10-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda10-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda10-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda9-cudnn7-py3" + name: "pytorch-linux-xenial-cuda9-cudnn7-py3" image_name: "pytorch-linux-xenial-cuda9-cudnn7-py3" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc5.4" + name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc5.4" image_name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc5.4" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + name: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c" image_name: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3-clang5-asan" + name: "pytorch-linux-xenial-py3-clang5-asan" image_name: "pytorch-linux-xenial-py3-clang5-asan" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.8" + name: "pytorch-linux-xenial-py3.8" image_name: "pytorch-linux-xenial-py3.8" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-clang7" + name: "pytorch-linux-xenial-py3.6-clang7" image_name: "pytorch-linux-xenial-py3.6-clang7" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc4.8" + name: "pytorch-linux-xenial-py3.6-gcc4.8" image_name: "pytorch-linux-xenial-py3.6-gcc4.8" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc5.4" + name: "pytorch-linux-xenial-py3.6-gcc5.4" image_name: "pytorch-linux-xenial-py3.6-gcc5.4" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc7.2" + name: "pytorch-linux-xenial-py3.6-gcc7.2" image_name: "pytorch-linux-xenial-py3.6-gcc7.2" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc7" + name: "pytorch-linux-xenial-py3.6-gcc7" image_name: "pytorch-linux-xenial-py3.6-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-pynightly" + name: "pytorch-linux-xenial-pynightly" image_name: "pytorch-linux-xenial-pynightly" ecr_gc: triggers: diff --git a/.circleci/docker/build.sh b/.circleci/docker/build.sh index d6fddfab753..6dc249f8937 100755 --- a/.circleci/docker/build.sh +++ b/.circleci/docker/build.sh @@ -188,7 +188,6 @@ tmp_tag="tmp-$(cat /dev/urandom | tr -dc 'a-z' | fold -w 32 | head -n 1)" # it's no longer needed. docker build \ --no-cache \ - --progress=plain \ --build-arg "TRAVIS_DL_URL_PREFIX=${TRAVIS_DL_URL_PREFIX}" \ --build-arg "BUILD_ENVIRONMENT=${image}" \ --build-arg "PROTOBUF=${PROTOBUF:-}" \ diff --git a/.circleci/docker/build_docker.sh b/.circleci/docker/build_docker.sh index 1e8695017dc..eeb4e70a09b 100755 --- a/.circleci/docker/build_docker.sh +++ b/.circleci/docker/build_docker.sh @@ -6,8 +6,14 @@ retry () { $* || (sleep 1 && $*) || (sleep 2 && $*) } -# Setup from previous step, typically located in .circleci/artifacts/env_file -tag="${DOCKER_TAG}" +# If UPSTREAM_BUILD_ID is set (see trigger job), then we can +# use it to tag this build with the same ID used to tag all other +# base image builds. Also, we can try and pull the previous +# image first, to avoid rebuilding layers that haven't changed. + +#until we find a way to reliably reuse previous build, this last_tag is not in use +# last_tag="$(( CIRCLE_BUILD_NUM - 1 ))" +tag="${CIRCLE_WORKFLOW_ID}" registry="308535385114.dkr.ecr.us-east-1.amazonaws.com" diff --git a/.circleci/validate-docker-version.py b/.circleci/validate-docker-version.py new file mode 100755 index 00000000000..9410b885680 --- /dev/null +++ b/.circleci/validate-docker-version.py @@ -0,0 +1,44 @@ +#!/usr/bin/env python3 +import cimodel.data.caffe2_build_definitions as caffe2_build_definitions +import cimodel.data.pytorch_build_definitions as pytorch_build_definitions +from yaml import load + +try: + from yaml import CLoader as Loader +except ImportError: + from yaml import Loader + + +def load_config(filename=".circleci/config.yml"): + with open(filename, "r") as fh: + return load("".join(fh.readlines()), Loader) + + +def load_tags_for_projects(workflow_config): + return { + v["ecr_gc_job"]["project"]: v["ecr_gc_job"]["tags_to_keep"] + for v in workflow_config["workflows"]["ecr_gc"]["jobs"] + if isinstance(v, dict) and "ecr_gc_job" in v + } + + +def check_version(job, tags, expected_version): + valid_versions = tags[job].split(",") + if expected_version not in valid_versions: + raise RuntimeError( + "We configured {} to use Docker version {}; but this " + "version is not configured in job ecr_gc_job_for_{}. Non-deployed versions will be " + "garbage collected two weeks after they are created. DO NOT LAND " + "THIS TO MASTER without also updating ossci-job-dsl with this version." + "\n\nDeployed versions: {}".format(job, expected_version, job, tags[job]) + ) + + +def validate_docker_version(): + tags = load_tags_for_projects(load_config()) + check_version("pytorch", tags, pytorch_build_definitions.DOCKER_IMAGE_VERSION) + check_version("caffe2", tags, caffe2_build_definitions.DOCKER_IMAGE_VERSION) + + +if __name__ == "__main__": + validate_docker_version() diff --git a/.circleci/verbatim-sources/commands.yml b/.circleci/verbatim-sources/commands.yml index 683a0b71dcc..a4ec6d8f41f 100644 --- a/.circleci/verbatim-sources/commands.yml +++ b/.circleci/verbatim-sources/commands.yml @@ -10,21 +10,6 @@ commands: name: Attaching workspace at: ~/workspace - # Must be run after attaching workspace from previous steps - load_shared_env: - description: "Loads .circleci/shared/env_file into ${BASH_ENV}" - parameters: - # For some weird reason we decide to reattach our workspace to ~/workspace so - # in the vein of making it simple let's assume our share env_file is here - root: - type: string - default: "~/workspace" - steps: - - run: - name: "Load .circleci/shared/env_file into ${BASH_ENV}" - command: | - cat << parameters.root >>/.circleci/shared/env_file >> ${BASH_ENV} - # This system setup script is meant to run before the CI-related scripts, e.g., # installing Git client, checking out code, setting up CI env, and # building/testing. diff --git a/.circleci/verbatim-sources/docker_jobs.yml b/.circleci/verbatim-sources/docker_jobs.yml index e04d11c5cdb..6ce3440bbf9 100644 --- a/.circleci/verbatim-sources/docker_jobs.yml +++ b/.circleci/verbatim-sources/docker_jobs.yml @@ -8,45 +8,8 @@ resource_class: large environment: IMAGE_NAME: << parameters.image_name >> - # Enable 'docker manifest' - DOCKER_CLI_EXPERIMENTAL: "enabled" - DOCKER_BUILDKIT: 1 steps: - checkout - - run: - name: Calculate docker tag - command: | - set -x - mkdir .circleci/shared - # git keeps a hash of all sub trees - echo "export DOCKER_TAG=$(git rev-parse HEAD:.circleci/docker)" >> .circleci/shared/env_file - # Saves our calculated docker tag to our workpace for later use - - persist_to_workspace: - root: . - paths: - - .circleci/shared/ - - load_shared_env: - root: . - - run: - name: Check if image should be built - command: | - set +x - export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} - export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} - eval $(aws ecr get-login --no-include-email --region us-east-1) - set -x - # Check if image already exists, if it does then skip building it - if docker manifest inspect "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/${IMAGE_NAME}:${DOCKER_TAG}"; then - circleci-agent step halt - fi - PREVIOUS_DOCKER_TAG=$(git rev-parse "$(git merge-base HEAD << pipeline.git.base_revision >>):.circleci/docker") - # If no image exists but the hash is the same as the previous hash then we should error out here - # no stampeding herd effect plz. - if [[ ${PREVIOUS_DOCKER_TAG} = ${DOCKER_TAG} ]]; then - echo "ERROR: Something has gone wrong and the previous image isn't available for the merge-base of your branch" - echo " contact the PyTorch team to restore the original images" - exit 1 - fi - run: name: build_docker_image_<< parameters.image_name >> no_output_timeout: "1h" @@ -55,9 +18,7 @@ export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} set -x - source .circleci/shared/env_file cd .circleci/docker && ./build_docker.sh - docker_for_ecr_gc_build_job: machine: image: ubuntu-1604:201903-01 @@ -84,25 +45,14 @@ type: string environment: PROJECT: << parameters.project >> - # TODO: Remove legacy image tags once we feel comfortable with new docker image tags IMAGE_TAG: << parameters.tags_to_keep >> docker: - image: 308535385114.dkr.ecr.us-east-1.amazonaws.com/gc/ecr aws_auth: aws_access_key_id: ${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} aws_secret_access_key: ${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} + steps: - - checkout - - run: - # NOTE: see 'docker_build_job' for how these tags actually get built - name: dynamically generate tags to keep - no_output_timeout: "1h" - command: | - GENERATED_IMAGE_TAG=$(\ - git log --oneline --pretty='%H' .circleci/docker \ - | xargs -I '{}' git rev-parse '{}:.circleci/docker' \ - | paste -sd "," -) - echo "export GENERATED_IMAGE_TAG='${GENERATED_IMAGE_TAG}'" >> ${BASH_ENV} - run: name: garbage collecting for ecr images no_output_timeout: "1h" @@ -111,7 +61,7 @@ export AWS_ACCESS_KEY_ID=${CIRCLECI_AWS_ACCESS_KEY_FOR_DOCKER_BUILDER_V1} export AWS_SECRET_ACCESS_KEY=${CIRCLECI_AWS_SECRET_KEY_FOR_DOCKER_BUILDER_V1} set -x - /usr/bin/gc.py --filter-prefix ${PROJECT} --ignore-tags "${IMAGE_TAG},${GENERATED_IMAGE_TAG}" + /usr/bin/gc.py --filter-prefix ${PROJECT} --ignore-tags ${IMAGE_TAG} docker_hub_index_job: docker: diff --git a/.circleci/verbatim-sources/job-specs-custom.yml b/.circleci/verbatim-sources/job-specs-custom.yml index 6f73b5b9e59..aa22f223790 100644 --- a/.circleci/verbatim-sources/job-specs-custom.yml +++ b/.circleci/verbatim-sources/job-specs-custom.yml @@ -2,14 +2,13 @@ environment: BUILD_ENVIRONMENT: pytorch-python-doc-push # TODO: stop hardcoding this - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large machine: image: ubuntu-1604:201903-01 steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -17,7 +16,7 @@ no_output_timeout: "1h" command: | set -ex - export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1} echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} time docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE}) @@ -54,14 +53,13 @@ pytorch_cpp_doc_push: environment: BUILD_ENVIRONMENT: pytorch-cpp-doc-push - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large machine: image: ubuntu-1604:201903-01 steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -69,7 +67,7 @@ no_output_timeout: "1h" command: | set -ex - export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1} echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} time docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE}) @@ -165,7 +163,7 @@ pytorch_android_gradle_build: environment: BUILD_ENVIRONMENT: pytorch-linux-xenial-py3-clang5-android-ndk-r19c-gradle-build - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" PYTHON_VERSION: "3.6" resource_class: large machine: @@ -180,7 +178,7 @@ no_output_timeout: "1h" command: | set -eux - docker_image_commit=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + docker_image_commit=${DOCKER_IMAGE}-${CIRCLE_SHA1} docker_image_libtorch_android_x86_32=${docker_image_commit}-android-x86_32 docker_image_libtorch_android_x86_64=${docker_image_commit}-android-x86_64 @@ -251,14 +249,13 @@ pytorch_android_publish_snapshot: environment: BUILD_ENVIRONMENT: pytorch-linux-xenial-py3-clang5-android-ndk-r19c-gradle-publish-snapshot - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" PYTHON_VERSION: "3.6" resource_class: large machine: image: ubuntu-1604:201903-01 steps: - attach_scripts - - load_shared_env - setup_linux_system_environment - checkout - setup_ci_environment @@ -267,7 +264,7 @@ no_output_timeout: "1h" command: | set -eux - docker_image_commit=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + docker_image_commit=${DOCKER_IMAGE}-${CIRCLE_SHA1} docker_image_libtorch_android_x86_32_gradle=${docker_image_commit}-android-x86_32-gradle @@ -288,14 +285,13 @@ pytorch_android_gradle_build-x86_32: environment: BUILD_ENVIRONMENT: pytorch-linux-xenial-py3-clang5-android-ndk-r19c-gradle-build-only-x86_32 - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" PYTHON_VERSION: "3.6" resource_class: large machine: image: ubuntu-1604:201903-01 steps: - attach_scripts - - load_shared_env - run: name: filter out not PR runs no_output_timeout: "5m" @@ -312,7 +308,7 @@ no_output_timeout: "1h" command: | set -e - docker_image_libtorch_android_x86_32=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1}-android-x86_32 + docker_image_libtorch_android_x86_32=${DOCKER_IMAGE}-${CIRCLE_SHA1}-android-x86_32 echo "docker_image_libtorch_android_x86_32: "${docker_image_libtorch_android_x86_32} # x86 @@ -457,7 +453,6 @@ steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - checkout - setup_ci_environment @@ -467,9 +462,9 @@ command: | set -e # Pull Docker image and run build - echo "DOCKER_IMAGE: "${DOCKER_IMAGE}:${DOCKER_TAG} - time docker pull ${DOCKER_IMAGE}:${DOCKER_TAG} >/dev/null - export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}:${DOCKER_TAG}) + echo "DOCKER_IMAGE: "${DOCKER_IMAGE} + time docker pull ${DOCKER_IMAGE} >/dev/null + export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}) echo "Do NOT merge master branch into $CIRCLE_BRANCH in environment $BUILD_ENVIRONMENT" @@ -484,7 +479,7 @@ # Push intermediate Docker image for next phase to use if [ -z "${BUILD_ONLY}" ]; then # Augment our output image name with bazel to avoid collisions - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-bazel-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-bazel-${CIRCLE_SHA1} export COMMIT_DOCKER_IMAGE=$output_image docker commit "$id" ${COMMIT_DOCKER_IMAGE} time docker push ${COMMIT_DOCKER_IMAGE} @@ -497,7 +492,6 @@ steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -505,7 +499,7 @@ no_output_timeout: "90m" command: | set -e - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-bazel-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-bazel-${CIRCLE_SHA1} export COMMIT_DOCKER_IMAGE=$output_image echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} @@ -538,14 +532,14 @@ pytorch_doc_test: environment: BUILD_ENVIRONMENT: pytorch-doc-test - DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + # TODO: stop hardcoding this + DOCKER_IMAGE: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: medium machine: image: ubuntu-1604:201903-01 steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -553,7 +547,7 @@ no_output_timeout: "30m" command: | set -ex - export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + export COMMIT_DOCKER_IMAGE=${DOCKER_IMAGE}-${CIRCLE_SHA1} echo "DOCKER_IMAGE: "${COMMIT_DOCKER_IMAGE} time docker pull ${COMMIT_DOCKER_IMAGE} >/dev/null export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${COMMIT_DOCKER_IMAGE}) diff --git a/.circleci/verbatim-sources/pytorch-job-specs.yml b/.circleci/verbatim-sources/pytorch-job-specs.yml index 2c417c1aff5..b2dd4ee6e38 100644 --- a/.circleci/verbatim-sources/pytorch-job-specs.yml +++ b/.circleci/verbatim-sources/pytorch-job-specs.yml @@ -6,7 +6,6 @@ jobs: steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - checkout - optional_merge_target_branch @@ -17,9 +16,9 @@ jobs: command: | set -e # Pull Docker image and run build - echo "DOCKER_IMAGE: "${DOCKER_IMAGE}:${DOCKER_TAG} - time docker pull ${DOCKER_IMAGE}:${DOCKER_TAG} >/dev/null - export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}:${DOCKER_TAG}) + echo "DOCKER_IMAGE: "${DOCKER_IMAGE} + time docker pull ${DOCKER_IMAGE} >/dev/null + export id=$(docker run --cap-add=SYS_PTRACE --security-opt seccomp=unconfined --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -t -d -w /var/lib/jenkins ${DOCKER_IMAGE}) git submodule sync && git submodule update -q --init --recursive @@ -42,7 +41,7 @@ jobs: # The xla build uses the same docker image as # pytorch-linux-trusty-py3.6-gcc5.4-build. In the push step, we have to # distinguish between them so the test can pick up the correct image. - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-${CIRCLE_SHA1} if [[ ${BUILD_ENVIRONMENT} == *"xla"* ]]; then export COMMIT_DOCKER_IMAGE=$output_image-xla elif [[ ${BUILD_ENVIRONMENT} == *"libtorch"* ]]; then @@ -69,7 +68,6 @@ jobs: steps: # See Note [Workspace for CircleCI scripts] in job-specs-setup.yml - attach_scripts - - load_shared_env - setup_linux_system_environment - setup_ci_environment - run: @@ -78,7 +76,7 @@ jobs: command: | set -e # See Note [Special build images] - output_image=${DOCKER_IMAGE}:${DOCKER_TAG}-${CIRCLE_SHA1} + output_image=${DOCKER_IMAGE}-${CIRCLE_SHA1} if [[ ${BUILD_ENVIRONMENT} == *"xla"* ]]; then export COMMIT_DOCKER_IMAGE=$output_image-xla elif [[ ${BUILD_ENVIRONMENT} == *"libtorch"* ]]; then diff --git a/.circleci/verbatim-sources/workflows-docker-builder.yml b/.circleci/verbatim-sources/workflows-docker-builder.yml index db6205c0ef5..3ef03d53265 100644 --- a/.circleci/verbatim-sources/workflows-docker-builder.yml +++ b/.circleci/verbatim-sources/workflows-docker-builder.yml @@ -1,49 +1,58 @@ - # - docker_for_ecr_gc_build_job + docker_build: + triggers: + - schedule: + cron: "0 15 * * 0" + filters: + branches: + only: + - master + jobs: + - docker_for_ecr_gc_build_job - docker_build_job: - name: "docker-pytorch-linux-bionic-py3.6-clang9" + name: "pytorch-linux-bionic-py3.6-clang9" image_name: "pytorch-linux-bionic-py3.6-clang9" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda10-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda10-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda10-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda10.1-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda9-cudnn7-py3" + name: "pytorch-linux-xenial-cuda9-cudnn7-py3" image_name: "pytorch-linux-xenial-cuda9-cudnn7-py3" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc5.4" + name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc5.4" image_name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc5.4" - docker_build_job: - name: "docker-pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" + name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" image_name: "pytorch-linux-xenial-cuda9.2-cudnn7-py3-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + name: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c" image_name: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3-clang5-asan" + name: "pytorch-linux-xenial-py3-clang5-asan" image_name: "pytorch-linux-xenial-py3-clang5-asan" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.8" + name: "pytorch-linux-xenial-py3.8" image_name: "pytorch-linux-xenial-py3.8" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-clang7" + name: "pytorch-linux-xenial-py3.6-clang7" image_name: "pytorch-linux-xenial-py3.6-clang7" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc4.8" + name: "pytorch-linux-xenial-py3.6-gcc4.8" image_name: "pytorch-linux-xenial-py3.6-gcc4.8" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc5.4" + name: "pytorch-linux-xenial-py3.6-gcc5.4" image_name: "pytorch-linux-xenial-py3.6-gcc5.4" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc7.2" + name: "pytorch-linux-xenial-py3.6-gcc7.2" image_name: "pytorch-linux-xenial-py3.6-gcc7.2" - docker_build_job: - name: "docker-pytorch-linux-xenial-py3.6-gcc7" + name: "pytorch-linux-xenial-py3.6-gcc7" image_name: "pytorch-linux-xenial-py3.6-gcc7" - docker_build_job: - name: "docker-pytorch-linux-xenial-pynightly" + name: "pytorch-linux-xenial-pynightly" image_name: "pytorch-linux-xenial-pynightly" diff --git a/.circleci/verbatim-sources/workflows-nightly-android-binary-builds.yml b/.circleci/verbatim-sources/workflows-nightly-android-binary-builds.yml index 2c0cb6d7e5c..3b92f53eed5 100644 --- a/.circleci/verbatim-sources/workflows-nightly-android-binary-builds.yml +++ b/.circleci/verbatim-sources/workflows-nightly-android-binary-builds.yml @@ -3,8 +3,7 @@ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-x86_32" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -13,8 +12,7 @@ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-x86_64" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -23,8 +21,7 @@ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-arm-v7a" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly @@ -33,8 +30,7 @@ build_environment: "pytorch-linux-xenial-py3-clang5-android-ndk-r19c-arm-v8a" requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" filters: branches: only: nightly diff --git a/.circleci/verbatim-sources/workflows-pytorch-bazel-builds.yml b/.circleci/verbatim-sources/workflows-pytorch-bazel-builds.yml index 1f6ed3e1017..825ea500ad1 100644 --- a/.circleci/verbatim-sources/workflows-pytorch-bazel-builds.yml +++ b/.circleci/verbatim-sources/workflows-pytorch-bazel-builds.yml @@ -2,9 +2,8 @@ name: pytorch_bazel_build requires: - setup - - docker-pytorch-linux-xenial-py3.6-gcc7 build_environment: "pytorch-linux-xenial-py3.6-gcc7-bazel-build" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7:f990c76a-a798-42bb-852f-5be5006f8026" resource_class: large - pytorch_linux_bazel_test: name: pytorch_bazel_test @@ -12,4 +11,4 @@ - setup - pytorch_bazel_build build_environment: "pytorch-linux-xenial-py3.6-gcc7-bazel-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc7:f990c76a-a798-42bb-852f-5be5006f8026" diff --git a/.circleci/verbatim-sources/workflows-pytorch-ge-config-tests.yml b/.circleci/verbatim-sources/workflows-pytorch-ge-config-tests.yml index 767e201e0d4..58004904a3f 100644 --- a/.circleci/verbatim-sources/workflows-pytorch-ge-config-tests.yml +++ b/.circleci/verbatim-sources/workflows-pytorch-ge-config-tests.yml @@ -4,7 +4,7 @@ - setup - pytorch_linux_xenial_py3_6_gcc5_4_build build_environment: "pytorch-linux-xenial-py3.6-gcc5.4-ge_config_legacy-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_test: name: pytorch_linux_xenial_py3_6_gcc5_4_ge_config_profiling_test @@ -12,7 +12,7 @@ - setup - pytorch_linux_xenial_py3_6_gcc5_4_build build_environment: "pytorch-linux-xenial-py3.6-gcc5.4-ge_config_profiling-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3.6-gcc5.4:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" resource_class: large - pytorch_linux_test: name: pytorch_linux_xenial_cuda10_2_cudnn7_py3_ge_config_legacy_test @@ -20,7 +20,7 @@ - setup - pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-ge_config_legacy-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium - pytorch_linux_test: @@ -29,6 +29,6 @@ - setup - pytorch_linux_xenial_cuda10_2_cudnn7_py3_gcc7_build build_environment: "pytorch-linux-xenial-cuda10.1-cudnn7-ge_config_profiling-test" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-cuda10.2-cudnn7-py3-gcc7:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" use_cuda_docker_runtime: "1" resource_class: gpu.medium diff --git a/.circleci/verbatim-sources/workflows-pytorch-mobile-builds.yml b/.circleci/verbatim-sources/workflows-pytorch-mobile-builds.yml index 6afa28cc744..2a91b464526 100644 --- a/.circleci/verbatim-sources/workflows-pytorch-mobile-builds.yml +++ b/.circleci/verbatim-sources/workflows-pytorch-mobile-builds.yml @@ -3,32 +3,28 @@ name: pytorch_linux_xenial_py3_clang5_mobile_build requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-asan build_environment: "pytorch-linux-xenial-py3-clang5-mobile-build" build_only: "1" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_mobile_custom_build_static requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-asan build_environment: "pytorch-linux-xenial-py3-clang5-mobile-custom-build-static" build_only: "1" - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-asan:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_mobile_custom_build_dynamic requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c build_environment: "pytorch-linux-xenial-py3-clang5-mobile-custom-build-dynamic" build_only: "1" # Use LLVM-DEV toolchain in android-ndk-r19c docker image - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" - pytorch_linux_build: name: pytorch_linux_xenial_py3_clang5_mobile_code_analysis requires: - setup - - docker-pytorch-linux-xenial-py3-clang5-android-ndk-r19c # Most of this CI is already covered by "mobile-custom-build-dynamic" job filters: branches: @@ -39,4 +35,4 @@ build_environment: "pytorch-linux-xenial-py3-clang5-mobile-code-analysis" build_only: "1" # Use LLVM-DEV toolchain in android-ndk-r19c docker image - docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c" + docker_image: "308535385114.dkr.ecr.us-east-1.amazonaws.com/pytorch/pytorch-linux-xenial-py3-clang5-android-ndk-r19c:9a3986fa-7ce7-4a36-a001-3c9bef9892e2" diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9e546e77e66..f34efcb9716 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -21,6 +21,10 @@ jobs: run: | pip install -r requirements.txt cd .circleci && ./ensure-consistency.py + - name: Ensure Docker version is correctly deployed + run: | + pip install pyyaml + .circleci/validate-docker-version.py - name: Shellcheck Jenkins scripts run: | sudo apt-get install -y shellcheck