76
votes

I have a job called "development" and another project called "code analysis". At the moment we have two different jobs and different workspaces, but same code; is there any way we could use the same workspace for multiple jobs?
I checked the plugins available in Jenkins but I haven't found any suitable one.

4
If you do use the same workspace, you will want to make sure you don't have concurrency and that you can properly track revisions between the two. A concurrency could happen if you are in the process of analyzing code when the development job starts checking code out. There are plugins (and answers) on how to prevent the issues on this site. (Full disclosure: We tried a common workspace and decided it worked better for us to use the clone workspace plugin with separate workspaces.)jwernerny
To do this concurrency easily, trigger the analysis job from the development job, and check the Advanced Project Option "Block build when upstream project is building" on the analysis job.Paul Hicks

4 Answers

86
votes

Suppose your "development" Jenkins job workspace is /var/workspace/job1. In the "code analysis" job configuration page, under the tab General click on Advanced... and select the option Use custom workspace and give the same workspace /var/workspace/job1 as of your "development" job.

8
votes

if you were not able to find Use custom workspace you can located it under your project configure>General>Advanced>Use custom workspace

6
votes

There is a Jenkins Plugins which enables you to create a shared workplace a setup them on every job which need the files from that given repository.

Use Case:

Similar to what you need, first create two jobs from the same Git Repository, then go to "Manage Jenkins" and you create a Shared Workspace. And point to it, on every job you need to read from that files.

Jenkins Plugin

https://wiki.jenkins-ci.org/display/JENKINS/Shared+workspace+plugin#


PS: You should look into "Known Issues" could be a deal breaker for your needs.

sometimes, on fresh copied job, shared-space url parameter not saving to config on first "save", you should save job twice to be sure.

^^ This one it's still unresolved, I tried and still happens. After some several saves (just to be sure) the job runs perfectly.

0
votes

I tried the inheritance plugin and whoa! that thing is a sledgehammer when all I have is a tiny nail.

I ended up adding a Post-build Action of "Trigger parameterized build on other projects" with "Build on the same node" and a "Predefined parameter". The downstream job needs to have a parameter of the same name defined (WORKSPACE_PARENT) but you can leave it blank. You then define the downstream job with a custom workspace (under General > Advanced)

I chose a post-build action because the actual success of the build job is independent on the results of the downstream build (for now). If you want to bump the results of the downstream job up to the parent job, you need to add it as a build task, not a post-build action.

It works great for what I need.

Parent's post-build task: Parent's post-build task

Child's custom workspace: Child's custom workspace