<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Spinnaker – What is a Spinnaker Artifact?</title>
    <link>/docs/reference/artifacts/</link>
    <description>Recent content in What is a Spinnaker Artifact? on Spinnaker</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="/docs/reference/artifacts/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Artifacts from Build Triggers</title>
      <link>/docs/reference/artifacts/from-build-triggers/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/reference/artifacts/from-build-triggers/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;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

&lt;a href=&#34;/docs/setup/other_config/ci/&#34;&gt;set up a CI system&lt;/a&gt;
 and are familiar with using

&lt;a href=&#34;/docs/guides/user/pipeline/expressions/#property-files&#34;&gt;property files&lt;/a&gt;
 to pass variables from
CI builds to Spinnaker pipelines.&lt;/p&gt;
&lt;p&gt;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 
&lt;a href=&#34;#supplied-templates&#34;&gt;standard templates&lt;/a&gt;
 to use for
artifact extraction, which users can augment with custom templates.&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;p&gt;The instructions here assume that you have

&lt;a href=&#34;/docs/setup/other_config/ci/&#34;&gt;set up a CI system&lt;/a&gt;
 and are familiar with using

&lt;a href=&#34;/docs/guides/user/pipeline/expressions/#property-files&#34;&gt;property files&lt;/a&gt;
 to pass variables from
CI builds to Spinnaker pipelines.&lt;/p&gt;
&lt;h2 id=&#34;select-a-template&#34;&gt;Select a template&lt;/h2&gt;
&lt;p&gt;To configure Spinnaker to use a Jinja template for artifact extraction, export the
following properties from your CI build:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;messageFormat&lt;/code&gt;: the name of the Jinja template to use&lt;/li&gt;
&lt;li&gt;&lt;code&gt;customFormat&lt;/code&gt;: &lt;code&gt;true&lt;/code&gt; if &lt;code&gt;messageFormat&lt;/code&gt; refers to a user-configured template;
&lt;code&gt;false&lt;/code&gt; or omitted if it refers to a Spinnaker-supplied template&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, to use the Spinnaker-provided &lt;code&gt;JAR&lt;/code&gt; template, you would export the following
properties from your CI job:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;messageFormat&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;JAR
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The recommended way to configure artifact templates is by
adding the following blocks to &lt;code&gt;igor-local.yml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;artifacts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;templates&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;&amp;lt;name of template&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;templatePath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;&amp;lt;path to the template&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;You can then use the configured custom template by exporting the following as properties from your
CI build:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;messageFormat&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;name of template&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;customFormat&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;bind-variables-into-templates&#34;&gt;Bind variables into templates&lt;/h2&gt;
&lt;p&gt;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
&lt;code&gt;trigger.properties&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For example, consider a Jenkins job uploads a &lt;code&gt;.jar&lt;/code&gt; file to a maven repository. We might define
a custom Jinja template &lt;code&gt;custom-jar.jinja&lt;/code&gt; as follows:&lt;/p&gt;
&lt;p&gt;{% raw %}&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ properties.group }}-{{ properties.artifact }}-{{ properties.version }}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ properties.artifact }}-{{ properties.version }}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ properties.version }}&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;: &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;maven/file&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;{% endraw %}&lt;/p&gt;
&lt;p&gt;We could then generate a useful artifact by having the CI job export the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;group&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;test.group
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;artifact&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;test-artifact
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;123&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;messageFormat&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;custom-jar
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000&#34;&gt;customFormat&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;supplied-templates&#34;&gt;Supplied templates&lt;/h2&gt;
&lt;p&gt;The templates that are supplied with Spinnaker can be found in the

&lt;a href=&#34;https://github.com/spinnaker/echo/tree/master/echo-pipelinetriggers/src/main/resources&#34; target=&#34;_blank&#34;&gt;following folder&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;jar&#34;&gt;JAR&lt;/h3&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;group&lt;/li&gt;
&lt;li&gt;artifact&lt;/li&gt;
&lt;li&gt;version&lt;/li&gt;
&lt;li&gt;&lt;em&gt;(optional)&lt;/em&gt; classifier&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;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 &lt;code&gt;repotype=ivy&lt;/code&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Artifacts In App Engine</title>
      <link>/docs/reference/artifacts/in-appengine/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/reference/artifacts/in-appengine/</guid>
      <description>
        
        
        &lt;p&gt;Artifacts can be used for the following in the Google App Engine provider:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;They can be used to reference a GCS bucket that contains source code to be deployed on Google App Engine.&lt;/li&gt;
