Artifacts from Build Triggers
Overview
When an external CI system triggers a pipeline, Spinnaker can use the CI build information to inject relevant artifacts into the pipeline. The instructions here assume that you have set up a CI system and are familiar with using property files to pass variables from CI builds to Spinnaker pipelines.
The extraction of artifacts from the build information is done via a Jinja template; the template uses the trigger as context and outputs a list of artifacts to inject into the pipeline. Spinnaker provides a set of standard templates to use for artifact extraction, which users can augment with custom templates.
Requirements
The instructions here assume that you have set up a CI system and are familiar with using property files to pass variables from CI builds to Spinnaker pipelines.
Select a template
To configure Spinnaker to use a Jinja template for artifact extraction, export the following properties from your CI build:
- messageFormat: the name of the Jinja template to use
- customFormat:- trueif- messageFormatrefers to a user-configured template;- falseor omitted if it refers to a Spinnaker-supplied template
For example, to use the Spinnaker-provided JAR template, you would export the following
properties from your CI job:
messageFormat=JAR
The recommended way to configure artifact templates is by using the hal config artifact templates
Halyard command
:
hal config artifact templates add <name of template> --template-path <path to the template> 
As an alternative, you can manually configure templates by adding the following to igor-local.yml:
artifacts:
  templates:
  - name: <name of template>
    templatePath: <path to the template>
(Before Spinnaker 1.13, this manual configuration went into echo-local.yml. As of 1.13, it goes
in igor-local.yml.)
You can then use the configured custom template by exporting the following as properties from your CI build:
messageFormat=<name of template>
customFormat=true
Bind variables into templates
In general, artifact-extracting templates will read other properties that are exported
by the CI job. The general pattern is to export any build-specific information in the
property file and to have the Jinja template construct the artifact by looking in
trigger.properties.
For example, consider a Jenkins job uploads a .jar file to a maven repository. We might define
a custom Jinja template custom-jar.jinja as follows:
{% raw %}
  {
    "reference": "{{ properties.group }}-{{ properties.artifact }}-{{ properties.version }}",
    "name": "{{ properties.artifact }}-{{ properties.version }}",
    "version": "{{ properties.version }}",
    "type": "maven/file"
  }
{% endraw %}
We could then generate a useful artifact by having the CI job export the following:
group=test.group
artifact=test-artifact
version=123
messageFormat=custom-jar
customFormat=true
Supplied templates
The templates that are supplied with Spinnaker can be found in the following folder .
JAR
The JAR template creates an artifact representing a JAR archive in a Maven or Ivy repository. This template expects the following properties to be exported:
- group
- artifact
- version
- (optional) classifier
By default, the artifact represents an archive in a Maven repository; to create an artifact for an
archive in an Ivy repository, export the property repotype=ivy.