8

While investigating CI tools, I've found that many installations of CI also integrate to artifact repositories like SonaType Nexus and JFrog Artifactory.

Those tools sound highly integrated to Maven. We do not use Maven, nor do we compile Java even. We compile C++ using Qt/qmake/make, and this build works really well for us. We are still investigating CI tools.

What is the point of using an Artifact repository?

Is archiving to Nexus or Artifactory (or Archiva) supposed to be a step in our make chain, or part of the CI chain, or could it be either?

How might I make our "make" builds or perl/bash/batch scripts interact with them?

sorin
  • 161,544
  • 178
  • 535
  • 806
macetw
  • 1,640
  • 1
  • 17
  • 26
  • 1
    @SLaks That's poppycock. Binary repository managers are good for all developers that produce or consume binaries; be they JARs, WARs, Debs, RPMs, DLLs, etc. – noamt May 10 '13 at 16:16
  • You may find this link helpfull: http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix – sorin Apr 08 '15 at 11:41

2 Answers2

12

An artifact repository has several purposes. The main purpose is to have an copy of maven central (or any other maven repo) to have faster download times and you can use maven even if the internet is down. Since your not using maven this is irrelevant for you.

The second purpose is to store files in it you want to use as dependency but you can not download freely from the internet. So you buy them or get them from your vendors and put them in your repo. This is also more applicable to maven user and there dependency mechanism.

The third important purpose is to have a central way were you can store your releases. So if you build a release v1.0 you can upload it to such a repository and with the clean way of naming in maven its kinda easy to know how to find v1.0 and to use it with all other tools. So you could write a script which downloads your release with wget and install it on a host.

Most of the time these repos have a way of a staging process. So you can store v1.0 in the repo in staging. Someone do the test and when its fine he promotes it to the release repo were everybody can find and use it.

Its simple to integrate them with Maven projects and they are lot of other build tools frameworks with has a easy possiblity to connect against it like ant ivy, groovy grape and so on. Because of the naming schema there is no limitation that you use bash or perl to download/upload files from it.

So if you have releases or files which should be shared between projects and do not have a good solution for it an artefact repository could be good starting point to see how this could work.

mszalbach
  • 10,612
  • 1
  • 41
  • 53
  • 1
    Both Artifactory and Nexus support Java binaries as .NET binaries as well as Debs and RPMs – noamt May 10 '13 at 16:17
  • I really disagree with the claim "But they are designed to work best with Maven projects and the needs of Maven dependencies". While this is true for Nexus, Artifactory is truly build tool and technology agnostic, and works great with almost any build tool and build server by letting the user control the layout of artifacts. It also has built-in facilities for Gradle, Ivy, P2, .NET, RPMs, etc. – JBaruch May 11 '13 at 22:54
  • I changed the text a little bit to make it more clear that you can use them with almost everything and that lot of tools has integrated a connection to an artefact repo. The clame was based on the fact that most tools do not read the settings.xml of maven and need a special setting file to connect against your repo. However this is irrelevant cause maven is not used at all in the question and for bash/perl the config must done anyway. So I removed it. – mszalbach May 12 '13 at 11:22
  • @JBaruch Nexus support Gradle, Ivy, P2, OBR, .net, RPM repos as well as you well know... – Manfred Moser May 12 '13 at 14:40
  • @ManfredMoser Gradle and Ivy in their native layout? – JBaruch May 12 '13 at 19:04
  • No... but in Maven repo format which works perfectly fine for Gradle/Ivy and is actually the most commonly used. – Manfred Moser May 14 '13 at 17:36
  • it is commonly used not because it's good, but because the popularity of central. popular != best. – JBaruch May 19 '13 at 11:04
  • A must read: http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix – sorin Apr 08 '15 at 11:41
0

As mentioned here:

  • Providing stable and reliable access to repositories

  • Supporting a large number of common binaries across different environments

  • Security and access control

  • Tracing any action done to a file back to the user

  • Transferring a large number of binaries to a remote location

  • Managing infrastructure configuration across different environments

overexchange
  • 15,768
  • 30
  • 152
  • 347