Git-commit-id-maven-plugin: Execution of git-commit-id-plugin in Docker build fails

Created on 18 Aug 2020  路  3Comments  路  Source: git-commit-id/git-commit-id-maven-plugin

Describe the bug

Building with standard configuration from Bamboo in Docker image (mounting project directory with git repository) fails with

18-Aug-2020 22:06:17 | [INFO] --- git-commit-id-plugin:4.0.2:revision (default) @ **** ---
-- | --
18-Aug-2020 22:06:17 | [INFO] dotGitDirectory /data/.git
18-Aug-2020 22:06:24 | [WARNING] locking FileBasedConfig[/root/.config/jgit/config] failed after 5 retries
18-Aug-2020 22:06:24 | [INFO] ------------------------------------------------------------------------
18-Aug-2020 22:06:24 | [INFO] BUILD FAILURE
18-Aug-2020 22:06:24 | [INFO] ------------------------------------------------------------------------
18-Aug-2020 22:06:24 | [INFO] Total time:聽 8.449 s
18-Aug-2020 22:06:24 | [INFO] Finished at: 2020-08-18T20:06:24Z
18-Aug-2020 22:06:24 | [INFO] ------------------------------------------------------------------------
18-Aug-2020 22:06:24 | [ERROR] Failed to execute goal pl.project13.maven:git-commit-id-plugin:4.0.2:revision (default) on project ****: Could not complete Mojo execution...: Error: Missing unknown bc06d4f079f817a2827803c9f12b6833ec2bfcfb -> [Help 1]
18-Aug-2020 22:06:24 | [ERROR]
18-Aug-2020 22:06:24 | [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
18-Aug-2020 22:06:24 | [ERROR] Re-run Maven using the -X switch to enable full debug logging.
18-Aug-2020 22:06:24 | [ERROR]
18-Aug-2020 22:06:24 | [ERROR] For more information about the errors and possible solutions, please read the following articles:
18-Aug-2020 22:06:24 | [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
18-Aug-2020 22:06:25 | Exit code: 1, output: STDOUT:聽 [INFO] --------------------------------[ jar ]---------------------------------STDOUT:聽 [INFO] STDOUT:聽 [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ **** ---STDOUT:聽 [INFO] STDOUT:聽 [INFO] --- git-commit-id-plugin:4.0.2:revision (default) @ **** ---STDOUT:聽 [INFO] dotGitDirectory /data/.git STDOUT:聽 [WARNING] locking FileBasedConfig[/root/.config/jgit/config] failed after 5 retries STDOUT:聽 [INFO] ------------------------------------------------------------------------STDOUT:聽 [INFO] BUILD FAILURESTDOUT:聽 [INFO] ------------------------------------------------------------------------STDOUT:聽 [INFO] Total time:聽 8.449 sSTDOUT:聽 [INFO] Finished at: 2020-08-18T20:06:24ZSTDOUT:聽 [INFO] ------------------------------------------------------------------------STDOUT:聽 [ERROR] Failed to execute goal pl.project13.maven:git-commit-id-plugin:4.0.2:revision (default) on project carbonapp: Could not complete Mojo execution...: Error: Missing unknown bc06d4f079f817a2827803c9f12b6833ec2bfcfb 
...

Steps to Reproduce

<plugin>
                <groupId>pl.project13.maven</groupId>
                <artifactId>git-commit-id-plugin</artifactId>
                <version>4.0.2</version>
                <executions>
                    <execution>
                        <id>get-the-git-infos</id>
                        <goals>
                            <goal>revision</goal>
                        </goals>
                        <phase>initialize</phase>
                    </execution>
                </executions>
                <configuration>
                    <generateGitPropertiesFile>true</generateGitPropertiesFile>
                    <generateGitPropertiesFilename>${project.build.outputDirectory}/git.properties</generateGitPropertiesFilename>
                    <includeOnlyProperties>
                        <includeOnlyProperty>^git.build.(time|version)$</includeOnlyProperty>
                        <includeOnlyProperty>^git.commit.id.(abbrev|full)$</includeOnlyProperty>
                        <includeOnlyProperty>^git.dirty$</includeOnlyProperty>
                    </includeOnlyProperties>
                    <commitIdGenerationMode>full</commitIdGenerationMode>
                </configuration>
            </plugin>

Execute mvn clean package in docker container from Bamboo build, project directory mounted as /data.

Expected behavior

Error should not occur.

Additional context

I don't know if the _git-commit-id-plugin_ uses JGit behind the scenes, but this seems to be the same problem as described here: https://community.sonarsource.com/t/error-locking-filebasedconfig-root-config-jgit-config-failed-after-5-retries/21899.

I suspect that this is happening, because the JGit config is created inside the /root directory of the docker container, which is a different drive than /data drive where the git repo is mounted.

I did open an eclipse bug for JGit: https://bugs.eclipse.org/bugs/show_bug.cgi?id=566170

bug

Most helpful comment

I am using maven:3.6.3-openjdk-8 as a container.

docker run --volume /home/bamboo/xml-data/build-dir/myproject:/data --volume /home/bamboo/.m2:/root/.m2 --workdir /data --rm maven:3.6.3-openjdk-8 mvn clean package

Unfortunately if I execute that on my (Windows) machine I cannot reproduce the problem, while the Bamboo build fails every time (Linux).

However, thanks a lot for your suggestions! I tried them both:

  • using native git fixes the problem (luckily the container contains git)
  • using the older plugin-version does not work

All 3 comments

https://community.sonarsource.com/t/error-locking-filebasedconfig-root-config-jgit-config-failed-after-5-retries/21899 apparently also describes a workaround that could be used, if a newer JGit version doesn't fix the problem.

Hello,
thank you for reporting! This indeed sounds a quite tricky bug within the JGit library which is being used by the plugin by default.

Some questions:

  • what container are you using? is it a public one, so I can reproduce the issue myself?
  • How does the plugin version git-commit-id-plugin:4.0.1 behave? Based on https://github.com/git-commit-id/git-commit-id-maven-plugin/pull/514 the 4.0.1 version should be still using some older JGit dependency (5.2.2.201904231744-r based on the commit history)

Since this seems to be a JGit issue you should also be able to bypass the problem by setting <useNativeGit>true</useNativeGit> inside the plugin config (regardless if you are using the 4.0.1 or 4.0.2 version of the plugin). As a disclaimer this will tell the plugin to use the native git binary instead of the JGit implementation. As a result your container needs to have git on the executable path.

Besides that I don't think i can do much from the plugin perspective (just waiting until JGit fixed the issue or using the native git binary as suggested)

I am using maven:3.6.3-openjdk-8 as a container.

docker run --volume /home/bamboo/xml-data/build-dir/myproject:/data --volume /home/bamboo/.m2:/root/.m2 --workdir /data --rm maven:3.6.3-openjdk-8 mvn clean package

Unfortunately if I execute that on my (Windows) machine I cannot reproduce the problem, while the Bamboo build fails every time (Linux).

However, thanks a lot for your suggestions! I tried them both:

  • using native git fixes the problem (luckily the container contains git)
  • using the older plugin-version does not work
Was this page helpful?
0 / 5 - 0 ratings