&lt;li&gt;They can be used to reference a docker image stored in Google Container Registry to be deployed on App Engine Flex.&lt;/li&gt;
&lt;li&gt;They can be used to reference config files (such as app.yaml) to be used during deployment to App Engine.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;artifacts-referencing-source-code-from-gcs&#34;&gt;Artifacts referencing source code from GCS&lt;/h2&gt;
&lt;p&gt;To use an artifact to reference source code that is stored in a GCS bucket, use the &amp;ldquo;GCS&amp;rdquo; Source Type
when configuring a Server Group.&lt;/p&gt;
&lt;p&gt;In the image below, a GCS Artifact has been configured in the Create Server Group modal as the
source code to deploy to App Engine:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./gcs-bucket-source-code-artifact.png&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;artifacts-referencing-docker-images-from-gcr&#34;&gt;Artifacts referencing Docker images from GCR&lt;/h2&gt;
&lt;p&gt;To use an artifact to reference docker images stored in Google Container Registry, set the Server
Group&amp;rsquo;s Source Type to &amp;ldquo;Container Image&amp;rdquo; and set the &amp;ldquo;Resolve URL&amp;rdquo; field to &amp;ldquo;via pipeline artifact&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;In the below image, a Docker Artifact has been configured in the Create Server Group modal as the
container image URL to use for deployment to App Engine Flex:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./container-image-artifact.png&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;artifacts-referencing-config-files&#34;&gt;Artifacts referencing config files&lt;/h2&gt;
&lt;p&gt;To use an artifact to reference config files used during deployment to App Engine, click the
&amp;ldquo;Add Config Artifact&amp;rdquo; button in the Create Server Group modal.&lt;/p&gt;
&lt;p&gt;In the below image a GCS Artifact has been added to the Config Files section of the Create Server Group modal:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./config-file-artifact.png&#34;/&gt;
&lt;/figure&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Artifacts In Cloud Foundry</title>
      <link>/docs/reference/artifacts/in-cloud-foundry/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/reference/artifacts/in-cloud-foundry/</guid>
      <description>
        
        
        &lt;h2 id=&#34;artifacts-referencing-app-manifest&#34;&gt;Artifacts referencing app manifest&lt;/h2&gt;
&lt;p&gt;To use an artifact to reference a manifest file (such as a manifest stored in a GitHub repository), choose &amp;ldquo;Artifact from execution context&amp;rdquo; in the Application section of the &amp;ldquo;Configure Deployment Cluster&amp;rdquo; screen, and configure the artifact details.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./cf-manifest-artifact-github.png&#34;
         alt=&#34;In a Deploy stage, choose a GitHub file artifact as the manifest source for a server group.&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;In a Deploy stage, choose a GitHub file artifact as the manifest source for a server group.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;artifacts-referencing-app-archive&#34;&gt;Artifacts referencing app archive&lt;/h2&gt;
&lt;p&gt;To use an artifact to reference an application archive (such as a JAR file from a Maven repository), choose &amp;ldquo;Artifact from execution context&amp;rdquo; in the Manifest section of the &amp;ldquo;Configure Deployment Cluster&amp;rdquo; screen, and configure the artifact details.
&lt;figure&gt;&lt;img src=&#34;./cf-application-artifact-maven.png&#34;
         alt=&#34;In a Deploy stage, choose a Maven artifact as the application source for a server group.&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;In a Deploy stage, choose a Maven artifact as the application source for a server group.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Artifacts In Kubernetes</title>
      <link>/docs/reference/artifacts/in-kubernetes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/reference/artifacts/in-kubernetes/</guid>
      <description>
        
        
        &lt;h2 id=&#34;manifests-as-artifacts&#34;&gt;Manifests as artifacts&lt;/h2&gt;
