Github action, maven build fails when using the - java

I try to CI/CD for the jave open source project, which is hosted on github.
When I build the project with maven local, then it works just fine.
But the same maven build fails when triggered inside the github/gitaction environment when building the jave-core target.
https://github.com/a-schild/jave2/blob/develop/jave-core/pom.xml
The special thing, is that I use the org.codehaus.mojo buildnumber-maven-plugin and also the org.codehaus.mojo templating-maven-plugin.
I think it fails because of this, but I am unable to find how to fix it.
Here is the gitaction
https://github.com/a-schild/jave2/blob/master/.github/workflows/maven.yml
And here the error log of the build
[INFO] Executing: /bin/sh -c cd '/home/runner/work/jave2/jave2/jave-core' && 'git' 'log' '-n1' '--date-order'
[INFO] Working directory: /home/runner/work/jave2/jave2/jave-core
[INFO] Executing: /bin/sh -c cd '/home/runner/work/jave2/jave2/jave-core' && 'git' 'pull' 'https://github.com/a-schild/jave2.git'
[INFO] Working directory: /home/runner/work/jave2/jave2/jave-core
Error: Provider message:
Error: The git-pull command failed.
Error: Command output:
Error: From https://github.com/a-schild/jave2
* branch HEAD -> FETCH_HEAD
hint: You have divergent branches and need to specify how to reconcile them.
hint: You can do so by running one of the following commands sometime before
hint: your next pull:
hint:
hint: git config pull.rebase false # merge
hint: git config pull.rebase true # rebase
hint: git config pull.ff only # fast-forward only
hint:
hint: You can replace "git config" with "git config --global" to set a default
hint: preference for all repositories. You can also pass --rebase, --no-rebase,
hint: or --ff-only on the command line to override the configured default per
hint: invocation.
fatal: Need to specify how to reconcile divergent branches.

Related

Build that passes locally fails on Travis

I have been trying to get more into the methodology of continuous integration as of recent, and have chosen Travis CI for the job. However, on one of my projects that uses Java and Kotlin my local builds pass, but fail on Travis.
I've been unable to make sense of the error messages that I am getting as to why my build is failing. kotlin-maven-plugin seems to be the origin of the errors. The problematic command as seen in the build logs is mvn install -DskipTests=true -Dmaven.javadoc.skip=true -B -V.
I have run this command locally with no errors and a successful build.
Here's a relevant snippet of the stack trace from the CI Build Job:
[INFO] --- kotlin-maven-plugin:1.4.32:compile (compile) # BytesToJava ---
[ERROR] java.lang.ExceptionInInitializerError
at com.intellij.pom.java.LanguageLevel.<clinit>(LanguageLevel.java:25)
at com.intellij.core.CoreLanguageLevelProjectExtension.<init>(CoreLanguageLevelProjectExtension.java:26)
at com.intellij.core.JavaCoreProjectEnvironment.<init>(JavaCoreProjectEnvironment.java:42)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreProjectEnvironment.<init>(KotlinCoreProjectEnvironment.kt:26)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$ProjectEnvironment.<init>(KotlinCoreEnvironment.kt:121)
at org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment$Companion.createForProduction(KotlinCoreEnvironment.kt:425)
Would appreciate some resources or even a relevant issue thread. Thanks in advance :)
Travis Build Logs
The problem was being caused by an issue with illegal reflective operations and the Kotlin Maven Plugin with any project over Java 9 (my project uses Java 15). As described by this thread on YouTrack, a workaround is to:
A workaround is to run mvn with the following environment variable: MAVEN_OPTS=--illegal-access=permit
Adding a global environment variable with the same value to my .travis.yml fixed the issue.

How to configure SonarCloud

