@@ -9,22 +9,23 @@ load "$PWD/hooks/lib/ecr-registry-provider.bash"
9
9
10
10
pre_command_hook=" $PWD /hooks/pre-command"
11
11
12
- @test " ECR: Applies lifecycle policy to existing repositories with aws-cli v1" {
12
+ @test " ECR: Applies lifecycle policy to existing repositories" {
13
+ export AWS_DEFAULT_REGION=" ap-southeast-2"
13
14
export BUILDKITE_ORGANIZATION_SLUG=" example-org"
14
15
export BUILDKITE_PIPELINE_SLUG=" example-pipeline"
15
16
local expected_repository_name=" build-cache/example-org/example-pipeline"
16
17
17
18
stub aws \
18
- " --version : echo 'aws-cli/1.22.58 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3' " \
19
- " ecr get-login --no-include-email : echo docker login -u AWS -p 1234 https://1234567891012.dkr. ecr.ap-southeast-2.amazonaws.com " \
19
+ " sts get-caller-identity --query Account --output text : echo 1234567891012 " \
20
+ " ecr get-login-password --region ap-southeast-2 : echo secure- ecr-password " \
20
21
" ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].registryId : echo looked up repository" \
21
22
" 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} " \
22
23
" ecr tag-resource * : echo tag existing resource" \
23
24
" ecr put-lifecycle-policy * : echo put lifecycle policy" \
24
25
" 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
26
26
27
stub docker \
27
- " login -u AWS -p 1234 https:// 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
28
+ " login --username AWS --password-stdin 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
28
29
" pull : echo pulled image"
29
30
30
31
stub sha1sum \
@@ -47,22 +48,24 @@ pre_command_hook="$PWD/hooks/pre-command"
47
48
unstub sha1sum
48
49
}
49
50
50
- @test " ECR: Builds new images with tags with aws-cli v1" {
51
+ @test " ECR: Builds new images with tags" {
52
+ export AWS_DEFAULT_REGION=" ap-southeast-2"
51
53
export BUILDKITE_ORGANIZATION_SLUG=" example-org"
52
54
export BUILDKITE_PIPELINE_SLUG=" example-pipeline"
53
55
local expected_repository_name=" build-cache/example-org/example-pipeline"
54
56
local repository_uri=" 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com/${expected_repository_name} "
55
57
56
58
stub aws \
57
- " --version : echo 'aws-cli/1.22.58 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3' " \
58
- " ecr get-login --no-include-email : echo docker login -u AWS -p 1234 https://1234567891012.dkr. ecr.ap-southeast-2.amazonaws.com " \
59
+ " sts get-caller-identity --query Account --output text : echo 1234567891012 " \
60
+ " ecr get-login-password --region ap-southeast-2 : echo secure- ecr-password " \
59
61
" ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].registryId : echo looked up repository" \
60
62
" 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} " \
61
63
" ecr tag-resource * : echo tag existing resource" \
62
64
" ecr put-lifecycle-policy * : echo put lifecycle policy" \
63
- " ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri} "
65
+ " ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri} " \
66
+
64
67
stub docker \
65
- " login -u AWS -p 1234 https:// 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
68
+ " login --username AWS --password-stdin 1234567891012.dkr.ecr.ap-southeast-2.amazonaws.com : echo logging in to docker" \
66
69
" pull : echo not found && false" \
67
70
" build * : echo building docker image" \
68
71
" tag ${repository_uri} :deadbee ${repository_uri} :latest : echo tagged latest" \
@@ -92,65 +95,71 @@ pre_command_hook="$PWD/hooks/pre-command"
92
95
unstub sha1sum
93
96
}
94
97
95
- @test " ECR: Applies lifecycle policy to existing repositories with aws-cli v2" {
96
- export AWS_REGION=" ap-southeast-2"
98
+ @test " ECR: Uses correct region when region not specified and AWS_DEFAULT_REGION not set" {
97
99
export BUILDKITE_ORGANIZATION_SLUG=" example-org"
98
100
export BUILDKITE_PIPELINE_SLUG=" example-pipeline"
99
101
local expected_repository_name=" build-cache/example-org/example-pipeline"
102
+ local repository_uri=" 1234567891012.dkr.ecr.eu-west-1.amazonaws.com/${expected_repository_name} "
100
103
101
104
stub aws \
102
- " --version : echo 'aws-cli/2.4.15 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3'" \
103
105
" sts get-caller-identity --query Account --output text : echo 1234567891012" \
104
- " ecr get-login-password --region ap-southeast-2 : echo secure-ecr-password" \
106
+ " ecr get-login-password --region eu-west-1 : echo secure-ecr-password" \
105
107
" 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} " \
108
+ " ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryArn : echo arn:aws:ecr:eu-west-1 :1234567891012:repository/${expected_repository_name} " \
107
109
" ecr tag-resource * : echo tag existing resource" \
108
110
" 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
+ " ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri} " \
112
+
111
113
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
+ " login --username AWS --password-stdin 1234567891012.dkr.ecr.eu-west-1.amazonaws.com : echo logging in to docker" \
115
+ " pull : echo not found && false" \
116
+ " build * : echo building docker image" \
117
+ " tag ${repository_uri} :deadbee ${repository_uri} :latest : echo tagged latest" \
118
+ " push ${repository_uri} :deadbee : echo pushed deadbeef" \
119
+ " push ${repository_uri} :latest : echo pushed latest"
114
120
115
121
stub sha1sum \
116
122
" Dockerfile : echo 'sha1sum(Dockerfile)'" \
117
123
" : echo sha1sum" \
118
124
" : echo sha1sum" \
119
- " : echo sha1sum "
125
+ " : echo deadbeef "
120
126
121
127
run " ${pre_command_hook} "
122
128
123
129
assert_success
124
130
assert_output --partial " logging in to docker"
125
- assert_output --partial " pulled image"
126
131
assert_output --partial " looked up repository"
132
+ assert_output --partial " building docker image"
127
133
assert_output --partial " tag existing resource"
128
134
assert_output --partial " put lifecycle policy"
135
+ assert_output --partial " tagged latest"
136
+ assert_output --partial " pushed deadbeef"
137
+ assert_output --partial " pushed latest"
129
138
130
139
unstub aws
131
140
unstub docker
132
141
unstub sha1sum
133
142
}
134
143
135
- @test " ECR: Builds new images with tags with aws-cli v2" {
136
- export AWS_REGION=" ap-southeast-2"
144
+ @test " ECR: Uses correct region when region is specified" {
145
+ export AWS_DEFAULT_REGION=" ap-southeast-2"
146
+ export BUILDKITE_PLUGIN_DOCKER_ECR_CACHE_REGION=" ap-southeast-1"
137
147
export BUILDKITE_ORGANIZATION_SLUG=" example-org"
138
148
export BUILDKITE_PIPELINE_SLUG=" example-pipeline"
139
149
local expected_repository_name=" build-cache/example-org/example-pipeline"
140
- local repository_uri=" 1234567891012.dkr.ecr.ap-southeast-2 .amazonaws.com/${expected_repository_name} "
150
+ local repository_uri=" 1234567891012.dkr.ecr.ap-southeast-1 .amazonaws.com/${expected_repository_name} "
141
151
142
152
stub aws \
143
- " --version : echo 'aws-cli/2.4.15 Python/3.9.2 Linux/5.10.76-linuxkit botocore/1.24.3'" \
144
153
" sts get-caller-identity --query Account --output text : echo 1234567891012" \
145
- " ecr get-login-password --region ap-southeast-2 : echo secure-ecr-password" \
154
+ " ecr get-login-password --region ap-southeast-1 : echo secure-ecr-password" \
146
155
" 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} " \
156
+ " ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryArn : echo arn:aws:ecr:ap-southeast-1 :1234567891012:repository/${expected_repository_name} " \
148
157
" ecr tag-resource * : echo tag existing resource" \
149
158
" ecr put-lifecycle-policy * : echo put lifecycle policy" \
150
159
" ecr describe-repositories --repository-names ${expected_repository_name} --output text --query repositories[0].repositoryUri : echo ${repository_uri} " \
151
160
152
161
stub docker \
153
- " login --username AWS --password-stdin 1234567891012.dkr.ecr.ap-southeast-2 .amazonaws.com : echo logging in to docker" \
162
+ " login --username AWS --password-stdin 1234567891012.dkr.ecr.ap-southeast-1 .amazonaws.com : echo logging in to docker" \
154
163
" pull : echo not found && false" \
155
164
" build * : echo building docker image" \
156
165
" tag ${repository_uri} :deadbee ${repository_uri} :latest : echo tagged latest" \
0 commit comments