2

Our situation

We have 8 teams and each team produces 8 artifacts (A,B,C, etc). Half of the teams use Git, the rest use clearcase. I would like to have each team utilize Git but this will be a struggle (wish me luck).

Each team is responsible for building their own artifacts. These artifacts can be scripts, iso's, jars etc. All these artifacts are put together to create the product.

Our Problem

Currently we have No System to handle these artifacts. We have each team place on a drive then deliver it to the a person. This person then organizes the artifacts to create the releasable product.

As you can imagine this causes a lot of issues. Its difficult to track versions among artifacts and the releasable product. Human error. etc

Our Plan So Far

We are currently migrating each team to Microsoft TFS. On TFS each team would create their own Build definition and build their artifact. The test team will test each artifact and determine whether they pass or fail.

Holes in the Plan

We are struggling to find a solution that would store and version each of these artifacts and manage dependencies. What we desire is to create the product on the fly from tested versions of each artifact.

Questions and Advice

What solutions would best handle these requirements ? What are some of the best practices and processes for configuration management ?

We experimented with Nexus Repository OSS but we were not happy with some of its functionality.

I believe Git-LFS could be apart of the solution. It enables versioning through tagging, and I believe you can retrieve commits based on the tag. The one downside is, our company has limited Git knowledge (we are getting better) but are not there yet.

Thanks for the help!

If you need more information please let me know. Its hard to describe everything detail without writing a novel.

  • 2
    Something like Nexus or Artifactory is the typical place to store build artifacts. What functionality were you unhappy with? – Samuel Aug 2 '17 at 22:39
  • @Samuel we were unable to version. When Team A made a push to the Nexus server we would like to slap a version on the artifact and switch between versions. – Rstack Aug 3 '17 at 2:49
  • @Samuel FYI we were using OSS which does not have all the features of Nexus Pro. Pro may allow us to version but since its cost $ we have a lot of hoops to jump through to acquire it – Rstack Aug 3 '17 at 3:09
  • OSS does support artifact versions – Samuel Aug 3 '17 at 3:33
4

It sounds like you need a package management system. There's several available depending on the platform you are working with (NPM, Maven, Nuget, Chocolate, etc.)

TFS has built in support for hosting Nuget packages, and Visual Studio 2017 makes creating Nuget packages for .Net Standard and .Net Core apps very easy. However, if you have a heterogeneous environment you will probably need to look at Nexus or Artifactory which support multiple package management systems.

Package Management has both server side and client side features that can help your situation:

  • All provided packages have an archive and a manifest.
  • The manifest lists all the dependencies for that package.
  • The client side (Nuget, Maven, etc.) looks at the current project's dependencies and downloads the dependencies (and their dependencies) so that you can build and test the project.

It's pretty standard for DevOps shops to host their own private repositories, both to manage dependencies and to host internal artifacts that are not meant to be shared with the world.

Nexus and Artifactory both support multiple build systems, so they can play the repository role for more than just one build tool. TFS, Jenkins, TeamCity, etc. all play well with the package management systems, and can even deploy the build artifacts to the package management server automatically.


Part of the solution is also having build numbers in your version number. You can include the GIT commit number as the final part of the version number quartet to help you trace it back to a specific commit. Your automated build system can inject that into the package creation step, which can help with bug reports, etc.

  • This is great! Nuget and Chocolate seem promising. We can host a Nuget server in house and have teams publish and version their artifacts. We assumed that since TFS was building these projects Maven would not be useful to us but on it could help us with versioning and dependency management. One important bit is that a few of the artifacts are massive (Huuugge). For example some are vm images (ovf files, iso's etc). The final product is multiple TBs . Would these artifacts/packages work well with Maven and Nuget ? – Rstack Aug 3 '17 at 3:07
  • Perhaps not. Docker image repositories are the largest thing I've seen managed. The biggest issue of course is the disk space/cloud storage space required to hold the massive dependencies. If that is not a problem for you, then using Chocolate or something like that might work. You're treading on territory I'm unfamiliar with. – Berin Loritsch Aug 3 '17 at 13:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.