Skip to content

Commit 8f7c326

Browse files
committed
add tests for aws-cli v2
1 parent c39893d commit 8f7c326

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

hooks/lib/ecr-registry-provider.bash

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ login() {
44
if [[ $aws_cli_version =~ ^1 ]]; then
55
$(aws ecr get-login --no-include-email)
66
else
7-
local account_id=$(aws sts get-caller-identity --query "Account" --output text)
7+
local account_id=$(aws sts get-caller-identity --query Account --output text)
88
local region=$(aws configure get region)
99

1010
aws ecr get-login-password \

tests/ecr-registry-provider.bats

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,3 +91,91 @@ pre_command_hook="$PWD/hooks/pre-command"
9191
unstub docker
9292
unstub sha1sum
9393
}
94+
95+
@test "ECR: Applies lifecycle policy to existing repositories with aws-cli v2" {
96+
export BUILDKITE_ORGANIZATION_SLUG="example-org"
97+
export BUILDKITE_PIPELINE_SLUG="example-pipeline"
98+
local expected_repository_name="build-cache/example-org/example-pipeline"
99+
100+
stub aws \
101+
"--version : echo 'aws-cli/2.4.15 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3'" \
102+
"sts get-caller-identity --query \"Account\" --output text : echo 1234567891012" \
103+
"configure get region : echo ap-southeast-2" \
104+
"ecr get-login-password --region ap-southeast-2 : echo secure-ecr-password" \
105+
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].registryId : echo looked up repository" \
106+
"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}" \
107+
"ecr tag-resource * : echo tag existing resource" \
108+
"ecr put-lifecycle-policy * : echo put lifecycle policy" \
109+
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo https://1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com"
110+
111+
stub docker \
112+
"login --username AWS --password-stdin 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
113+
"pull : echo pulled image"
114+
115+
stub sha1sum \
116+
"Dockerfile : echo 'sha1sum(Dockerfile)'" \
117+
": echo sha1sum" \
118+
": echo sha1sum" \
119+
": echo sha1sum"
120+
121+
run "${pre_command_hook}"
122+
123+
assert_success
124+
assert_output --partial "logging in to docker"
125+
assert_output --partial "pulled image"
126+
assert_output --partial "looked up repository"
127+
assert_output --partial "tag existing resource"
128+
assert_output --partial "put lifecycle policy"
129+
130+
unstub aws
131+
unstub docker
132+
unstub sha1sum
133+
}
134+
135+
@test "ECR: Builds new images with tags with aws-cli v2" {
136+
export BUILDKITE_ORGANIZATION_SLUG="example-org"
137+
export BUILDKITE_PIPELINE_SLUG="example-pipeline"
138+
local expected_repository_name="build-cache/example-org/example-pipeline"
139+
local repository_uri="1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com/${expected_repository_name}"
140+
141+
stub aws \
142+
"--version : echo 'aws-cli/2.4.15 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3'" \
143+
"sts get-caller-identity --query \"Account\" --output text : echo 1234567891012" \
144+
"configure get region : echo ap-southeast-2" \
145+
"ecr get-login-password --region ap-southeast-2 : echo secure-ecr-password" \
146+
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].registryId : echo looked up repository" \
147+
"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}" \
148+
"ecr tag-resource * : echo tag existing resource" \
149+
"ecr put-lifecycle-policy * : echo put lifecycle policy" \
150+
"ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri}" \
151+
152+
stub docker \
153+
"login --username AWS --password-stdin 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
154+
"pull : echo not found && false" \
155+
"build * : echo building docker image" \
156+
"tag ${repository_uri}:deadbee ${repository_uri}:latest : echo tagged latest" \
157+
"push ${repository_uri}:deadbee : echo pushed deadbeef" \
158+
"push ${repository_uri}:latest : echo pushed latest"
159+
160+
stub sha1sum \
161+
"Dockerfile : echo 'sha1sum(Dockerfile)'" \
162+
": echo sha1sum" \
163+
": echo sha1sum" \
164+
": echo deadbeef"
165+
166+
run "${pre_command_hook}"
167+
168+
assert_success
169+
assert_output --partial "logging in to docker"
170+
assert_output --partial "looked up repository"
171+
assert_output --partial "building docker image"
172+
assert_output --partial "tag existing resource"
173+
assert_output --partial "put lifecycle policy"
174+
assert_output --partial "tagged latest"
175+
assert_output --partial "pushed deadbeef"
176+
assert_output --partial "pushed latest"
177+
178+
unstub aws
179+
unstub docker
180+
unstub sha1sum
181+
}

0 commit comments

Comments
 (0)