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.
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