user1338413
user1338413

Reputation: 2551

What's the purpose of an artifact repository?

Wherever you read about continuous delivery or continuous integration it's recommended to use an artifact repository to store the artifacts even though Jenkins already stores them for each build.

So why is it recommended to use an artifact repository? Is there a smooth solution to work with the artifacts of the Jenkins builds, ex. to use these artifacts for deployment?

Upvotes: 37

Views: 28962

Answers (3)

Shiva Kumar
Shiva Kumar

Reputation: 3161

An artifact repository and continuous integration tools serve two different purposes and one cannot be substituted with the other. Check this video from Artifactory, one of the providers of artifact repositories, about why one should use an artifact repository.

Jenkins stores the artifacts as plain files without versioning while artifacts in an artifact repository can be version controlled. So you have a lot more flexibility in retrieving artifacts and governing them. Read this very good article on why we need them. Surely not all of those things are supported by continuous integration tools like Jenkins.

Moreover, you can also look at the Artifactory plugin for Jenkins which integrates the two.

Upvotes: 34

EricMinick
EricMinick

Reputation: 1487

An artifact repository is needed but the artifact repo is a conceptual piece an not always a distinct tool. With Jenkins you should have MD5 signatures and (I think) a way of downloading the files you want (web service call, right?) from your remote server. Certainly, if you're doing something simple like using the Jenkins build pipeline plugin, it should be able to access the right versions of the files smoothly.

Alternatively, if you are using a separate deployment tool, the better ones bundle an artifact repository.

Regardless, you want what the ITIL folks call a Definitive Media/Software Library. Definitive in that the bits are secure, trusted, and official. And a library in that they can be easily looked up and accessed. When working with an artifact repository, you need to make sure its adequately secure. It is backed up. It is accessible for your deployments (including to production). If you look at Jenkins and it meets your criteria in those categories, consider yourself done. If it's lacking, and I wouldn't be surprised if it was, then you need either a dedicated tool like the Maven repos, or something bundled with the deploy tooling.

For more of my rambling on the subject, there's a recorded webcast. The slides for that are up on Slideshare.

Upvotes: 2

wenic
wenic

Reputation: 1189

I haven't kept up to date with Jenkins, we still use a version of the CI when it was orginally called Hudson.

In your projects your poms you should normally point to your own artifact repository were you can fetch and deploy your own (company) projects.

Using an artifact repository with your CI server, it can then deploy successfully built snapshot and releases which can be available to other developers.

Upvotes: 0

Related Questions