gradle-docker-plugin icon indicating copy to clipboard operation
gradle-docker-plugin copied to clipboard

Setting registryCredentials for `DockerPushImage` does not work

Open k3mist opened this issue 10 months ago • 3 comments

When running dockerPushImage or a custom task such as

task myDockerPush(type: DockerPushImage) {
	images = ["test/${project.name}:${project.version}"]

	registryCredentials {
		url = "https://123.dkr.ecr.us-east-1.amazonaws.com/repository"
	}
}

the plugin will not use the provided url and fails with

> Task :myDockerPush FAILED
Pushing image 'test/test:0.1.0 to https://index.docker.io/v1/.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':myDockerPush'.
> Could not push image: denied: requested access to the resource is denied

Expected Behavior

it should use the provided url

Current Behavior

its using the default url

Context

gradle 8.2.1

def username = System.properties['user.name']
def uid = ["id", "-u", username].execute().text.trim()

docker {
	url = "unix:///run/user/${uid}/docker.sock"

	javaApplication {
		user = uid
		baseImage = "amazon/aws-lambda-java:17"
		maintainer = "test"
		mainClassName = "test"
	}

	registryCredentials {
		url = "https://123.dkr.ecr.us-east-1.amazonaws.com/repository"
	}

	println(docker.registryCredentials.url.get())
}

task myDockerPush(type: DockerPushImage) {
	images = ["test/${project.name}:${project.version}"]

	registryCredentials {
		url = "https://123.dkr.ecr.us-east-1.amazonaws.com/repository"
	}
}
println(tasks.dockerPushImage.registryCredentials.url.get())
println(tasks.myDockerPush.registryCredentials.url.get())

all 3 print statements print; https://123.dkr.ecr.us-east-1.amazonaws.com/repository

however, it still uses the default configuration

Dockerfile and DockerBuildImage tasks work fine in the same build

ive also tried

afterEvaluate {
	project.tasks.withType(RegistryCredentialsAware).configureEach {
		println(it.name)
		println(it.getRegistryCredentials().getUrl().get())
		registryCredentials {
			url = "https://123.dkr.ecr.us-east-1.amazonaws.com/repository"
		}
		println(it.getRegistryCredentials().getUrl().get())
	}
}

and

afterEvaluate {
	project.tasks.withType(RegistryCredentialsAware) {
		println(it.name)
		println(it.getRegistryCredentials().getUrl().get())
		registryCredentials {
			url = "https://123.dkr.ecr.us-east-1.amazonaws.com/repository"
		}
		println(it.getRegistryCredentials().getUrl().get())
	}
}

k3mist avatar Apr 15 '24 16:04 k3mist