From 0db7467e4a68e4239afcf411a65946bc7809c431 Mon Sep 17 00:00:00 2001 From: Alex Willmer Date: Wed, 8 Sep 2021 02:18:27 +0100 Subject: [PATCH] tests: Authenticate to AWS Elastic Container Registry for `docker pull` This should increase the rate limit from 1/s to 10/s. AWS credentials are obtained from environment variables in Azure pipelines, or the default AWS CLI profile. https://docs.aws.amazon.com/AmazonECR/latest/public/public-service-quotas.html https://docs.aws.amazon.com/AmazonECR/latest/public/public-registries.html#public-registry-auth https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html --- .ci/ansible_install.py | 7 +++++-- .ci/azure-pipelines-steps.yml | 4 ++++ .ci/debops_common_install.py | 1 + .ci/mitogen_install.py | 1 + .ci/mitogen_py24_install.py | 1 + .travis.yml | 1 + 6 files changed, 13 insertions(+), 2 deletions(-) diff --git a/.ci/ansible_install.py b/.ci/ansible_install.py index 08f04356..e63908ea 100755 --- a/.ci/ansible_install.py +++ b/.ci/ansible_install.py @@ -13,12 +13,15 @@ batches = [ '-r tests/ansible/requirements.txt', # encoding is required for installing ansible 2.10 with pip2, otherwise we get a UnicodeDecode error 'LC_CTYPE=en_US.UTF-8 LANG=en_US.UTF-8 pip install -q ansible=={0}'.format(ci_lib.ANSIBLE_VERSION) + ], + [ + 'aws ecr-public get-login-password | docker login --username AWS --password-stdin public.ecr.aws', ] ] -batches.append(ci_lib.throttle( +batches[-1].extend([ 'docker pull %s' % (ci_lib.image_for_distro(distro),) for distro in ci_lib.DISTROS -)) +]) ci_lib.run_batches(batches) diff --git a/.ci/azure-pipelines-steps.yml b/.ci/azure-pipelines-steps.yml index 41b6a836..8c3f6f5f 100644 --- a/.ci/azure-pipelines-steps.yml +++ b/.ci/azure-pipelines-steps.yml @@ -18,6 +18,10 @@ steps: - script: .ci/$(MODE)_install.py displayName: "Run $(MODE)_install.py" + env: + AWS_ACCESS_KEY_ID: $(AWS_ACCESS_KEY_ID) + AWS_SECRET_ACCESS_KEY: $(AWS_SECRET_ACCESS_KEY) + AWS_DEFAULT_REGION: $(AWS_DEFAULT_REGION) - script: .ci/$(MODE)_tests.py displayName: "Run $(MODE)_tests.py" diff --git a/.ci/debops_common_install.py b/.ci/debops_common_install.py index 0217c684..b5f0fae7 100755 --- a/.ci/debops_common_install.py +++ b/.ci/debops_common_install.py @@ -13,6 +13,7 @@ ci_lib.run_batches([ 'pip install -qqq debops[ansible]==2.1.2 ansible==%s' % ci_lib.ANSIBLE_VERSION, ], [ + 'aws ecr-public get-login-password | docker login --username AWS --password-stdin public.ecr.aws', 'docker pull %s' % (ci_lib.image_for_distro('debian'),), ], ]) diff --git a/.ci/mitogen_install.py b/.ci/mitogen_install.py index b8862f89..d51c2f17 100755 --- a/.ci/mitogen_install.py +++ b/.ci/mitogen_install.py @@ -11,6 +11,7 @@ batches = [ if ci_lib.have_docker(): batches.append([ + 'aws ecr-public get-login-password | docker login --username AWS --password-stdin public.ecr.aws', 'docker pull %s' % (ci_lib.image_for_distro(ci_lib.DISTRO),), ]) diff --git a/.ci/mitogen_py24_install.py b/.ci/mitogen_py24_install.py index 868ae4e4..92294aab 100755 --- a/.ci/mitogen_py24_install.py +++ b/.ci/mitogen_py24_install.py @@ -4,6 +4,7 @@ import ci_lib batches = [ [ + 'aws ecr-public get-login-password | docker login --username AWS --password-stdin public.ecr.aws', 'docker pull %s' % (ci_lib.image_for_distro(ci_lib.DISTRO),), ], [ diff --git a/.travis.yml b/.travis.yml index a7a9422d..a7b07bfa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,6 +17,7 @@ cache: - /home/travis/virtualenv install: +- if ! [ -x "$(command -v aws)" ]; then curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip" ; unzip awscliv2.zip ; sudo ./aws/install ; fi - pip install -U pip==20.2.1 - .ci/${MODE}_install.py