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.