Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What backend does Jenkins (Hudson) use for archiving build artifacts?

I've read about the disadvantages (especially this one) of using SVN to store build artificats (large binary files). Hudson was suggested as an alternative.

How does Hudson handle these files?

Edit: My project is not Java-based.

like image 545
kostmo Avatar asked Feb 23 '11 00:02

kostmo


3 Answers

Hudson can create/keep an archive of build artifacts, and provides a nice browser view for inspecting them.

You need to enable Archive the Artifacts in the job definition.

like image 192
ocodo Avatar answered Oct 07 '22 01:10

ocodo


Hudson is basically using flat file storage. You can find those files within Hudson in the jobs/builds/ folders. I'm not sure I'd say, "Use Hudson as an alternative to checking in file to source control" but using something as an alternative is a decent idea if it provides:

  1. authoritative place to store
  2. versioned binaries access control
  3. checksums for tamper resistance
  4. release meta-data (environment information; approval level)
  5. retention periods

I'm not sure how well Hudson scores on those marks, but I think it does at least some of that. SVN is non-terrible as a solution there as well, but really struggles with retention periods (old builds tend to eat disk space like crazy) and isn't terribly well optimized for large binaries - most SCM systems are optimized for smallish text files.

I stole the list above from this presentation: http://www.anthillpro.com/html/resources/webinars/Role_of_Binary_repositories_in_Software_Configuration_Management.html (registration required)

like image 25
EricMinick Avatar answered Oct 06 '22 23:10

EricMinick


We use Jenkins for our builds, but we also store the artifacts from the builds. Like Eric said above, Hudson/Jenkins store artficats using flat file storage. It is organized based on the build.

Some things I have noticed from use (in reponse to Eric's questions about an alternative to souce control for binaries):

  • Each build stores it's own artifact, so you do have a versioning of sorts.
  • You can use the fingerprinting option when archiving. This will allow you to differentiate between versions and also check for corruption.
  • Retention periods are completely up to you. We keep artifacts forever.

FYI, our projects are not Java either (they are C/C++) and our artifacts are tar.gz/zip files and documents.

It may or may not be the best way to store binaries, but it is definitely decent as long as you have regular backups (weekly in our case) and your disk is fault tolerant.

like image 25
Sagar Avatar answered Oct 07 '22 00:10

Sagar