I have java project and I want to integrate it with SonarCloud I Follow the official steps:
Inspecting code with the SonarQube Scanner #
Before inspecting your code, you need to:
Create a user authentication token for your account on SonarCloud.
Encrypt this token travis encrypt abcdef0123456789 or define SONAR_TOKEN in your Repository Settings
Find which SonarCloud.io organization you want to push your project on and get its key
Create a sonar-project.properties file for your project (see the documentation). Then add the following lines to your .travis.yml file
to trigger the analysis:
add in my travis.yml file
addons:
sonarcloud:
organization: "xelian-github"
token:
secure: ${SONAR_TOKEN}
branches:
- master
script:
# other script steps might be done before running the actual analysis
- sonar-scanner
Where SONAR_TOKEN is a variable on Travis CI pointing to the key from SonarCloud.(It is not encrypted).
From SonarCloud I add permissions
But when I start the travis build I have the following error:
Setting environment variables from repository settings
$ export SONAR_TOKEN=[secure]
....
ERROR: Error during SonarQube Scanner execution
ERROR: You're only authorized to execute a local (preview) SonarQube analysis without pushing the results to the SonarQube server. Please contact your SonarQube administrator.
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
It seems to me that I the travis do not have permissions to upload results to SonarCloud. Is the problem in the token or in some Sonar configurations.
The official entry point to configure a project on SonarCloud is the "Get Started" page:
You will see that for Maven projects, you don't need to create a sonar-project.properties file at all
You will even find a link to a sample Maven project that is analyzed on SonarCloud
Finally I find a solution. In the root path whete the yml file is you have to add:
sonar-project.properties
# Required metadata
sonar.projectKey=java-sonar-runner-simple:master
sonar.projectName=Rss-service
sonar.projectVersion=1.0
# Comma-separated paths to directories with sources (required)
sonar.sources=/microservice-application/rss-reader-service/src/main/java
sonar.java.binaries=/microservice-application/rss-reader-service/target/classes
# Language
sonar.language=java
# Encoding of the source files
sonar.sourceEncoding=UTF-8
And in the travis.yml I add:
script:
# other script steps might be done before running the actual analysis
- mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent install sonar:sonar
Edit:
sonar-project.properties not necessary. Only maven goals make sense.

maven... Failed to clean project: Failed to delete ..\org.ow2.util.asm-asm-tree-3.1.jar

