Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docker] Cannot override repository name #951

Closed
3 of 4 tasks
myron0815 opened this issue Sep 13, 2022 · 8 comments
Closed
3 of 4 tasks

[docker] Cannot override repository name #951

myron0815 opened this issue Sep 13, 2022 · 8 comments
Assignees
Labels
bug Something isn't working good first issue Good for newcomers released Issue has been released
Milestone

Comments

@myron0815
Copy link

myron0815 commented Sep 13, 2022

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem (link to git repository is ideal)
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. named distribution tag is set to camelCase
  2. try to override packagers.docker.repository.name with any value (projectName in lowercase here)
  3. run jreleaser:package

Expected Behaviour

value should be overridden as stated in docs, and build should succeed

Actual Behaviour

[INFO]     [docker]  - camelCaseGitlabOwner/myApp:TEST
[ERROR]    [docker] invalid argument "camelCaseGitlabOwner/myApp:TEST" for "-t, --tag" flag: invalid reference format: repository name must be lowercase

from trace;
the packagers config seem to be correct?

packagers:
    myApp:
        docker:
            repository:
                owner: myapp
                name: myapp

distributions:
    myApp:
        docker:
            repository:
                owner: myapp
                name: MyApp-docker

Sidenote:
Although the docker.repository.owner is correctly overridden (and visible in trace), the log above STILL shows my global release.gitlab.owner value.

Environment Information

  • Operating System: Windows 10
  • JReleaser Version: 1.2.0
  • JDK Version: Eclipse Adoptium\jdk-11.0.16.8-hotspot

Please paste stacktraces from [out|build|target]/jreleaser/trace.log.

[INFO]      [docker] packaging myAppdistribution
[DEBUG]     [docker] creating props for myApp/docker
[DEBUG]     [docker] filling distribution properties into props
[DEBUG]     [docker] filling git properties into props
[DEBUG]     [docker] filling artifact properties into props
[DEBUG]     [docker] filling packager properties into props
[DEBUG]     [docker] copying files from C:\Users\*****\WORKSPACES\MyApp\target\jreleaser\prepare\myApp\docker to C:\Users\*****\WORKSPACES\myApp\target\jreleaser\package\MyApp\docker
[DEBUG]     [docker] docker.exe -l error build -q -f C:\Users\*****\WORKSPACES\myApp\target\jreleaser\package\MyApp\docker\Dockerfile -t myApp/myApp:TEST C:\Users\*****\WORKSPACES\myApp\target\jreleaser\package\myApp\docker
[INFO]      [docker]  - camelCaseGitlabOwner/MyApp:TEST
[ERROR]     [docker] invalid argument "camelCaseGitlabOwner/myApp:TEST" for "-t, --tag" flag: invalid reference format: repository name must be lowercase
See 'docker build --help'.

[WARN]      [docker] failure: Unexpected error
org.jreleaser.model.packager.spi.PackagerProcessingException: Unexpected error
	at org.jreleaser.packagers.AbstractPackagerProcessor.executeCommand(AbstractPackagerProcessor.java:241)
	at org.jreleaser.packagers.DockerPackagerProcessor.packageDocker(DockerPackagerProcessor.java:201)
	at org.jreleaser.packagers.DockerPackagerProcessor.doPackageDistribution(DockerPackagerProcessor.java:157)
	at org.jreleaser.packagers.AbstractTemplatePackagerProcessor.doPackageDistribution(AbstractTemplatePackagerProcessor.java:138)
	at org.jreleaser.packagers.AbstractPackagerProcessor.packageDistribution(AbstractPackagerProcessor.java:161)
	at org.jreleaser.packagers.DockerPackagerProcessor.packageDistribution(DockerPackagerProcessor.java:62)
	at org.jreleaser.engine.distribution.DistributionProcessor.packageDistribution(DistributionProcessor.java:108)
	at org.jreleaser.engine.distribution.Distributions.processPackager(Distributions.java:126)
	at org.jreleaser.engine.distribution.Distributions.processDistribution(Distributions.java:103)
	at org.jreleaser.engine.distribution.Distributions.process(Distributions.java:89)
	at org.jreleaser.workflow.PackageWorkflowItem.doInvoke(PackageWorkflowItem.java:37)
	at org.jreleaser.workflow.AbstractWorkflowItem.lambda$invoke$0(AbstractWorkflowItem.java:38)
	at org.jreleaser.engine.hooks.CommandHookExecutor.execute(CommandHookExecutor.java:52)
	at org.jreleaser.workflow.AbstractWorkflowItem.invoke(AbstractWorkflowItem.java:38)
	at org.jreleaser.workflow.WorkflowImpl.execute(WorkflowImpl.java:70)
	at org.jreleaser.maven.plugin.JReleaserPackageMojo.execute(JReleaserPackageMojo.java:78)
	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:370)
	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:351)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:215)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:171)
	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:163)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:294)
	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:960)
	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
	at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:566)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
