Using custom workspace in Jenkins causes git timeout - jenkins

I'm trying to checkout, and build my git project in a custom folder using Jenkins. I have set the custom workspace from the "Advance Project Options" tab. However, whenever I try to run the project, I get the following error:
Building in workspace /myapp
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url https://github.com/.../... # timeout=10
Cleaning workspace
> git rev-parse --verify HEAD # timeout=10
Resetting working tree
> git reset --hard # timeout=10
> git clean -fdx # timeout=10
ERROR: Error fetching remote repo 'origin'
ERROR: Error fetching remote repo 'origin'
Warning: you have no plugins providing access control for builds, so falling back to legacy behavior of permitting any downstream builds to be triggered
Finished: FAILURE
But if I run the project in the default workspace, it seems to work fine.
I'm wondering whether the structure of my custom workspace is wrong. Basically, I have the following setup:
The name of my git repo is "myapp". When I use the defualt workspace, the project is checked out, and built in: /var/lib/jenkins/jobs/myjob/workspace/[files inside myapp repo]. After this, I have to copy the files from the default workspace to my actual folder using:
cp /var/lib/jenkins/jobs/myjob/workspace/* /myapp/.
But for the custom workspace, I have given the directory as /myapp. I want Jenkins to checkout the code from git into /myapp, and then do the build. Would the folder structure cause any problems? If not, why is it failing?

Related

Modules changed, recalculating dependency graph

Got several Jenkins job. But when ever we run them, we get stuck for 15-20 minutes at following:
Modules changed, recalculating dependency graph
Following is the complete log:
In progress
Console Output
Started by user *****
Building remotely on ****server in workspace *****workspace
git rev-parse --is-inside-work-tree
Fetching changes from the remote Git repository
git config remote.origin.url *****
Fetching upstream changes from *****
git --version
using GIT_SSH to set credentials *****
git fetch --tags --progress **** +refs/heads/:refs/remotes/origin/
git rev-parse origin/*^{commit}
Checking out Revision ** (origin/****)
git config core.sparsecheckout
git checkout -f *****
First time build. Skipping changelog.
[*****] $ /bin/bash -xe /tmp/hudson*.sh
+ rm -rf .repository/com/****
Parsing POMs
using settings config with name **** Settings
Downloaded artifact ******.pom
Downloaded artifact ******.pom
Modules changed, recalculating dependency graph
My question is how to remove or shorten this wait time during dependency graph calculation.

Jenkins 'Honor refspec on initial clone'; parameterized refspec?

I have a Jenkins job that uses the Git plugin to clone a repository. I have configured it to take refspec configuration from a parameter in Repositories --> Advanced (want to use the same job for multiple refspecs).
This works well, until I select the "Honor refspec on initial clone" option in Advanced clone behaviors:
> git fetch --progress git#REDACTED ${REFSPEC}
> git config remote.origin.url git#REDACTED # timeout=10
> git config --add remote.origin.fetch ${REFSPEC} # timeout=10
> git config remote.origin.url git#REDACTED # timeout=10
Fetching upstream changes from git#REDACTED
using GIT_SSH to set credentials
> git fetch --progress git#REDACTED +refs/heads/*:refs/remotes/origin/*
this is correct ^^^^
As you can see, the initial fetch does not resolve the parameter $REFSPEC, though the second fetch does so correctly.
Am I doing smoething wrong, or is this a bug? Our clone times are through the roof and we need every optimization we can get. I can just add all possible refspecs to the config (this is supported), but that increases the clone time by significantly.
That is a bug. Since the refspec parameter is expanded when used without the "Honor refspec on initial clone", it should be honored as well when used with "Honor refspec on initial clone".
Submit a git-plugin bug to track the problem. Refer to JENKINS-49758 for a related bug.

jenkins job build not in slave node

build job( build docker image ,code from github) in slave machine by configuration,but it do not build success...if change job in master ,it build success
slave build message :
Started by user admin
Building remotely on jenkins-slave (slave) in workspace /home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq
Cloning the remote Git repository
Cloning repository git#github.com:xxxxxxx/wcount.git
> git init /home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq # timeout=10
Fetching upstream changes from git#github.com:xxxxxxx/wcount.git
> git --version # timeout=10
using GIT_SSH to set credentials 71bnh6gke9kmabye9qu2qsazzpofjsa
> git -c core.askpass=true fetch --tags --progress git#github.com:xxxxxxx/wcount.git +refs/heads/*:refs/remotes/origin/*
> git config remote.origin.url git#github.com:xxxxxxx/wcount.git # timeout=10
> git config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
> git config remote.origin.url git#github.com:xxxxxxx/wcount.git # timeout=10
Fetching upstream changes from git#github.com:xxxxxxx/wcount.git
using GIT_SSH to set credentials 71bnh6gke9kmabye9qu2qsazzpofjsa
> git -c core.askpass=true fetch --tags --progress git#github.com:xxxxxxx/wcount.git +refs/heads/*:refs/remotes/origin/*
> git rev-parse origin/master^{commit} # timeout=10
Checking out Revision 5730301886fa5c02522705de817c5ddac0f0dbce (origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f 5730301886fa5c02522705de817c5ddac0f0dbce
> git rev-list 5730301886fa5c02522705de817c5ddac0f0dbce # timeout=10
ERROR: Build step failed with exception
java.lang.IllegalArgumentException: configured dockerFolder '/home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq' does not exist.
at org.jenkinsci.plugins.dockerbuildstep.cmd.CreateImageCommand.execute(CreateImageCommand.java:93)
at org.jenkinsci.plugins.dockerbuildstep.DockerBuilder.perform(DockerBuilder.java:75)
master workspace is /home/jenkins_home/workspace
slave workspace is /home/jenkins/workspace
i can find /home/jenkins/workspace/71bnh8co385ctlmoxgbumdnpnet3ywq directory in slave node。
i guess this build in master node,but i see the task in slave queue
jenkins docker-build-step plugin don't support task run on slave node,so you can change some code to support it 。
add a jar to slave which can create image and push image。then master invoke this jar in slave
Not sure if that's the case here, but it seems that Jenkins sets a path to Dockerfile in Docker build/create task at Build stage as $WORKSPACE/docker so you either have to ensure you have that folder (containing Dockerfile and other needed files) in your workspace/git repo or just remove docker from path ENV above (which is a better solution, imho) and Jenkins will read Dockerfile from main workspace/git directory. Hope that helps.

MS Build Failure on Jenkins

I am new to Jenkins CI. However the issue looks very easy enough but its not working for me. My source code is in GIT and i am using Git repository for that.
I am getting the error below.
Thanks in Advance.
Started by user abc
Building on master in workspace /var/lib/jenkins/workspace/Hello World
git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
git config remote.origin.url
Fetching upstream changes from
git --version # timeout=10
using .gitcredentials to set credentials
git config --local credential.helper store --file=/tmp/git7943155421179786207.credentials # timeout=10
git fetch --tags --progress +refs/heads/:refs/remotes/origin/
git config --local --remove-section credential # timeout=10
git rev-parse refs/remotes/origin/master^{commit} # timeout=10
git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Checking out Revision 833228fa50173e7977b4d5ee86c1385b5c6494be (refs/remotes/origin/master)
git config core.sparsecheckout # timeout=10
git checkout -f 833228fa50173e7977b4d5ee86c1385b5c6494be
git rev-list 833228fa50173e7977b4d5ee86c1385b5c6494be # timeout=10
Path To MSBuild.exe: msbuild.exe
Executing the command msbuild.exe NimbusAutomation.sln from /var/lib/jenkins/workspace/Hello World
[Hello World] $ msbuild.exe ABCAutomation.sln
Build step 'Build a Visual Studio project or solution using MSBuild' changed build result to FAILURE
Build step 'Build a Visual Studio project or solution using MSBuild' marked build as failure
Warning: this build has no associated authentication, so build permissions may be lacking, and downstream projects which cannot even be seen by an anonymous user will be silently skipped
Finished: FAILURE
This can be caused by not configuring a jobs authorization policy correctly.
Check either the downstream job to see its configuration, or go to
Manage Jenkins-> Configure Global Security -> Access Control for Builds -> Configure Build Authorizations in Project Configuration
And check the global settings.
After finding the parent settings, go to the project giving the error select the same configuration in the section that looks like :
If this still does not work, you might also need to make sure that the user has the adequate permissions if you are using matrix based security.
Manage Jenkins-> Configure Global Security -> Authorization
And in the authorization matrix make sure the necessary user has build permissions
See also
Authorize project plugin
How To Configure Access Control For Builds
Thanks. I did all the advised settings above, it only resulted in Warning message to disappear, the build still fails.
The build works fine on my local Command prompt when i pass - msbuild.exe NimbusAutomation.sln but still fails on jenkins...
Path To MSBuild.exe: msbuild.exe
Executing the command msbuild.exe msbuild.exe NimbusAutomation.sln NimbusAutomation.sln from /var/lib/jenkins/workspace/Hello World
[Hello World] $ msbuild.exe msbuild.exe NimbusAutomation.sln NimbusAutomation.sln
Build step 'Build a Visual Studio project or solution using MSBuild' changed build result to FAILURE
Build step 'Build a Visual Studio project or solution using MSBuild' marked build as failure
Finished: FAILURE

Jenkins - Build loop

Solutions
When configing the branchs to build remove the wildcard *:
*/master to be only master
This error only occours when a GIT SCM is related to the JOB.
Ex: I have a daily job to build an Android project.
First i thought that it was a cron problem, currently im using 50 10 * * *, but i have tried H 10 * * * without any success. When the time comes, it always build the job (Failure or Success) and it queue another job.. and so on...
Would last have run at Friday, May 22, 2015 10:01:58 AM BRT; would next run at Saturday, May 23, 2015 10:01:58 AM BRT.
Even a build with parameter it queue a another job everytime.
So it stays in a build loop, forever..
Config:
Jenkins ver. 1.614.
Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-46-generic x86_64)
GIT client plugin: 1.17.1
GIT plugin: 2.3.5
Console Output:
Started by an SCM change
Building in workspace .../jobs/PROJECT_NAME/workspace
> git rev-parse --is-inside-work-tree # timeout=10
Fetching changes from the remote Git repository
> git config remote.origin.url ssh://GIT_ADDRESS/ # timeout=10
Cleaning workspace
> git rev-parse --verify HEAD # timeout=10
Resetting working tree
> git reset --hard # timeout=10
> git clean -fdx # timeout=10
Fetching upstream changes from ssh://GIT_ADDRESS/
> git --version # timeout=10
> git -c core.askpass=true fetch --tags --progress ssh://GIT_ADDRESS/ +refs/heads/master:refs/remotes/origin/master
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Multiple candidate revisions
Scheduling another build to catch up with PROJECT_NAME
Checking out Revision e6d726c2d31cb0d7e6fad4362ee85e6fac1712c6 (refs/remotes/origin/master)
> git config core.sparsecheckout # timeout=10
> git checkout -f e6d726c2d31cb0d7e6fad4362ee85e6fac1712c6
> git rev-list e6d726c2d31cb0d7e6fad4362ee85e6fac1712c6 # timeout=10
[Gradle] - Launching build.
[android] $ gradle clean build assemble
...
Maybe the problem is this?
> git rev-parse refs/remotes/origin/master^{commit} # timeout=10
> git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
Multiple candidate revisions
Scheduling another build to catch up with PROJECT_NAME
The build loop:
Job Config:
Global Config:
Review the beginning of the console logs, for both the job that you manually started, and the job that gets queued next automatically.
In the beginning of the console log, it gives a reason for why the build was triggered, for example 09:46:05 Started by an SCM change or 16:06:58 Started by user Slav. Please add to the question the start of both console logs.
Edit:
Now that we know that Jenkins detects an SCM change trigger we can further speculate that what's causing this behaviour is an SCM post-commit hook of some sort, or another script activation sending a request to Jenkins.
Post-commit hooks should not work if SCM polling is not enabled, but nothing else makes sense, so let's investigate that avenue. Add /pollingLog/ to the build URL of the build number that was triggered "by SCM change". There is a chance that nothing would be found, but if there is, but let's make sure.
Next, if possible, bind Jenkins to a different IP address and/or port. If there are "rogue" scripts that are triggering secondary builds, they won't be able to adapt to changed address.
Edit 2:
Looks like there is a bug in git client plugin itself, it was fixed in version 1.6.2. Please check the version of your git plugins.
Sources: https://issues.jenkins-ci.org/browse/JENKINS-10767 and https://issues.jenkins-ci.org/browse/JENKINS-20286
Above screen shot looks fine but i am sure there must be some other configuration.
can you provide detail (rest of the) configuration too?
Please give below code in Build periodically section and try if that resolves the issue
H(0-50) 10 * * *
Make sure your repo doesn't have more than one branch that matches your Branch Specifier by using the full path to the branch: "refs/heads/master" instead of "*/master"

Resources