I use STS(spring tool suite) + maven plugin.
Every time when I run my application using maven-clean I see following error:
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building hhsystem ui 1.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) # ui ---
[INFO] Deleting C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.471s
[INFO] Finished at: Mon Oct 21 12:34:33 MSK 2013
[INFO] Final Memory: 2M/90M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.4.1:clean (default-clean) on project ui: Failed to clean project: Failed to delete C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target\org.ow2.util.asm-asm-tree-3.1.jar -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
I have to close STS and go to C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target and delete org.ow2.util.asm-asm-tree-3.1.jar
After starting STS again it works, but this is a hassle.
Can you help me with this problem?
UPDATE
for Kalathoki L.
I run maven-clean from this state:
I see same behaviour from the command line as from the eclipse plugin
If I watch unlocker when STS is running I see
:
Stop your server before you start to clean.
Stopping a server
You can stop the server from the Servers view.
To stop the server:
In the Servers view ( Window > Show View > Other > Server >
Servers > OK), select the server that you want to stop.
Click the Stop the server icon
in the toolbar. In the Servers view, the status of the server
changes to Stopped.
If for some reason the server fails to stop, you can terminate the
process as follows:
a. Switch to the Debug perspective.
b. In the Process view, select the server process that you want to stop.
c. Click the Terminate
icon in the toolbar.
Note: When terminating a server, the server process will end and the server will not go through the normal routine of stopping, for example calling the destroy() method on a servlet.
Source: Eclipse Help
You may also try try -Dmaven.clean.failOnError=false
(from Maven FAQ)
Delete the java.exe process in Task Manager and run mvn clean install.It worked for me.
Your problem is that a running process within STS is using files located in your target directory while you execute a mvn clean command. Maven will be unable to delete these files (since other processes are still accessing them) and thus fail with that error.
Try to stop all processes (tests, servers, applications) from within STS before running Maven console commands. Look out: This behaviour might also appear if STS is cleaning up the projects and thus re-compiles the sources, and not running a process.
Close the target folder and its file you have opened before mvn clean
Probably there are many processes that use sources compiled, could be a server, an old maven instruction or IDE. Sure terminate all processes, stop the server and then execute maven again. If the problem persists, you should close java.exe process.
Regards!
Try disabling Project->Build Automatically.
As Scorpio suggested, there's a process running that's got a lock on a file somewhere.
I have a large multi-module maven project that regularly fails on clean and this resolves it for me.
I re-enable Build Automatically when I'm done.
I have same problem and this
mvn clean install -U
command fixed the error.
Summary : Use an external script (batch file) that a) stops the server and b) Unlocks the .jar file before running maven-clean.
Steps:
Bind the maven-antrun-plugin:run goal to the pre-clean phase of mvn clean. See how to do this here
See how to use the antrun plugin to run an external batch file in Windows here : sblundy's answer to "Starting external process". Let's call this file unlock_handles.bat
Use the Sysinternals handle utility download link in the pre_clean.bat to a) stop the Tomcat server and b) unlock the .jar file. handle -c and handle -p would be useful here.
Whew! That's a bit of work, but it will reliably automate the process for you so that you do need to do it manually yourself each time!
OK, here's a rough, proof-of-concept version of unlock_handles.bat for you to try out:
REM "Use handle.exe to figure out the process id and handle ids, parse the output, then close the handle (again using handle.exe)"
cd "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target"
"c:/Program Files/Process Explorer/handle.exe" -p java.exe "C:\Users\Nikolay_Tkachev\workspace\HHSystem\UI\target" > handles.txt
#echo "O====== Going to unlock all the below file handles! =======O"
FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO #echo %h
FOR /F "tokens=1-26 delims=: " %a in (handles.txt) DO handle -p %c -c %f -y
Of course, you have to change the path to Sysinternals' handle.exe before giving this a try.
If all steps (in existing answers) dont work , Just close eclipse and again open eclipse .
For linux users: possible solution.
Build error due to "Failed to delete < any-file-or-folder >" will occur if there is by chance of only delete access provided to root user rather to normal-user.
Fix : type ll command to list file that cannot be deleted, if the file is given root access, change to normal user by :
sudo chown -R user-name:user-name filename
Later try for maven clean and build.
solved by deleting the target folder manually.
I had similar issue. Earlier I was using Maven 3 to build the project. After switching to maven 2 , I had the above error.
Solved it by switching to Maven 3.
Maven complains if you do not have admin permissions on the target folder.Check if you have admin right to delete that folder.
I solved mine by doing:
mvn clean
mvn install
mvn clean install
For some reasons it worked for me . Good luck !!
If you lock org.ow2.util.asm-asm-tree-3.1.jar and start eclipse, the logging shows who was unable to lock the file. The same codeline who cant lock the file will not release the lock.
In pre-clean phase I execute with Maven Unlocker program. This program unlock all files and directory for anyone program.
I execute this with maven-antrun-plugin and only in windows systems
<profile>
<activation>
<os>
<family>windows</family>
</os>
</activation>
<build>
<plugins>
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>pre-clean</phase>
<configuration>
<tasks>
<exec dir="${project.build.directory}" executable="cmd" failonerror="false">
<arg value="Unlocker.exe" />
<arg value="/S" />
</exec>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
Please close all the browser tab. And next time when you try to upload war from another place except target folder.
If you run into this error in an IDE like Eclipse or IntelliJ, you may have one or more debug windows open and paused on a break-point. Terminate them.
The reason for this error is, the file which maven is trying to delete is being used by some process. One example of such process is Eclipse or any other IDE is doing validation on same project.
Please make sure that no validation running from eclipse or in any other IDE where project is open.
I closed Git Bash (might be another terminal you are working on). It stops the process
Delete ...0.0.1-SNAPSHOT.jar
mvn clean install (or other start your project command; we have .sh)
If you have a process running that using the packaged app deployed like an ftp or ssh session - it could prevent the resource being deleted or moved:
so identify the open port which is using the war or jar, close it - then restart
sftp - ssh port : 22
ssh port : depend on config
for me
mvn install
mvn clean install
worked..

