polarice polarice - 1 year ago 155
Git Question

Jenkins Git Plugin not pulling latest changes before building job

I am working with Jenkins CI and am trying to properly configure my jobs to use git.

I have the git plugin installed and configured for one of my jobs. When I build the job, I expect it to pull the latest changes for the branch I specify and then continue with the rest of the build process (e.g., unit tests, etc.).

When I look at the console output, I see

> git fetch --tags --progress ssh://gerrit@git-dev/Util +refs/heads/*:refs/remotes/origin/*
> git rev-parse origin/some_branch^{commit}
Checking out Revision <latest_SHA1> (origin/some_branch)
> git config core.sparsecheckout
> git checkout -f <latest_SHA1>
> git rev-list <latest_SHA1>

I see that the plugin fetches and checks out the proper commit hash, but when the tests run it seems as though the repo wasn't updated at all.
If I go into the repository in Jenkins, I see there that the latest changes were never pulled.

Shouldn't it pull before it tries to build?

I have git 1.8.5 installed on my Jenkins machine, which is a recommended version.

After checking other similar sounding questions on SO, their answers weren't helpful for my problem.

Answer Source

I believe Jenkins pulls the changes and builds in it's own tmp directory. So, your repository directory isn't getting updated although Jenkins is properly building the new code in it's own sandbox.

My solution to this has been to add a "git pull" step in my build process like so:

When a new commit is delivered to my GitHub repo:
1. Build my project

If successful, perform the following post-build steps:
1. Execute Shell:

cd /your/repo/directory/
git pull

You can obviously modify the "git pull" command to do whatever you need to do if a 'pull' doesn't work for you.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download