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
This commit is contained in:
Alex Willmer 2021-09-08 02:18:27 +01:00
parent 2f56b16795
commit 0db7467e4a
6 changed files with 13 additions and 2 deletions

View File

@ -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)

View File

@ -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"

View File

@ -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'),),
],
])

View File

@ -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),),
])

View File

@ -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),),
],
[

View File

@ -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