&lt;p&gt;There are two ways to deploy a manifest:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The manifest is supplied statically to a pipeline as text&lt;/li&gt;
&lt;li&gt;The manifest is supplied as an artifact&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The image below shows a deploy stage that deploys a manifest stored in a GCS bucket:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./manifest-artifact.png&#34;
         alt=&#34;Depending on how this pipeline is configured, it will only run when the referenced file in GCS is modified.&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;Depending on how this pipeline is configured, it will only run when the referenced file in GCS is modified.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;kubernetes-objects-as-artifacts&#34;&gt;Kubernetes objects as artifacts&lt;/h2&gt;
&lt;p&gt;Once a manifest is successfully deployed using a pipeline (either from text
or an artifact containing text), it is injected back into the pipeline&amp;rsquo;s
context as an output of the deploy stage. Why this is useful is explained

&lt;a href=&#34;#binding-artifacts-in-manifests&#34;&gt;below&lt;/a&gt;
, but for now focus on the distinction between&amp;hellip;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;An artifact representing a manifest stored as text in github:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github/file&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;manifests/frontend-configs.yml&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;https://api.github.com/repos/your-application/...&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;An artifact representing a deployed kubernetes object:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;kubernetes/configMap&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;frontend-configs&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;prod&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;     &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;v001&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;As described in the 
&lt;a href=&#34;#manifests-as-artifacts&#34;&gt;manifests as artifacts&lt;/a&gt;
 section,
a deploy stage would &lt;em&gt;consume&lt;/em&gt; artifact 1, but &lt;em&gt;produce&lt;/em&gt; artifact 2 as an output.&lt;/p&gt;
&lt;p&gt;When running pipelines, you can always check the produced outputs for any stage
by examining the execution&amp;rsquo;s &amp;ldquo;source&amp;rdquo; directly:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./check-source.png&#34;/&gt;
&lt;/figure&gt;

&lt;h2 id=&#34;versioned-kubernetes-objects&#34;&gt;Versioned Kubernetes objects&lt;/h2&gt;
&lt;p&gt;According to the 
&lt;a href=&#34;/docs/reference/providers/kubernetes/#resource-management-policies&#34;&gt;Kubernetes reference
documentation&lt;/a&gt;
,
certain resources are &amp;ldquo;versioned,&amp;rdquo; meaning anytime a change is made to an
object&amp;rsquo;s manifest and deployed using Spinnaker, it is redeployed with a
new version suffix (&lt;code&gt;-vNNN&lt;/code&gt;). This is critical to supporting immutable
deployments, as rolling out new ConfigMaps, secrets, or other versioned
resources should require any manifests that reference them to be updated as
well. Luckily, Spinnaker makes handling these updates easy, as explained

&lt;a href=&#34;#binding-artifacts-in-manifests&#34;&gt;below&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;binding-artifacts-in-manifests&#34;&gt;Binding artifacts in manifests&lt;/h2&gt;
&lt;p&gt;Generally, artifacts represent resources that you update as a part of your
deployment/delivery pipelines. Given that Docker images and ConfigMaps are what
will likely be updated within a manifest, we provide easy, first-class ways of
injecting them into your manifests. If you&amp;rsquo;re familiar with 
&lt;a href=&#34;/docs/guides/user/pipeline/expressions&#34;&gt;Pipeline
Expressions&lt;/a&gt;
 and are curious why we don&amp;rsquo;t
just rely on those, read 
&lt;a href=&#34;#why-not-pipeline-expressions&#34;&gt;why not pipeline
expressions&lt;/a&gt;
 below.&lt;/p&gt;
