I’m trying to use this: ```private class ArtifactR...
# ktor
m
I’m trying to use this:
Copy code
private class ArtifactRegistry(
    projectName: Provider<String>,
    regionName: Provider<String>,
    repositoryName: Provider<String>,
    imageName: Provider<String>,
) : DockerImageRegistry {
    override val username: Provider<String> = provider { "" }
    override val password: Provider<String> = provider { "" }
    override val toImage: Provider<String> = provider {
        val region = regionName.get()
        val project = projectName.get()
        val repository = repositoryName.get()
        val image = imageName.get()
        "$region-docker.pkg.dev/$project/$repository/$image"
    }
}
to generate gradle task to publish to Google Artifact Registry. I put it in build.gradle.kts, but I’m getting this error:
Copy code
Don't know how to generate outer expression for public constructor ArtifactRegistry(projectName: org.gradle.api.provider.Provider<kotlin.String>, regionName: org.gradle.api.provider.Provider<kotlin.String>, repositoryName: org.gradle.api.provider.Provider<kotlin.String>, imageName: org.gradle.api.provider.Provider<kotlin.String>) defined in Build_gradle.ArtifactRegistry[ClassConstructorDescriptorImpl@1bf5c9b1]
How do I fix this?
1
s
Did you mean to post this here? Might be better in the #C19FD9681 channel. Seems like a compiler error (bug?), related to the fact that Gradle will be turning
ArtifactRegistry
into an inner class so it can access the project's
provider
function.
m
I’ll try to cross-post there. I’m referring to the Ktor docker gradle plugin
s
Oh okay, that makes sense! I didn't know about that plugin.
a
Can you share the usage of the
ArtifactRegistry
class?
m
Here’s how I use it:
Copy code
ktor {
    docker {
        jreVersion.set(JavaVersion.VERSION_17)
        localImageName.set("asia-southeast2-docker.pkg.dev/ivo-zeals-poc/zeals-ktor")
        imageTag.set("$version")
        portMappings.set(listOf(
            DockerPortMapping(
                80,
                8080,
                DockerPortMappingProtocol.TCP
            )
        ))

        externalRegistry.set(
            ArtifactRegistry(
                projectName = provider { "ivo-zeals-poc" },
                regionName = provider { "asia-southeast2" },
                repositoryName = provider { "zeals-ktor" },
                imageName = provider { "$version" },
            )
        )
    }
}
All in build.gradle.kts
a
Unfortunately, I cannot reproduce the error by running the
runDocker
task. What Gradle task do you execute?
m
I got the error while running the
build
task
I solved my issue by using DockerImageRegistry.externalRegistry() instead of declaring a new implementation of DockerImageRegistry