Caused by: org.jreleaser.util.command.CommandException: Command execution error. exitValue = 125
	at org.jreleaser.packagers.AbstractPackagerProcessor.executeCommand(AbstractPackagerProcessor.java:238)
	... 39 more
@myron0815 myron0815 added the bug Something isn't working label Sep 13, 2022
@aalmiray aalmiray added the good first issue Good for newcomers label Sep 13, 2022
@aalmiray aalmiray added this to the v1.3.0 milestone Sep 13, 2022
@aalmiray
Copy link
Member

The packagers configuration is inherited by the distribution. However, in your case the use of myApp inside packagers is not correct.

Also, the repository entry indicates the Git repository where the Dockerfile and companion files will be published, not the registry (such as DockerHub) where the container image will be published.

@myron0815
Copy link
Author

myron0815 commented Sep 14, 2022

the use of myApp inside packagers is not correct

Not having it.
Just plain packagers.docker.xxx config.
The rendered structure is only seen in trace... which might not be wrong


the repository entry indicates the Git repository

Aaah, that was is! Thanks for the pointer.
Setting the release.gitlab.name works

Still playing around, and not having everything setup i probably would need,
but.... for what is the packagers.docker.repository config then for?
Docu says "Git repository to push the Dockerfile to. Defaults are shown"

Just trying to understand why the jreleaser:package should not take the packages.docker.repo config? (as the error log suggests)

Should have posted my complete POM, which would have made analyzing my problem easier - mea culpa.
But it is more filled than most of your examples, which are really 'reduced to the max' - which i was trying to reproduce ;)


The distribution.myApp NEEDs to be lowercase.
And then the release.gitlab.name is used. But not the docker.repository.name as the error might suggest.
But here is my curreent POM snippet:

<release>
	<gitlab>
		<owner>gitlabowner</owner>
		<name>gitlabname</name>
	</gitlab>
</release>
<distributions>
	<myApp>
		<stereotype>DESKTOP</stereotype>
		<artifacts>
		[...]
		</artifacts>
		<executable>
			<windowsExtension>exe</windowsExtension>
		</executable>
	</myApp>
</distributions>

<packagers>
	<docker>
		<active>ALWAYS</active>
		<continueOnError>true</continueOnError>
		[...]
		<repository>
			<owner>dockerrepoowner</owner>
			<name>dockerreponame</name>
			<username>dockerrepousername</username>
		</repository>
	</docker>
</packagers>

@myron0815
Copy link
Author

myron0815 commented Sep 14, 2022

another fishy thing i cannot explain :/

-Dhuman.version=1.0-TEST -Dtier=TEST

pom.xml
<release>
	<gitlab>
		<owner>gitlabRepoOwner</owner>
		<name>gitlabRepoName</name>
	</gitlab>
</release>
<project>
	<snapshot>
		<label>${tier}</label>
	</snapshot>
</project>
<packagers>
	<docker>
                <buildArg>--no-cache</buildArg>
                [...]
		<imageNames>
			<imageName>imageowner/imagename:v${human.version}</imageName>
		</imageNames>
	</docker>
</packagers>

When i build it that way, i get the log

[INFO] [docker] - gitlabRepoOwner/myapp:TEST

And the above error of lowercase repo...bla..
Could not get the correct image name setup, nor my desired image tag version :/
BUT (re)setting JUST the project version

<project>
	<version>${human.version}</version>
</project>

the output (and image) is now correct?!???

[INFO] [docker] - imageowner/imagename:v5.0-TEST

Something is really fishy whith the whole overriding... how can a dedicated project version behave THAT differrent?!

@aalmiray
Copy link
Member

aalmiray commented Sep 14, 2022

This value <imageName>imageowner/imagename:v${human.version}</imageName> is explicit and should override whatever defaults JReleaser may compute. What does mvn jreleaser:config say in this case? (without setting ${human.version})

@myron0815
Copy link
Author

uploaded a SSCCE here ;)
https://gitlab.com/myron0815/jreleaser

mvn clean package

demonstrates kinda my setup.
Setting the project.version fixes the docker build (name + version)

@aalmiray
Copy link
Member

When displaying the configuration I get the following:

        docker:
            enabled: true
            active: always
            templateDirectory: src/jreleaser/distributions/myapp/docker
            useLocalArtifact: true
            baseImage: max06net/base-gui:0.2.1-buster-slim
            imageNames:
                {{repoOwner}}/{{distributionName}}:{{tagName}}

Which does not correspond with the configured setting

<imageNames>
	<imageName>imagenowner/imagename:v${human.version}</imageName>
</imageNames>

The resolved value turns out to be the default. It looks like JReleaser does not set the appropriate value as expected. Filed #952

@myron0815
Copy link
Author

thx for taking care of this :)
Closed for good

@aalmiray aalmiray added the released Issue has been released label Oct 30, 2022
@aalmiray
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working good first issue Good for newcomers released Issue has been released
Projects
None yet
Development

No branches or pull requests

2 participants