&lt;p&gt;Spinnaker binds artifacts in your manifest based on a simple heuristic:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;When a field&amp;rsquo;s referenced type and value match an incoming artifact&amp;rsquo;s type
and name, the field&amp;rsquo;s value is replaced with the artifact&amp;rsquo;s reference&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A &amp;ldquo;field&amp;rsquo;s referenced type&amp;rdquo; sounds ambiguous, but in practice it&amp;rsquo;s
straightforward. The field &lt;code&gt;spec.template.spec.containers.*.image&lt;/code&gt; always
refers to a Docker image, so clearly it matches the artifact type
&lt;code&gt;docker/image&lt;/code&gt;. The field &lt;code&gt;spec.template.spec.volumes.*.configMap.name&lt;/code&gt;
always refers to a ConfigMap, so it clearly matches the artifact type
&lt;code&gt;kubernetes/configMap&lt;/code&gt;. The same logic applies throughout.&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s go through an example to make this clear:&lt;/p&gt;
&lt;p&gt;We have the following manifest to be deployed in a Spinnaker pipeline:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apps/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Deployment&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx-deployment&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;replicas&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;selector&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;matchLabels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;image&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gcr.io/my-images/nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# possible artifact&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ports&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containerPort&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;80&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;volumeMounts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/opt/config&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-config-map&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;volumes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;configMap&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;configmap            &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# possible artifact&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-config-map&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And when the deploy stage executes, we have the following artifacts in our
execution context (likely populated from a trigger event, or prior deployments):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;docker/image&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gcr.io/my-images/nginx&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;gcr.io/my-images/nginx@sha256:0cce25b9a55&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;},&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;kubernetes/configMap&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;configmap&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;v001&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;location&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;default&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;configmap-v001&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The ConfigMap and Docker image are replaced by the artifacts in the context,
and the resulting manifest is deployed into your cluster:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apps/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Deployment&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx-deployment&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;replicas&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;selector&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;matchLabels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;image&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gcr.io/my-images/nginx@sha256:0cce25b9a55   &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# bound by spinnaker&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ports&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containerPort&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;80&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;volumeMounts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;mountPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/opt/config&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-config-map&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;volumes&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;configMap&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;configmap-v001                             &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# bound by spinnaker&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;my-config-map&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;why-not-pipeline-expressions&#34;&gt;Why not pipeline expressions?&lt;/h2&gt;
&lt;p&gt;
&lt;a href=&#34;/docs/guides/user/pipeline/expressions&#34;&gt;Pipeline Expressions&lt;/a&gt;
 offer a great way to
reference pipeline context programmatically using short snippets of code. Of
course, it&amp;rsquo;s possible to construct expressions that allow you to
reference the Docker image&amp;rsquo;s reference that triggered a pipeline, or the name
of the ConfigMap you deployed in a prior stage. But we want an easier
way to express updates to these resources, leaving your Kubernetes Manifests
natively deployable without making Spinnaker&amp;rsquo;s expression engine a hard
dependency.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Artifacts In Pipelines</title>
      <link>/docs/reference/artifacts/in-pipelines/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/reference/artifacts/in-pipelines/</guid>
      <description>
        
        
        &lt;blockquote&gt;
&lt;p&gt;Much of the behavior described here depends on looking up execution history in Redis. Deleting recent executions from Redis can cause unexpected behavior.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Now that you have an idea of 
&lt;a href=&#34;/docs/reference/artifacts/&#34;&gt;what an artifact is&lt;/a&gt;
 in Spinnaker, you need to
