Hi,
I plugged in the 'git-commit-id-plugin' and it works perfectly on a local build. The pom config is
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-info</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.2</version>
</plugin>
</plugins>
</build>
When i attempt to deploy my app to heroku the build and deploy failed with this error
remote: [ERROR] Failed to execute goal pl.project13.maven:git-commit-id-plugin:2.2.2:revision (default) on project salesninja: .git directory is not found! Please specify a valid [dotGitDirectory] in your pom.xml -> [Help 1]
when i run the basic heroku deploy command of
git push heroku master
has anybody seen or have a workaround for this?
Are you working on your code in a separate worktree created by git worktree add command? Unfortunately this plugin doesn't support git worktree yet. But we have an option to skip execution of it, see here.
I encountered this same issue. Heroku apparently doesn't copy the .git folder to your dyno making it impossible to use this plugin.
I did find this SO answer and was able to use it as a workaround: http://stackoverflow.com/a/34536363/1437395
See https://gist.github.com/tmullin/bd17e3a05607d2b11349ef73ebbca84d
The accepted answer for that SO question is also interesting, but I'd rather use my workaround than create a post-commit hook: http://stackoverflow.com/a/14924922/1437395
I just created a heroku account and followed the steps provided in
https://devcenter.heroku.com/articles/getting-started-with-java
heroku login
cd /tmp
git clone https://github.com/heroku/java-getting-started.git
cd java-getting-started
heroku create
git push heroku master [works what would you expect else]
after this initial test I added the following to the pom.xml:
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.2</version>
<!-- optional to change the phases of the individual mojo's -->
<executions>
<execution>
<id>get-the-git-infos</id>
<goals>
<goal>revision</goal>
</goals>
</execution>
<execution>
<id>validate-the-git-infos</id>
<goals>
<goal>validateRevision</goal>
</goals>
<phase>package</phase>
</execution>
</executions>
<configuration>
<verbose>true</verbose>
<skip>false</skip>
<prefix>git</prefix>
<dotGitDirectory>${project.basedir}/.git</dotGitDirectory>
<generateGitPropertiesFile>true</generateGitPropertiesFile>
<generateGitPropertiesFilename>target/testing.properties</generateGitPropertiesFilename>
<dateFormat>dd.MM.yyyy '@' HH:mm:ss z</dateFormat>
<dateFormatTimeZone>GMT-08:00</dateFormatTimeZone>
<useNativeGit>false</useNativeGit>
<abbrevLength>7</abbrevLength>
<format>properties</format>
<injectAllReactorProjects>true</injectAllReactorProjects>
<gitDescribe>
<skip>false</skip>
<always>false</always>
<abbrev>7</abbrev>
<match>*</match>
<dirty>-DEVEL</dirty>
<forceLongFormat>false</forceLongFormat>
</gitDescribe>
<excludeProperties>
<excludeProperty>git.commit.*</excludeProperty>
<excludeProperty>git.remote.origin.url</excludeProperty>
</excludeProperties>
<failOnNoGitDirectory>false</failOnNoGitDirectory>
<failOnUnableToExtractRepoInfo>true</failOnUnableToExtractRepoInfo>
</configuration>
</plugin>
It should not matter what your config looks like
git add pom.xml
git commit -m "adding git-commit-id-plugin to heruku"
git push heroku master
.......
remote: [INFO] --- git-commit-id-plugin:2.2.2:validateRevision (validate-the-git-infos) @ java-getting-started ---
remote: [INFO]
remote: [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ java-getting-started ---
remote: [INFO] Installing /tmp/build_691c5fcf438acec0086db9cbba4e97a5/target/java-getting-started-1.0.jar to /app/tmp/cache/.m2/repository/com/example/java-getting-started/1.0/java-getting-started-1.0.jar
remote: [INFO] Installing /tmp/build_691c5fcf438acec0086db9cbba4e97a5/pom.xml to /app/tmp/cache/.m2/repository/com/example/java-getting-started/1.0/java-getting-started-1.0.pom
remote: [INFO] ------------------------------------------------------------------------
remote: [INFO] BUILD SUCCESS
remote: [INFO] ------------------------------------------------------------------------
remote: [INFO] Total time: 7.050 s
remote: [INFO] Finished at: 2017-06-30T16:26:56+00:00
remote: [INFO] Final Memory: 37M/209M
remote: [INFO] ------------------------------------------------------------------------
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 64.5M
remote: -----> Launching...
remote: Released v5
remote: https://cryptic-ravine-11327.herokuapp.com/ deployed to Heroku
remote:
remote: Verifying deploy.... done.
Build works without any issues as of right now; tested with linux.
Hi,
I copied the same config to my pom.xml, but am seeing the following where the 'dotGitDirectory' is null
remote: [INFO] --- git-commit-id-plugin:2.2.2:revision (default) @ salesninja ---
remote: [INFO] dotGitDirectory is null, aborting execution!
remote: [INFO]
remote: [INFO] --- git-commit-id-plugin:2.2.2:revision (get-the-git-infos) @ salesninja ---
remote: [INFO] dotGitDirectory is null, aborting execution!
later in the build i see
remote: [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ salesninja ---
remote: [INFO] Building jar: /tmp/build_5312c46ab8cc2adeadb09358938224f1/target/salesninja-0.0.2-SNAPSHOT.jar
remote: [INFO]
remote: [INFO] --- spring-boot-maven-plugin:1.5.1.RELEASE:repackage (default) @ salesninja ---
remote: [INFO]
remote: [INFO] --- git-commit-id-plugin:2.2.2:validateRevision (validate-the-git-infos) @ salesninja ---
Can you outline the steps need to reproduce the issue??
What is your OS?
What is heroku version??
Can you share a sample project where I can reproduce the issue (can't reproduce it with the default "how to")??
Hi,
I created this simple spring boot app which uses the accuator and has a custom git REST endpoint
https://github.com/emeraldjava/git-commit-id-heroku-demo
the URL's to test the local service are
http://localhost:8080/info
http://localhost:8080/git
again, this app fails to deploy on heroku because the git.properties file isn't generated.
thanks
P
After some testing and the way heroku seems to work there is pretty much barely anything I can do within the plugin to fix this issue. In order to determine the git properties this plugin is meant to have access to the git-repository. Without it its simply impossible to retrieve any information. Since the heroku doesn't copy over the .git-Folder this plugin can't get the author, branch, .... pretty much nothing.
The only possible improvement I can see here is to check from the plugin side if the environment variable HEROKU_SLUG_COMMIT is set and the render in the git-commit-id and git-commit-id-abbrev based on the information.
Downsides:
heroku labs:enable runtime-dyno-metadata -a <app name> in order to have this workingherokuAs a result even if this would be introduced into the plugin only the git-commit and git-commit-id-abbrev information would be available.
Can you live with the workaround or want something in the plugin?
Thanks for the investigation. It's a shame heroku doesn't nice with the git repo clone. I can use the alternative options.
fully agree!
unfortunately I can't change how it works.....even a shallow clone would solve the problem....
Thanks for reporting the issue!
@TheSnoozer In the tested config, you have '
Most helpful comment
I encountered this same issue. Heroku apparently doesn't copy the .git folder to your dyno making it impossible to use this plugin.
I did find this SO answer and was able to use it as a workaround: http://stackoverflow.com/a/34536363/1437395
See https://gist.github.com/tmullin/bd17e3a05607d2b11349ef73ebbca84d
The accepted answer for that SO question is also interesting, but I'd rather use my workaround than create a post-commit hook: http://stackoverflow.com/a/14924922/1437395