plain-truck-80265
08/26/2022, 9:42 AMBUILD
files? Seems it is not working for me, so I am just want to be sure 🙂 .flat-zoo-31952
08/26/2022, 11:25 AMBUILD
files need to have the same content on any machine, and if you could interpolate environment variables, that would make the content of the BUILD
file depend on the environment.
What are you trying to accomplish where you would need this?plain-truck-80265
08/26/2022, 12:13 PM<account_id>.dkr.ecr.<region>.<http://amazonaws.com|amazonaws.com>
In CI I would like to publish image to different accounts (representing PROD, DEV...). So I was thinking about using something like this in BUILD
file:
docker_image(
name="docker_image",
repository="%(env.AWS_ACCOUNT)s.dkr.ecr.%(env.AWS_DEFAULT_REGION)<http://s.amazonaws.com/xxx|s.amazonaws.com/xxx>",
)
I know I can use [docker.registries]
but I had some difficulties with it. Here are some examples I tried:
[docker.registries.ecr]
address = "%(env.AWS_ACCOUNT)s.dkr.ecr.%(env.AWS_DEFAULT_REGION)<http://s.amazonaws.com|s.amazonaws.com>"
repository = "{name}"
default = true
Seems that env variables are not supported inside address option.
[docker.registries.ecr]
repository = "%(env.AWS_ACCOUNT)s.dkr.ecr.%(env.AWS_DEFAULT_REGION)<http://s.amazonaws.com/{name}|s.amazonaws.com/{name}>"
default = true
address option is required.
[docker.registries.ecr-prod]
address = "<http://1111111111.dkr.ecr.eu-west-1.amazonaws.com|1111111111.dkr.ecr.eu-west-1.amazonaws.com>"
repository = "{name}"
[docker.registries.ecr-dev]
address = "<http://2222222222.dkr.ecr.eu-west-1.amazonaws.com|2222222222.dkr.ecr.eu-west-1.amazonaws.com>"
repository = "{name}"
This works but I do not know how to publish all changed images only into one repository (I mean when CI is running on test
branch I want to publish all images to ecr-dev
and when CI is using main
branch then ecr-prod
).flat-zoo-31952
08/26/2022, 12:24 PMflat-zoo-31952
08/26/2022, 12:26 PMplain-truck-80265
08/26/2022, 12:29 PM[docker]
default_repository = "<http://111111111.dkr.ecr.west-1.amazonaws.com/{name}|111111111.dkr.ecr.west-1.amazonaws.com/{name}>"
tools = ["docker-credential-ecr-login", "getent"]
env_vars = ["AWS_ACCESS_KEY_ID", "AWS_SECRET_ACCESS_KEY", "AWS_SESSION_TOKEN"]
And in CI I will override it accourding to environment:
./pants --docker-default-repository="<http://2222222222.dkr.ecr.eu-west-1.amazonaws.com/{name}|2222222222.dkr.ecr.eu-west-1.amazonaws.com/{name}>" package ::
plain-truck-80265
08/26/2022, 12:33 PMenough-analyst-54434
08/26/2022, 12:36 PMenough-analyst-54434
08/26/2022, 12:37 PMenough-analyst-54434
08/26/2022, 12:44 PM$ git diff
diff --git a/pants.toml b/pants.toml
index 9fc7a64ed..2fd56afbe 100644
--- a/pants.toml
+++ b/pants.toml
@@ -275,3 +275,7 @@ master = "src/python/pants/notes/master.rst"
"2.12.x" = "src/python/pants/notes/2.12.x.md"
"2.13.x" = "src/python/pants/notes/2.13.x.md"
"2.14.x" = "src/python/pants/notes/2.14.x.md"
+
+[docker.registries.ecr]
+repository = "%(env.AWS_ACCOUNT)s.dkr.ecr.%(env.AWS_DEFAULT_REGION)<http://s.amazonaws.com/{name}|s.amazonaws.com/{name}>"
+default = true
$ AWS_ACCOUNT=foo AWS_DEFAULT_REGION=bar ./pants help docker | grep -A10 docker-registries
--docker-registries="{'key1': val1, 'key2': val2, ...}"
PANTS_DOCKER_REGISTRIES
registries
default: {}
current value: {
"ecr": {
"default": true,
"repository": "<http://foo.dkr.ecr.bar.amazonaws.com/{name}|foo.dkr.ecr.bar.amazonaws.com/{name}>"
}
} (from pants.toml)
Configure Docker registries. The schema for a registry entry is as follows:
curved-television-6568
08/26/2022, 12:53 PMplain-truck-80265
08/26/2022, 1:33 PM