understand how it&amp;rsquo;s used within pipelines.&lt;/p&gt;
&lt;p&gt;Spinnaker uses an &amp;ldquo;expected artifact&amp;rdquo; to enable a stage to bind an artifact
from another pipeline execution, stage output, or running environment.&lt;/p&gt;
&lt;h2 id=&#34;expected-artifacts&#34;&gt;Expected artifacts&lt;/h2&gt;
&lt;p&gt;An &amp;ldquo;expected artifact&amp;rdquo; is a specification of what properties (found in the URI decoration) against which to match when searching for the desired artifact, plus optional fallback behavior.&lt;/p&gt;
&lt;p&gt;Expected artifacts exist for two reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;To declare what artifacts need to be present at a certain point during
execution&lt;/li&gt;
&lt;li&gt;To provide easy ways to reference those artifacts&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;An expected artifact consists of an artifact to &lt;em&gt;match&lt;/em&gt;
(by name, type, etc&amp;hellip;) plus, optionally, what to do if no artifact is
matched.  When an artifact is matched, we say it&amp;rsquo;s &lt;em&gt;bound&lt;/em&gt; to that expected
artifact.&lt;/p&gt;
&lt;p&gt;The matching behavior is as follows: The artifact to match declared by the
expected artifact has the same format as a regular artifact; however, its
values are interpreted as regular expressions to match the corresponding values
in the incoming artifact:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Normal strings must match exactly for the artifact to match because Spinnaker
effectively treats them as regular expressions. For example, Spinnaker
interprets &lt;code&gt;inputstring&lt;/code&gt; as &lt;code&gt;^inputstring$&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Explicit regular expressions are also valid. For example, Spinnaker
matches &lt;code&gt;.*inputstring.*&lt;/code&gt; to any string including the substring &lt;code&gt;inputstring&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Match Artifact&lt;/th&gt;
&lt;th&gt;Incoming Artifact&lt;/th&gt;
&lt;th&gt;Matches?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;reference: &amp;quot;gcr.io/image&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;gce/image&amp;quot;, &amp;quot;reference: &amp;quot;www.googleapis.com/compute/v1/projects...&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;reference: &amp;quot;gcr.io/image:test&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;reference: &amp;quot;gcr.io/image:test&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1.2&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✘&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1\..*&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;reference: &amp;quot;gcr.io/image:v1.2&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1.2&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✔&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;v1\..*&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;{&amp;quot;type&amp;quot;: &amp;quot;docker/image&amp;quot;, &amp;quot;reference: &amp;quot;gcr.io/image:test&amp;quot;, &amp;quot;version&amp;quot;: &amp;quot;test&amp;quot;}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;✘&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;If an expected artifact matches anything other than a
single artifact (and no fallback behavior is defined), the execution fails.
Therefore it&amp;rsquo;s always safe to say &amp;ldquo;use the artifact bound by
this upstream expected artifact&amp;rdquo; because if no artifact was bound, the pipeline
wouldn&amp;rsquo;t be running this downstream stage.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;triggers&#34;&gt;Triggers&lt;/h2&gt;
&lt;p&gt;In Pipeline Configuration, you can now declare which
artifacts a pipeline expects to have present before the pipeline starts
running.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./expected-artifact-trigger.png&#34;
         alt=&#34;The UI provides short-hand for defining some types of artifacts—in this example a docker image. This is optional, but helps quickly define common types of artifacts.&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;The UI provides short-hand for defining some types of artifacts—in this example a docker image. This is optional, but helps quickly define common types of artifacts.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;You can define fallback behavior for when the artifact
isn&amp;rsquo;t bound at the start of the Pipeline. The two options are evaluated in
order:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use Prior Execution&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Use the artifact bound by the pipeline&amp;rsquo;s previous execution. This is useful in cases where multiple
sources can trigger the pipeline, but each has incomplete information about
what artifacts to supply.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Use Default Artifact&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Specify exactly which artifact to bind.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once you have declared which artifacts are expected by this pipeline, you can
assign expected artifacts to individual triggers.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./pubsub-trigger-artifact.png&#34;
         alt=&#34;A pubsub subscription configured to listen to changes in one GCR registry. Since this registry can contain many repositories, we&amp;amp;rsquo;ve assigned it an expected artifact to ensure only changes in one repository can run this pipeline.&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;A pubsub subscription configured to listen to changes in one GCR registry. Since this registry can contain many repositories, we&amp;rsquo;ve assigned it an expected artifact to ensure only changes in one repository can run this pipeline.&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;When a trigger has one or more expected artifacts, it only runs when each
expected artifact can bind to one of the artifacts in the trigger&amp;rsquo;s payload.&lt;/p&gt;
&lt;h3 id=&#34;artifacts-in-trigger-payloads&#34;&gt;Artifacts in trigger payloads&lt;/h3&gt;
&lt;p&gt;Artifacts are supplied by payload as a list of artifacts in a top-level
&lt;code&gt;artifacts&lt;/code&gt; key—the value is automatically injected into any triggered
pipeline&amp;rsquo;s execution context. However, it&amp;rsquo;s possible that you&amp;rsquo;re not the author
of the incoming message, and are instead depending on a third-party system to
provide an event to Spinnaker to trigger a pipeline. If this event contains
information such as &amp;ldquo;these images were created,&amp;rdquo; or &amp;ldquo;these files were
modified,&amp;rdquo; it&amp;rsquo;s useful to be able to extract artifacts from that payload.&lt;/p&gt;
&lt;p&gt;For this reason, we allow you to supply 
&lt;a href=&#34;http://jinja.pocoo.org/&#34; target=&#34;_blank&#34;&gt;Jinja
templates&lt;/a&gt;
 that transform the incoming payload into a
