user393267
user393267

Reputation:

Access Jenkins host drive, beside the job workspace

I would like to share byproducts of one jenkins job, with another one that run after.

I am aware that I can set "use custom workspace", but that would merge the jobs together; which is not what I want. I just need to move few files in a location, that are read by the next job.

So far I can't find out how you actually tell Jenkins jobs to look for a specific folder; since it does not have a concept of file system, beyond what is going on in the job workspace folder.

Is there a way to access the host file system, or declare a shared folder inside jenkins (like in the main workspace folder, which contains all the other jobs?), so I can copy and read files in it, from different jobs?

Where possible I would like to avoid plugins and extras; I would like to use what is included with Jenkins base.

Upvotes: 1

Views: 2535

Answers (2)

Dave Bacher
Dave Bacher

Reputation: 15982

I realize you want to avoid plugins, but the Jenkins-y way to accomplish this is to use the Copy Artifacts plugin, which does exactly what you want.

There are a variety of problems that you may run into when trying to manage the filesystem yourself. (How do you publish to a common location when running on different build nodes? How do you handle unsuccessful builds?) This solution uses Jenkins to track builds and artifacts. In the absence of a separate artifact repository, its a lot better than trying to manage it yourself.

To use Copy Artifacts:

  • As a Post-Build step, choose "Archive Artifacts" in the first job and enter the path(s) to the generated files.
  • Then in the second job, add a "Copy Artifacts from another project" build step to grab some or all files marked as artifacts in your first job. (By default, Jenkins will re-create the paths of the generated files in the second job's workspace, which may or may not be what you want, but you can change this behavior.)

Upvotes: 1

Edwin Buck
Edwin Buck

Reputation: 70949

Configure the Jenkins to run a Maven build, and deploy your artifacts with "mvn clean deploy" This will push it to an "artifact server" which you probably have, or if not, need to add / configure.

Then in your downstream job, also a Maven job, you configure it to depend on the same artifact that was published in the upstream job. This will trigger a download of the artifact from the artifact server and make it available to the build.

Upvotes: 0

Related Questions