Artreyu, an artifact assembly tool

Artreyu is an open-source command line tool for software build pipelines that need to create artifacts which are composed of multiple versioned build parts. The design of this tool is inspired by the Apache Maven project which provides assembly support for Java projects. I created Artreyu to support a project that delivers compositions of many non-Java artifacts of which some are operating system dependent.

Artreyu works with a repository to archive, fetch and assemble artifacts. To support remote repositories such as Artifactory and Nexus, Artreyu has a simple plugin architecture ; each plugin is just a binary that gets invoked by the artreyu tool. Sources for the nexus plugin is on github.com/emicklei/artreyu-nexus.

Artreyu uses a simple descriptor file to specify group and version information.

api: 1

group: 		com.company
artifact: 	awesometool
version: 	1.0-SNAPSHOT
type: 		tgz

Artifacts are stored using a directory layout similar to what Maven Central uses.

$group/$artifact/$version/$osname/$artifact-$version.$type

Notice the $osname in the path that allows for storing platform specific artifacts. For independent artifacts, the any-os label is used. For assembling composite artifacts, the descriptor can have a list of parts.

api: 1

group: com.company
artifact: assembly
version: 2
type: tgz

parts:
- group: com.company
  artifact: awesometool
  version: 1.0-SNAPSHOT
  type: tgz

- group: com.company
  artifact: html-documentation
  version: 2.0
  any-os: true
  type: tgz

When running the assemble command, the parts are downloaded to a temporary directory, the parts are extracted (if compressed), all content is compressed again (if the assembly type indicates that) into a new artifact and is archived back into the repository.

Available on github.com/emicklei/artreyu. MIT License.

comments powered by Disqus