list of artifacts to be injected into your pipeline.&lt;/p&gt;
&lt;p&gt;Take for example the 
&lt;a href=&#34;https://cloud.google.com/container-registry/docs/configuring-notifications#notification_examples&#34; target=&#34;_blank&#34;&gt;notification format for
GCR&lt;/a&gt;
.
While it captures the information we need, it&amp;rsquo;s not in the format we want. So,
we can register the following Jinja template for our GCR subscription:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a40000&#34;&gt;{%&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;raw&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;split&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;digest.split(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;@&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;reference&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ digest }}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ split[0] }}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;version&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ split[1] }}&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;docker/image&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;%&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;endraw&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;%&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;find-artifact-from-execution&#34;&gt;Find artifact from execution&lt;/h2&gt;
&lt;p&gt;To allow you to promote artifacts between executions, you can make use of the
&amp;ldquo;Find Artifact from Execution&amp;rdquo; stage. All that&amp;rsquo;s required is the pipeline ID
whose execution history to search, and an expected artifact to bind.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./find-artifacts-from-execution.png&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;A common use case would be to &amp;ldquo;promote&amp;rdquo; the image deployed to staging to a
pipeline that&amp;rsquo;s deploying to production.&lt;/p&gt;
&lt;h2 id=&#34;passing-artifacts-between-pipelines&#34;&gt;Passing artifacts between pipelines&lt;/h2&gt;
&lt;p&gt;Artifacts can be passed between pipelines.  If a pipeline triggers the execution of a second pipeline,
this second pipeline will have access to any artifacts that were available to the first pipeline;
this includes both artifacts in the first pipeline&amp;rsquo;s trigger as well as artifacts emitted by the
first pipeline.&lt;/p&gt;
&lt;p&gt;Two concrete cases where artifacts can be passed are as follows:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pipeline triggered by the completion of another pipeline&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To set up this configuration, go to the &lt;em&gt;Configuration&lt;/em&gt; screen for a pipeline (Pipeline B) and
add an automated trigger of type &lt;em&gt;Pipeline&lt;/em&gt; pointing to another pipeline (Pipeline A).  Whenever
Pipeline A completes, it will trigger a run of Pipeline B, and Pipeline B will have access to
all artifacts from Pipeline A.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pipeline that is a stage of a parent pipeline&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;To set up this configuration, go to the parent pipeline (Pipeline A), choose &lt;em&gt;Add Stage&lt;/em&gt;, and add
a stage of type &lt;em&gt;Pipeline&lt;/em&gt; pointing to another pipeline (Pipeline B).  In this case, Pipeline B
will have access to any artifacts from Pipeline A that are upstream from where it was triggered.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;stages-that-produce-artifacts&#34;&gt;Stages that produce artifacts&lt;/h2&gt;
&lt;p&gt;Stages can be configured to &amp;lsquo;Produce&amp;rsquo; artifacts if they expose the following
Stage configuration:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./produced-artifact.png&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;If you are configuring your stages using JSON, the expected artifacts are
placed in a top-level &lt;code&gt;expectedArtifacts: []&lt;/code&gt; list.&lt;/p&gt;
&lt;p&gt;There are two ways to use this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;To bind artifacts injected into the stage context&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If your stage emits artifacts (such as a &amp;ldquo;Deploy (Manifest)&amp;rdquo; stage) into the
pipeline context, you can match against these artifacts for downstream
stages to consume.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;To artificially inject artifacts into the stage context&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you are running a stage that does not natively emit artifacts (such as
the &amp;ldquo;Run Job&amp;rdquo; stage), you can use the default artifact, which always binds
to the expected artifact, to be injected into the pipeline each time it is
run. &lt;em&gt;Keep in mind:&lt;/em&gt; If the matching artifact is empty, it will bind any
artifact, and your default artifact will not be used.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;a-visual-explanation&#34;&gt;A visual explanation&lt;/h2&gt;
&lt;p&gt;To help explain how artifacts &amp;amp; expected artifacts work, let&amp;rsquo;s walk through a
demo pipeline. To begin, here is the key:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./key.svg&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Say we&amp;rsquo;ve configured the following pipeline:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./configuration.svg&#34;
         alt=&#34;The pipeline declares that it expects an artifact matching 1 (perhaps a docker image) when the pipeline starts. This is done in the pipeline configuration tab. It also expects an artifact matching 2 in pipeline stage B (perhaps a &amp;amp;ldquo;Find Artifact from Execution&amp;amp;rdquo; stage).&#34;/&gt;&lt;figcaption&gt;
            &lt;p&gt;The pipeline declares that it expects an artifact matching &lt;em&gt;1&lt;/em&gt; (perhaps a docker image) &lt;em&gt;when the pipeline starts&lt;/em&gt;. This is done in the pipeline configuration tab. It also expects an artifact matching &lt;em&gt;2&lt;/em&gt; in pipeline stage &lt;em&gt;B&lt;/em&gt; (perhaps a &amp;ldquo;Find Artifact from Execution&amp;rdquo; stage).&lt;/p&gt;
        &lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The pipeline is triggered by some source (maybe a Webhook) supplying two