Maven Release Plugin Pushing Tags To Wrong Repo

I'm trying to execute a mvn release:prepare on my project and it runs up until the very end where it tries to commit the tag then it fails:
[INFO] Tagging release with the label v1.8.0...
[INFO] Executing: /bin/sh -c cd /Users/terraframe/Documents/workspace/Runway-SDK && git tag -F /var/folders/tY/tY5PnSNPED0Yr7FtapST2++++TI/-Tmp-/maven-scm-864030210.commit v1.8.0
[INFO] Working directory: /Users/terraframe/Documents/workspace/Runway-SDK
[INFO] Executing: /bin/sh -c cd /Users/terraframe/Documents/workspace/Runway-SDK && git push ssh://git#github.com/terraframe v1.8.0
...
Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.4.1:prepare (default-cli) on project runwaysdk-main: Unable to tag SCM
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] ERROR: Repository not found.
[ERROR] fatal: The remote end hung up unexpectedly
The specific git command that fails is:
git push ssh://git#github.com/terraframe v1.8.0
Here's my scm definition in my runwaysdk-main pom:
<scm>
<connection>scm:git:ssh://git#github.com/terraframe/Runway-SDK.git</connection>
<developerConnection>scm:git:ssh://git#github.com/terraframe/Runway-SDK.git</developerConnection>
<url>scm:git:ssh://git#github.com/terraframe/Runway-SDK.git</url>
</scm>
tldr: My repo url is defined as scm:git:ssh://git#github.com/terraframe/Runway-SDK.git
Yet this git push command is trying to push to ssh://git#github.com/terraframe.
Why? And how do I fix it?
Edit:
I am executing this on a parent pom (runwaysdk-main) of a multi-module with a flat project structure:
github.com/terraframe/Runway-SDK
/runwaysdk-main
/runwaysdk-common
/runwaysdk-client
/runwaysdk-server
I am using the latest version of the maven-release-plugin, 2.4.1.
I think you're hitting https://issues.apache.org/jira/browse/SCM-709. As a workaround, you could use version 2.3.2 of the maven-release-plugin

Maven freezes while perfoming scm:update on VSS

Im trying to get source files from VSS using Maven.
But when I execute command
mvn -DvssDirectory="C:\Program Files\VisualSourceSafe\win32" scm:update
the log goes to
[INFO] [scm:update {execution: default-cli}]
[INFO] Executing: cmd.exe /X /C ""C:\Program Files\VisualSourceSafe\win32\ss" Get $/TEST -R -I- -GWS"
[INFO] Working directory: C:\temp\test
and then nothing happens. No error, no success.
Can someone advice how to proceed with downloading sources from VSS?
Try running mvn with the -X tag (to enable the debugging output) and see if you can figure out where it is getting stuck. Perhaps VSS is waiting for your credentials or something?
Doublecheck the documentation for using the VSS SCM plugin to make sure you aren't missing any properties. If you think you are finding a bug, try reporting an issue at http://jira.codehaus.org/browse/SCM.
I wonder if the double quotes are not interfering here. Maybe try to use the "short path name" instead:
mvn -DvssDirectory=C:\Progra~1\Visual~1\win32 scm:update
Or use the provider configuration file $user.home/.scm/vss-settings.xml:
<vss-settings>
<Settings>
<vssDirectory>C:\Program Files\VisualSourceSafe\win32</vssDirectory>
<Settings>
</vss-settings>
And try again.

Categories

Resources