Skip to content

Commit c39893d

Browse files
committed
add support for aws cli v2 and fix unit tests
1 parent e16bb9b commit c39893d

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

hooks/lib/ecr-registry-provider.bash

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
login() {
2-
$(aws ecr get-login --no-include-email)
2+
local aws_cli_version=$(aws --version 2>&1 | cut -d " " -f1 | cut -d "/" -f2)
3+
4+
if [[ $aws_cli_version =~ ^1 ]]; then
5+
$(aws ecr get-login --no-include-email)
6+
else
7+
local account_id=$(aws sts get-caller-identity --query "Account" --output text)
8+
local region=$(aws configure get region)
9+
10+
aws ecr get-login-password \
11+
--region "${region}" \
12+
| docker login \
13+
--username AWS \
14+
--password-stdin "${account_id}".dkr.ecr."${region}".amazonaws.com
15+
fi
316
}
417

518
get_registry_url() {

tests/ecr-registry-provider.bats

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,20 @@ load "$PWD/hooks/lib/ecr-registry-provider.bash"
99

1010
pre_command_hook="$PWD/hooks/pre-command"
1111

12-
@test "ECR: Applies lifecycle policy to existing repositories" {
12+
@test "ECR: Applies lifecycle policy to existing repositories with aws-cli v1" {
1313
export BUILDKITE_ORGANIZATION_SLUG="example-org"
1414
export BUILDKITE_PIPELINE_SLUG="example-pipeline"
1515
local expected_repository_name="build-cache/example-org/example-pipeline"
1616

1717
stub aws \
18+
"--version : echo 'aws-cli/1.22.58 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3'" \
1819
"ecr get-login --no-include-email : echo docker login -u AWS -p 1234 https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com" \
1920
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].registryId : echo looked up repository" \
2021
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryArn : echo arn:aws:ecr:ap-southeast-2:1234567891012:repository/${expected_repository_name}" \
2122
"ecr tag-resource * : echo tag existing resource" \
2223
"ecr put-lifecycle-policy * : echo put lifecycle policy" \
23-
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com"
24+
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com"
25+
2426
stub docker \
2527
"login -u AWS -p 1234 https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
2628
"pull : echo pulled image"
@@ -45,19 +47,20 @@ pre_command_hook="$PWD/hooks/pre-command"
4547
unstub sha1sum
4648
}
4749

48-
@test "ECR: Builds new images with tags" {
50+
@test "ECR: Builds new images with tags with aws-cli v1" {
4951
export BUILDKITE_ORGANIZATION_SLUG="example-org"
5052
export BUILDKITE_PIPELINE_SLUG="example-pipeline"
5153
local expected_repository_name="build-cache/example-org/example-pipeline"
5254
local repository_uri="1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com/${expected_repository_name}"
5355

5456
stub aws \
57+
"--version : echo 'aws-cli/1.22.58 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3'" \
5558
"ecr get-login --no-include-email : echo docker login -u AWS -p 1234 https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com" \
5659
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].registryId : echo looked up repository" \
5760
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryArn : echo arn:aws:ecr:ap-southeast-2:1234567891012:repository/${expected_repository_name}" \
5861
"ecr tag-resource * : echo tag existing resource" \
5962
"ecr put-lifecycle-policy * : echo put lifecycle policy" \
60-
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri}"
63+
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri}"
6164
stub docker \
6265
"login -u AWS -p 1234 https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
6366
"pull : echo not found && false" \

0 commit comments

Comments
 (0)