artifacts:&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./trigger.svg&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;Artifact &lt;em&gt;1&lt;/em&gt; is bound, but both incoming artifacts are placed into the trigger,
so any downstream stages (in this case all of them) can consume them. The
advantage of the expected artifact is that stages can &lt;em&gt;explicitly&lt;/em&gt; reference
whatever artifact is bound downstream, rather than have to check for existance
of the artifact at runtime.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./running-a.svg&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;It&amp;rsquo;s important to keep in mind that artifact &lt;em&gt;1&lt;/em&gt; was bound when the pipeline
started. If we reference the expected artifact downstream (such as in the
&amp;ldquo;Deploy Manifest&amp;rdquo;) stage shown below, it is using the artifact that was bound
when the pipeline first executed, not when the stage shown runs.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./artifact-1.png&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;When stage &lt;em&gt;B&lt;/em&gt; starts executing, it needs to bind expected artifact &lt;em&gt;2&lt;/em&gt;. If,
for example, it was a &amp;ldquo;Find Artifact from Execution&amp;rdquo; stage, it would do so by
looking up the artifact from a another pipeline&amp;rsquo;s execution, and binding it
here.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./running-b-d.svg&#34;/&gt;
&lt;/figure&gt;

&lt;p&gt;If stages &lt;em&gt;C&lt;/em&gt; or &lt;em&gt;D&lt;/em&gt; needed to reference an upstream artifact, they would have
different artifacts accessible to them, since they have different upstream
stages. For examples, stage &lt;em&gt;D&lt;/em&gt; does not have access to artifact &lt;em&gt;2&lt;/em&gt;.&lt;/p&gt;
&lt;figure&gt;&lt;img src=&#34;./running-c-d.svg&#34;/&gt;
&lt;/figure&gt;


      </description>
    </item>
    
    <item>
      <title>Docs: Types of Artifacts</title>
      <link>/docs/reference/artifacts/types/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/reference/artifacts/types/</guid>
      <description>
        
        
        &lt;p&gt;While an artifact can reference any remote, deployable resource, we have
first-class support for in the form of:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Parsing events from other services. For example, reading pub/sub messages
from GCR images.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Credentials for downloading artifacts. For example, a GitHub access token to
read repository contents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integrations with stages that require certain types of artifacts. For
example, App Engine can only deploy a Docker image as a custom runtime, never
an AMI.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The pages in this section serve to document the format Spinnaker expects these
artifacts in, to make custom integrations with them easier. We recommend
reading the 
&lt;a href=&#34;/docs/reference/artifacts/#format&#34;&gt;artifact format&lt;/a&gt;
 first.&lt;/p&gt;
&lt;p&gt;For information about how to use artifacts in pipelines, see 
&lt;a href=&#34;https://www.spinnaker.io/reference/artifacts/&#34; target=&#34;_blank&#34;&gt;About Spinnaker Artifacts&lt;/a&gt;
.&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
