<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Spinnaker – Spinnaker Pipeline Reference</title>
    <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/</link>
    <description>Recent content in Spinnaker Pipeline Reference on Spinnaker</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Pipeline Expression Reference</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/expressions/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/expressions/</guid>
      <description>
        
        
        &lt;p&gt;For more information
about how pipeline expressions work, see the

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/pipeline/expressions/&#34;&gt;overview&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;syntax-elements&#34;&gt;Syntax elements&lt;/h2&gt;
&lt;p&gt;Each pipeline expression is made of &lt;code&gt;$&lt;/code&gt; followed by opening/closing brackets:
&lt;code&gt;${ }&lt;/code&gt;. Within these brackets, you can add arbitrary expressions to access and
modify the details of your pipeline during pipeline execution.&lt;/p&gt;
&lt;p&gt;Note that expressions can&amp;rsquo;t be nested: &lt;code&gt;${ expression1 ${expression2} }&lt;/code&gt; won&amp;rsquo;t
be evaluated.&lt;/p&gt;
&lt;h3 id=&#34;code&#34;&gt;Code&lt;/h3&gt;
&lt;p&gt;Spinnaker allows you to execute Java code within a pipeline expression. This can
be useful for string manipulation or more advanced custom logic than
would otherwise be possible. For security reasons, you can only call methods of specifically allowed Java classes. You can find the full list of allowed classes

&lt;a href=&#34;#allowed-java-classes&#34;&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;You can use methods directly on existing map values based on their Java class.
For example, you can process a list of values entered as a parameter using
Java&amp;rsquo;s String &lt;code&gt;split()&lt;/code&gt; function, provided users enter them using a standard
split character. You can process the list &lt;code&gt;us-east-1,us-west-1,eu-west-1&lt;/code&gt; with
the expression &lt;code&gt;${parameters.regions.split(&amp;quot;,&amp;quot;)}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;You can instantiate new classes inside of an expression using the fully
qualified package name. For example, you might want to use the 
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html&#34; target=&#34;_blank&#34;&gt;SimpleDateFormat&lt;/a&gt;

class to get the current date in MM-dd-yyyy format. You can do this using the
expression &lt;code&gt;${new java.text.SimpleDateFormat(&amp;quot;MM-dd-yyyy&amp;quot;).format(new java.util.Date())}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Similarly, you can call static methods using the syntax
&lt;code&gt;T(fully.qualified.class.name).methodName()&lt;/code&gt;. For example, to calculate the date
5 days from now, you can call:
&lt;code&gt;${T(java.time.LocalDate).now().plusDays(5).toString()}&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;comparisons&#34;&gt;Comparisons&lt;/h3&gt;
&lt;p&gt;You can use relational operators to compare values in an expression, such as
&lt;code&gt;${instance[&amp;quot;size&amp;quot;] &amp;gt; 400}&lt;/code&gt; or &lt;code&gt;${parameters[&amp;quot;runCanary&amp;quot;] == &amp;quot;true&amp;quot;}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Note that you may need to transform some values for the comparisons to work
properly. In the example above, &lt;code&gt;parameters[&amp;quot;runCanary&amp;quot;]&lt;/code&gt; returns a string
rather than a boolean. To use it in a comparision, you need to either compare
it to a string or convert it to a boolean:
&lt;code&gt;${#toBoolean(parameters[&amp;quot;runCanary&amp;quot;]) == true}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Another example is that the status attribute of a stage is actually an enum
internally, not a string. To compare the status to a string, you need to call
&lt;code&gt;.toString()&lt;/code&gt; on the result. For example:
&lt;code&gt;${#stage(&amp;quot;Deploy&amp;quot;)[&amp;quot;status&amp;quot;].toString() == &amp;quot;SUCCEEDED&amp;quot;}&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;functions&#34;&gt;Functions&lt;/h3&gt;
&lt;p&gt;The expression language has several built in helper functions that simplify
common use cases. The syntax for calling built-in functions is
&lt;code&gt;#functionName(params)&lt;/code&gt;. For example, &lt;code&gt;#fromUrl(&amp;quot;http://www.netflix.com&amp;quot;)&lt;/code&gt;. See
the full list of functions 
&lt;a href=&#34;#helper-functions&#34;&gt;here&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;lists&#34;&gt;Lists&lt;/h3&gt;
&lt;p&gt;You can also use lists in your expressions. Spinnaker always provides a list
called &lt;em&gt;stages&lt;/em&gt;, which you can use to access each stage by index:
&lt;code&gt;${execution[&amp;quot;stages&amp;quot;][0]}&lt;/code&gt; returns the value of the first stage in your
pipeline.&lt;/p&gt;
&lt;p&gt;Note that &lt;code&gt;stages&lt;/code&gt; is mostly referenced here for illustration purposes. The
value of &lt;code&gt;stages[i]&lt;/code&gt; depends on the order in which your stages execute, which
makes it fragile. The recommended way to access a specific stage is to use the
&lt;code&gt;#stage(&amp;quot;Stage Name&amp;quot;)&lt;/code&gt; 
&lt;a href=&#34;#stagestring&#34;&gt;helper function&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;maps&#34;&gt;Maps&lt;/h3&gt;
&lt;p&gt;You can use maps to access data from the JSON representation of your pipeline.
For example, &lt;code&gt;${trigger[&amp;quot;properties&amp;quot;][&amp;quot;example&amp;quot;]}&lt;/code&gt; evaluates to the value of
the &lt;code&gt;example&lt;/code&gt; trigger property. To see the available values for a given
pipeline, view the execution JSON:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to an execution of your pipeline.&lt;/li&gt;
&lt;li&gt;Click on &lt;em&gt;Details&lt;/em&gt; to expand the pipeline.&lt;/li&gt;
&lt;li&gt;Click on the source link under the pipeline execution, which opens a new tab
containing the JSON details of your pipeline execution.
&lt;em&gt;[
&lt;a href=&#34;https://screenshot.googleplex.com/U1rVRjdiqKC.png&#34; target=&#34;_blank&#34;&gt;screenshot&lt;/a&gt;
]&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Note that while Spinnaker supports both dot (&lt;code&gt;map.value&lt;/code&gt;) and square bracket
(&lt;code&gt;map[&amp;quot;value&amp;quot;]&lt;/code&gt;) notation, we recommend using square brackets. That is, prefer
&lt;code&gt;trigger[&amp;quot;properties&amp;quot;][&amp;quot;value&amp;quot;]&lt;/code&gt; instead of &lt;code&gt;trigger.properties.value&lt;/code&gt;. There
are a few places where using dot notation produces unexpected results, such as
after a filter operation or when getting nested JSON values from an URL. Bracket
notation also allows you to access non-alphanumeric properties.&lt;/p&gt;
&lt;p&gt;You can filter maps using &lt;code&gt;.?&lt;/code&gt;. For example, to filter a list of stages by type,
you would use &lt;code&gt;${execution[&amp;quot;stages&amp;quot;].?[type == &amp;quot;bake&amp;quot;]}&lt;/code&gt;. The result is a
list, and can be accessed as such: &lt;code&gt;${execution[&amp;quot;stages&amp;quot;].?[type == &amp;quot;bake&amp;quot;][0]}&lt;/code&gt;
returns the first bake stage in your pipeline.&lt;/p&gt;
&lt;h3 id=&#34;math&#34;&gt;Math&lt;/h3&gt;
&lt;p&gt;You can use arithmetic operations in your expressions, such as
&lt;code&gt;${trigger[&amp;quot;buildInfo&amp;quot;][&amp;quot;number&amp;quot;] * 2}&lt;/code&gt;. You can use helper functions such as

&lt;a href=&#34;#tointstring&#34;&gt;#toInt&lt;/a&gt;
 or 
&lt;a href=&#34;#tofloatstring&#34;&gt;#toFloat&lt;/a&gt;
 if type conversion is
necessary.&lt;/p&gt;
&lt;h3 id=&#34;strings&#34;&gt;Strings&lt;/h3&gt;
&lt;p&gt;Strings evaluate to themselves: &lt;code&gt;${&amp;quot;This is a String.&amp;quot;}&lt;/code&gt; becomes &amp;ldquo;This is a
String.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;helper-properties&#34;&gt;Helper properties&lt;/h2&gt;
&lt;p&gt;
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/pipeline/expressions/#helper-properties&#34;&gt;Helper properties&lt;/a&gt;
 are
attribute shortcuts that you can use in Spinnaker. The specific properties are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;execution&lt;/code&gt;: refers to the current pipeline execution.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;parameters&lt;/code&gt;: refers to pipeline parameters. This is a shortcut for accessing
the value of &lt;code&gt;trigger[&amp;quot;parameters&amp;quot;]&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;trigger&lt;/code&gt;: refers to the pipeline trigger.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scmInfo&lt;/code&gt;: refers to the git details of either the trigger or the most
recently executed Jenkins stage.
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;scmInfo.sha1&lt;/code&gt; returns the git commit hash of the last build&lt;/li&gt;
&lt;li&gt;&lt;code&gt;scmInfo.branch&lt;/code&gt; returns the git branch name of the last build&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;deployedServerGroups&lt;/code&gt;: refers to the Server Group that was created by the
last deploy stage. It should look something like:
&lt;code&gt;{&amp;quot;account&amp;quot;:&amp;quot;my-gce-account&amp;quot;, &amp;quot;capacity&amp;quot;: { &amp;quot;desired&amp;quot;:1.0,&amp;quot;max&amp;quot;:1.0,&amp;quot;min&amp;quot;:1.0}, &amp;quot;region&amp;quot;:&amp;quot;us-central1&amp;quot;, &amp;quot;serverGroup&amp;quot;:&amp;quot;myapp-dev-v005&amp;quot;}&lt;/code&gt;. Note that you can use
&lt;code&gt;deployedServerGroups&lt;/code&gt; 
&lt;a href=&#34;#deployedservergroupsstring&#34;&gt;as a function&lt;/a&gt;
 to
return information about an arbitrary deploy stage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;helper-functions&#34;&gt;Helper functions&lt;/h2&gt;
&lt;h3 id=&#34;alphanumericalstring&#34;&gt;#alphanumerical(String)&lt;/h3&gt;
&lt;p&gt;Returns the alphanumerical value of the passed-in string. That is, the input
string with all characters aside from A-Z and 0-9 stripped out.&lt;/p&gt;
&lt;h3 id=&#34;cfservicekeystring-stagename&#34;&gt;#cfServiceKey(String stageName)&lt;/h3&gt;
&lt;p&gt;A shortcut to refer to a service key which has been created in a previous stage.  Remember that the
stage&amp;rsquo;s name is case-sensitive.  Note also that the values for the service key are contained in a
map, so one may access a property via &lt;code&gt;${#cfServiceKey(&amp;quot;stageName&amp;quot;)[&amp;quot;desiredProperty&amp;quot;]}&lt;/code&gt;.
For example, &lt;code&gt;${#cfServiceKey(&amp;quot;Create MySQL Service Key&amp;quot;)[&amp;quot;username&amp;quot;]}&lt;/code&gt; will retrieve the &lt;code&gt;username&lt;/code&gt;
field of a service key which has been created for a MySQL service in a &lt;code&gt;Create Service Key&lt;/code&gt; stage named
&amp;ldquo;Create MySQL Service Key&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;currentstage&#34;&gt;#currentStage()&lt;/h3&gt;
&lt;p&gt;Returns the current stage.&lt;/p&gt;
&lt;h3 id=&#34;deployedservergroupsstring&#34;&gt;#deployedServerGroups(String)&lt;/h3&gt;
&lt;p&gt;Takes the name of a deploy stage as an argument and returns the Server Group
that was created by the specified stage.&lt;/p&gt;
&lt;h3 id=&#34;frombase64string&#34;&gt;#fromBase64(String)&lt;/h3&gt;
&lt;p&gt;Decodes a base64 string.&lt;/p&gt;
&lt;h3 id=&#34;fromurlstring&#34;&gt;#fromUrl(String)&lt;/h3&gt;
&lt;p&gt;Returns the contents of the specified URL as a String. You can use this
to fetch information from unauthenticated URL endpoints.&lt;/p&gt;
&lt;h3 id=&#34;jsonfromurlstring&#34;&gt;#jsonFromUrl(String)&lt;/h3&gt;
&lt;p&gt;Retrieves the contents of the given URL and converts it into either a map or a
list. It uses the #fromUrl(String) helper function underneath.&lt;/p&gt;
&lt;h3 id=&#34;judgmentstring&#34;&gt;#judgment(String)&lt;/h3&gt;
&lt;p&gt;Returns the selected judgment value from the Manual Judgment stage whose name
matches the input string. Note that &lt;code&gt;#judgment&lt;/code&gt; is case sensitive:
&lt;code&gt;${#judgment(&amp;quot;my manual judgment stage&amp;quot;)}&lt;/code&gt; returns an error if your stage is
named &lt;em&gt;&amp;ldquo;My Manual Judgment Stage&amp;rdquo;&lt;/em&gt;. Note that this function is aliased to the
spelling &lt;code&gt;#judgement&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;manifestlabelvaluestring-stagename-string-manifestkind-string-labelkey&#34;&gt;#manifestLabelValue(String stageName, String manifestKind, String labelKey)&lt;/h3&gt;
&lt;p&gt;Returns the value of a label with key &lt;code&gt;labelKey&lt;/code&gt; from a Kubernetes
Deployment or ReplicaSet manifest of kind &lt;code&gt;manifestKind&lt;/code&gt;, deployed by a
stage of type &lt;code&gt;deployManifest&lt;/code&gt; and name &lt;code&gt;stageName&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;pipelineidstring&#34;&gt;#pipelineId(String)&lt;/h3&gt;
&lt;p&gt;This function looks up the pipeline id given a pipeline name (within the same Spinnaker application).
This is useful if you generate pipelines programmatically and don&amp;rsquo;t want to modify pipelines to reference a new id
when a dependent pipeline is automatically regenerated.
For example, &lt;code&gt;${#pipelineId(&amp;quot;Deploy to prod&amp;quot;)}&lt;/code&gt; might return &lt;code&gt;9b2395dc-7a2b-4845-b623-838bd74d059b&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;pipelineidinapplicationstring-pipelinename-string-applicationname&#34;&gt;#pipelineIdInApplication(String pipelineName, String applicationName)&lt;/h3&gt;
&lt;p&gt;This function looks up the pipeline id for the given pipeline name and Spinnaker application. This is helpful to
retrieve the pipeline id for an existing pipeline within any application in Spinnaker.&lt;/p&gt;
&lt;h3 id=&#34;propertiesfromurlstring&#34;&gt;#propertiesFromUrl(String)&lt;/h3&gt;
&lt;p&gt;Retrieves the contents of a 
&lt;a href=&#34;https://docs.oracle.com/javase/tutorial/essential/environment/properties.html&#34; target=&#34;_blank&#34;&gt;Java properties file&lt;/a&gt;

at the given URL and converts it into a map. You can use this to fetch
information from Jenkins properties files or other similar endpoints.&lt;/p&gt;
&lt;h3 id=&#34;readallyamlstring&#34;&gt;#readAllYaml(String)&lt;/h3&gt;
&lt;p&gt;Converts a multi-document YAML String into a list of Maps that can then be processed further.&lt;/p&gt;
&lt;h3 id=&#34;readjsonstring&#34;&gt;#readJson(String)&lt;/h3&gt;
&lt;p&gt;Converts a JSON String into a Map that can then be processed further.&lt;/p&gt;
&lt;h3 id=&#34;readyamlstring&#34;&gt;#readYaml(String)&lt;/h3&gt;
&lt;p&gt;Converts a YAML String into a Map that can then be processed further.&lt;/p&gt;
&lt;h3 id=&#34;stagestring&#34;&gt;#stage(String)&lt;/h3&gt;
&lt;p&gt;A shortcut to get the stage by name. For example, &lt;code&gt;${#stage(&amp;quot;Bake&amp;quot;)}&lt;/code&gt; allows
you to access your Bake stage. Note that &lt;code&gt;#stage&lt;/code&gt; is case sensitive: if your
stage is actually named &amp;ldquo;bake&amp;rdquo;, &lt;code&gt;${#stage(&amp;quot;Bake&amp;quot;)}&lt;/code&gt; will not find it. Remember
that the values for the stage are still under the &lt;em&gt;context&lt;/em&gt; map, so you can
access a property via &lt;code&gt;${#stage(&amp;quot;Bake&amp;quot;)[&amp;quot;context&amp;quot;][&amp;quot;desiredProperty&amp;quot;]}&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;stagebyrefidstring&#34;&gt;#stageByRefId(String)&lt;/h3&gt;
&lt;p&gt;A shortcut to get the stage by its &lt;code&gt;refId&lt;/code&gt;. For example, &lt;code&gt;${#stageByRefId(&amp;quot;3&amp;quot;)}&lt;/code&gt; allows
you to access the stage with &lt;code&gt;refId = 3&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;stageexistsstring&#34;&gt;#stageExists(String)&lt;/h3&gt;
&lt;p&gt;Checks if a given stage exists. You can search by &lt;code&gt;name&lt;/code&gt; or &lt;code&gt;id&lt;/code&gt;.
Returns &lt;code&gt;true&lt;/code&gt; if at least one stage is found with the &lt;code&gt;name&lt;/code&gt; or &lt;code&gt;id&lt;/code&gt; given.
Since the &lt;code&gt;id&lt;/code&gt; is generated at runtime, most of the time it will make sense to search by &lt;code&gt;name&lt;/code&gt; instead.
Note that stage names are set by default so if you create a Webhook stage it will be called Webhook;
giving the stage a unique name when you create it makes it easier to find when using this helper function.&lt;/p&gt;
&lt;h3 id=&#34;tobase64string&#34;&gt;#toBase64(String)&lt;/h3&gt;
&lt;p&gt;Encodes the input string to base64.&lt;/p&gt;
&lt;h3 id=&#34;tobooleanstring&#34;&gt;#toBoolean(String)&lt;/h3&gt;
&lt;p&gt;Converts the input string to a boolean.&lt;/p&gt;
&lt;h3 id=&#34;tofloatstring&#34;&gt;#toFloat(String)&lt;/h3&gt;
&lt;p&gt;Converts a value to a floating point number.&lt;/p&gt;
&lt;h3 id=&#34;tointstring&#34;&gt;#toInt(String)&lt;/h3&gt;
&lt;p&gt;Converts a value to an integer.&lt;/p&gt;
&lt;h3 id=&#34;tojsonobject&#34;&gt;#toJson(Object)&lt;/h3&gt;
&lt;p&gt;Converts an arbitrary JSON object into a JSON string.&lt;/p&gt;
&lt;h3 id=&#34;triggerresolvedartifactstring-name&#34;&gt;#triggerResolvedArtifact(String name)&lt;/h3&gt;
&lt;p&gt;A shortcut to look up the resolved artifact in execution trigger by its name. If multiple artifacts are found, only 1 will be returned.
For example, &lt;code&gt;${#triggerResolvedArtifact(&amp;quot;my-image&amp;quot;)[&amp;quot;reference&amp;quot;]}&lt;/code&gt; might return &lt;code&gt;gcr.io/spinnaker-marketplace/orca@sha256:b48dbe7d7cb580db8512e4687d31f3710185b08afcf3cb53c0203025f93f9091&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;triggerresolvedartifactbytypestring-type&#34;&gt;#triggerResolvedArtifactByType(String type)&lt;/h3&gt;
&lt;p&gt;A shortcut to look up the resolved artifact in execution trigger by its type. If multiple artifacts are found, only 1 will be returned.
For example, &lt;code&gt;${#triggerResolvedArtifactByType(&amp;quot;docker/image&amp;quot;)[&amp;quot;reference&amp;quot;]}&lt;/code&gt; might return &lt;code&gt;gcr.io/spinnaker-marketplace/orca@sha256:b48dbe7d7cb580db8512e4687d31f3710185b08afcf3cb53c0203025f93f9091&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;yamlfromurlstring&#34;&gt;#yamlFromUrl(String)&lt;/h3&gt;
&lt;p&gt;Retrieves the contents of the given URL and converts it into a map. It uses
the #fromUrl(String) helper function underneath.&lt;/p&gt;
&lt;h2 id=&#34;allowed-java-classes&#34;&gt;Allowed Java classes&lt;/h2&gt;
&lt;p&gt;You can find the code which restricts instantiable Java classes 
&lt;a href=&#34;https://github.com/spinnaker/kork/blob/8e414e21625219a58afece0a812f570340882294/kork-expressions/src/main/java/com/netflix/spinnaker/kork/expressions/whitelisting/InstantiationTypeRestrictor.java#L28&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;
.
The allowed classes are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html&#34; target=&#34;_blank&#34;&gt;Boolean&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/Byte.html&#34; target=&#34;_blank&#34;&gt;Byte&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoUnit.html&#34; target=&#34;_blank&#34;&gt;ChronoUnit&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/util/Date.html&#34; target=&#34;_blank&#34;&gt;Date&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/time/DayOfWeek.html&#34; target=&#34;_blank&#34;&gt;DayOfWeek&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/Double.html&#34; target=&#34;_blank&#34;&gt;Double&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html&#34; target=&#34;_blank&#34;&gt;Instant&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html&#34; target=&#34;_blank&#34;&gt;Integer&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html&#34; target=&#34;_blank&#34;&gt;LocalDate&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html&#34; target=&#34;_blank&#34;&gt;LocalDateTime&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html&#34; target=&#34;_blank&#34;&gt;Long&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html&#34; target=&#34;_blank&#34;&gt;Math&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/util/Random.html&#34; target=&#34;_blank&#34;&gt;Random&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html&#34; target=&#34;_blank&#34;&gt;SimpleDateFormat&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/lang/String.html&#34; target=&#34;_blank&#34;&gt;String&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html&#34; target=&#34;_blank&#34;&gt;URLEncoder&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html&#34; target=&#34;_blank&#34;&gt;UUID&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;source-code&#34;&gt;Source code&lt;/h2&gt;
&lt;p&gt;Source code for the expression language is in the 
&lt;a href=&#34;https://github.com/spinnaker/orca&#34; target=&#34;_blank&#34;&gt;spinnaker/orca
repository&lt;/a&gt;
, mostly in the following classes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href=&#34;https://github.com/spinnaker/orca/blob/master/orca-core/src/main/java/com/netflix/spinnaker/orca/pipeline/util/ContextParameterProcessor.java&#34; target=&#34;_blank&#34;&gt;ContextParameterProcessor class&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href=&#34;https://github.com/spinnaker/kork/blob/master/kork-expressions/src/main/java/com/netflix/spinnaker/kork/expressions/ExpressionsSupport.java&#34; target=&#34;_blank&#34;&gt;ExpressionsSupport class&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Subclasses of 
&lt;a href=&#34;https://github.com/spinnaker/kork/blob/master/kork-expressions/src/main/kotlin/com/netflix/spinnaker/kork/expressions/ExpressionFunctionProvider.kt&#34; target=&#34;_blank&#34;&gt;ExpressionFunctionProvider&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;pipeline-expression-implementation&#34;&gt;Pipeline expression implementation&lt;/h2&gt;
&lt;p&gt;The Pipeline Expression syntax is implemented using the 
&lt;a href=&#34;http://docs.spring.io/spring/docs/current/spring-framework-reference/html/expressions.html&#34; target=&#34;_blank&#34;&gt;Spring Expression
Language (SpEL)&lt;/a&gt;
.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Pipeline Stages</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/stages/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/stages/</guid>
      <description>
        
        
        &lt;blockquote&gt;
&lt;p&gt;Note that when you&amp;rsquo;re creating a pipeline, you probably won&amp;rsquo;t see every stage that&amp;rsquo;s listed here. You&amp;rsquo;ll only see the stages that Spinnaker supports on your provider.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;general&#34;&gt;General&lt;/h2&gt;
&lt;h3 id=&#34;aws-codebuild&#34;&gt;AWS CodeBuild&lt;/h3&gt;
&lt;p&gt;Run an AWS CodeBuild build by specifying the name of the project. The sources and the image
used by the build can be from upstream stages. Artifacts produced by the build can
be injected into the pipeline and used by downstream stages.&lt;/p&gt;
&lt;p&gt;See this 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/ci/codebuild/&#34;&gt;user guide&lt;/a&gt;
 for more information about configuring
this stage.&lt;/p&gt;
&lt;h3 id=&#34;bake&#34;&gt;Bake&lt;/h3&gt;
&lt;p&gt;Bake an image from the specified packages. Baking here refers to the process
of creating a machine image. Spinnaker&amp;rsquo;s bakery is backed by

&lt;a href=&#34;https://www.packer.io/intro/&#34; target=&#34;_blank&#34;&gt;Hashicorp&amp;amp;rsquo;s Packer&lt;/a&gt;
. Spinnaker provides default

&lt;a href=&#34;https://www.packer.io/docs/templates/index.html&#34; target=&#34;_blank&#34;&gt;Packer templates&lt;/a&gt;
 and base
machine images in order to get you started, but see the

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/bakery/&#34;&gt;bakery configuration guide&lt;/a&gt;
 if you want to customize your bake
process.&lt;/p&gt;
&lt;p&gt;Note that Spinnaker skips the bake process if it detects that a new bake is
unnecessary. Spinnaker generates a unique key for each bake based on the bake
stage parameters: base OS, versioned packages, etc. If either the packages or
the bake stage parameters have changed, Spinnaker triggers a new bake. To change
the default behavior and re-bake your image each time the pipeline runs, select
&lt;strong&gt;Rebake&lt;/strong&gt; in the &lt;strong&gt;Bake Configuration&lt;/strong&gt; section.&lt;/p&gt;
&lt;h3 id=&#34;canary-analysis&#34;&gt;Canary Analysis&lt;/h3&gt;
&lt;p&gt;Use 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/architecture/#spinnaker-microservices&#34;&gt;Kayenta&lt;/a&gt;
 to run

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/&#34;&gt;automated canary analysis&lt;/a&gt;
 against the deployment
before fully deploying. Note that this stage &lt;em&gt;only&lt;/em&gt; handles analysis; you&amp;rsquo;re
responsible for provisioning and cleaning up your canary instances. This is
typically done within the same pipeline via stages surrounding the
Canary Analysis stage.&lt;/p&gt;
&lt;p&gt;For a step-by-step explanation of how to set up a Canary Analysis stage see the

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/canary/stage/&#34;&gt;how-to guide&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;check-preconditions&#34;&gt;Check Preconditions&lt;/h3&gt;
&lt;p&gt;Check for preconditions before continuing. For example, you can check that
your cluster is a particular size, or add a pipeline expression. See the

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/user/pipeline/expressions/&#34;&gt;pipeline expressions guide&lt;/a&gt;
 for more
information about creating and using pipeline expressions.&lt;/p&gt;
&lt;h3 id=&#34;clone-server-group&#34;&gt;Clone Server Group&lt;/h3&gt;
&lt;p&gt;Copies all attributes of the original Server Group into a new Server Group (the
image that was deployed to it, its capacity, etc). You can choose to override
any of the properties of the original Server Group when creating the new one.&lt;/p&gt;
&lt;h3 id=&#34;deploy&#34;&gt;Deploy&lt;/h3&gt;
&lt;p&gt;Deploy the previously baked or found image using the specified deployment
strategy. Spinnaker provides built-in support for both blue/green (formerly known as red/black) and Highlander deployment strategies. You can also choose to deploy with no impact on existing Server Groups, or build your own custom deployment strategy.&lt;/p&gt;
&lt;h3 id=&#34;destroy-server-group&#34;&gt;Destroy Server Group&lt;/h3&gt;
&lt;p&gt;Delete a Server Group and its resources from the specified Cluster. You must
specify whether you want to delete the newest, oldest, or previous
(second-most-recently deployed) Server Group when this stage starts.&lt;/p&gt;
&lt;h3 id=&#34;disable-cluster&#34;&gt;Disable Cluster&lt;/h3&gt;
&lt;p&gt;Disable the specified Cluster, which means that the cluster remains up but
stops handling traffic. If desired, you can leave a specific number of Server
Groups running while the rest of the cluster is disabled.&lt;/p&gt;
&lt;h3 id=&#34;disable-server-group&#34;&gt;Disable Server Group&lt;/h3&gt;
&lt;p&gt;The specified Server Group remains up but stops handling any traffic.
Any auto-scaling policies related to this Server Group will also be disabled.
Disabling Server Groups makes it easy to both route traffic to a new Server
Group and roll back those changes if necessary. You must choose whether to
disable the Server Group which is newest, oldest, or previous
(second-most-recently deployed) when this stage starts.&lt;/p&gt;
&lt;h3 id=&#34;enable-server-group&#34;&gt;Enable Server Group&lt;/h3&gt;
&lt;p&gt;Tell Spinnaker to resume sending traffic to the Server Group. The configuration
of your Load Balancer determines how traffic is routed among newly-enabled
Server Groups and any existing Server Groups. Enabling a Server Group also
re-enables auto-scaling policies, if applicable.&lt;/p&gt;
&lt;h3 id=&#34;find-artifact-from-execution&#34;&gt;Find Artifact From Execution&lt;/h3&gt;
&lt;p&gt;Find and bind an artifact from a different pipeline execution to the current
one, including artifacts from different Spinnaker applications. To do this,
specify the type of artifact (GCS, GitLab, Docker, etc) and its name. You can
specify that Spinnaker should only consider executions that meet certain
criteria, such as ones that have completed successfully or that are currently
running. Spinnaker will always return the artifact from the most recent
execution that matches your criteria.&lt;/p&gt;
&lt;h3 id=&#34;find-image-from-cluster&#34;&gt;Find Image From Cluster&lt;/h3&gt;
&lt;p&gt;Find an image to deploy from an existing Cluster. Make sure that you specify the
Cluster and Server Group such that there is exactly one match, or this may
behave in unexpected ways.&lt;/p&gt;
&lt;h3 id=&#34;find-image-from-tags&#34;&gt;Find Image From Tags&lt;/h3&gt;
&lt;p&gt;Find the newest image that matches all specified tags. The image tag can come
from any source. Regardless of whether you tagged your image through the
Spinnaker 
&lt;a href=&#34;#tag-image&#34;&gt;Tag Image&lt;/a&gt;
 stage or through a process outside of
Spinnaker, the &lt;strong&gt;Find Image From Tags&lt;/strong&gt; stage can find it as long as Spinnaker
has previously interacted with the image.&lt;/p&gt;
&lt;p&gt;In Spinnaker, tags can only contain lowercase letters, numeric characters,
underscores and dashes. Depending on your provider, you may need to specify what
region to search for the image.&lt;/p&gt;
&lt;h3 id=&#34;google-cloud-build&#34;&gt;Google Cloud Build&lt;/h3&gt;
&lt;p&gt;Run a Google Cloud Build build by specifing a build config as either an artifact or
as inline YAML. Artifacts produced by the build can be injected into the pipeline
and used by downstream stages. You must 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/ci/gcb/&#34;&gt;configure Google Cloud Build&lt;/a&gt;

in order to use this stage.&lt;/p&gt;
&lt;h3 id=&#34;jenkins&#34;&gt;Jenkins&lt;/h3&gt;
&lt;p&gt;Run the specified job in Jenkins. You must 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/ci/jenkins/&#34;&gt;set up Jenkins&lt;/a&gt;

in order to use this stage. Once Jenkins is configured, your Jenkins master and
available jobs are automatically populated in the respective drop-down menus.&lt;/p&gt;
&lt;h3 id=&#34;manual-judgment&#34;&gt;Manual Judgment&lt;/h3&gt;
&lt;p&gt;Wait for the user to click &lt;strong&gt;Continue&lt;/strong&gt; before continuing. You can specify
instructions for how to decide whether to continue, or add input options
that users can choose from. These input options can be used to determine
pipeline behavior in downstream stages. For example, you can use the 
&lt;a href=&#34;#check-preconditions&#34;&gt;&amp;lt;strong&amp;gt;Check
Preconditions&amp;lt;/strong&amp;gt;&lt;/a&gt;
 stage to ensure that a given stage only
runs if a particular input is specified.&lt;/p&gt;
&lt;p&gt;Note: The Manual Judgement stage requires that Spinnaker&amp;rsquo;s Echo service is
enabled in order to work.&lt;/p&gt;
&lt;h3 id=&#34;pipeline&#34;&gt;Pipeline&lt;/h3&gt;
&lt;p&gt;Select any pipeline and run it as a sub-pipeline. You can run pipelines from
both the current application and any other Spinnaker applications that you have
access to. You can choose whether to wait for the results of the sub-pipeline
before this stage completes. If you wait for results, the end state of this
stage reflects the end state of the sub-pipeline. Otherwise, the this stage is
marked successful as soon as the sub-pipeline starts.&lt;/p&gt;
&lt;h3 id=&#34;resize-server-group&#34;&gt;Resize Server Group&lt;/h3&gt;
&lt;p&gt;Resize the oldest, newest, or second newest Server Group. You can resize the
Server Group by either a percentage of its current size or a specific amount.
The available resizing strategies are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Scale Up&lt;/strong&gt;, which increases the size of the target Server Group.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale Down&lt;/strong&gt;, which decreases the size of the target Server Group.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale to Cluster Size&lt;/strong&gt;, which increases the size of the target Server Group
to match the largest Server Group in the Cluster. Optionally, you can specify
additional capacity to add as well.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scale to Exact Size&lt;/strong&gt;, which adjusts the size of the target Server Group to
match the specified capacity.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;rollback-cluster&#34;&gt;Rollback Cluster&lt;/h3&gt;
&lt;p&gt;Roll back one or more regions in a Cluster.&lt;/p&gt;
&lt;h3 id=&#34;run-job&#34;&gt;Run Job&lt;/h3&gt;
&lt;p&gt;Run a container. You need to

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/install/providers/docker-registry/&#34;&gt;set up a docker registry&lt;/a&gt;
 so that
Spinnaker can access the images to run. Once you&amp;rsquo;re set up correctly, placing
your cursor in the the &lt;strong&gt;Image&lt;/strong&gt; field displays a drop-down menu of available
images.&lt;/p&gt;
&lt;h3 id=&#34;scale-down-cluster&#34;&gt;Scale Down Cluster&lt;/h3&gt;
&lt;p&gt;Scale down a cluster. You can prevent this stage from scaling down active Server
Groups, or choose to keep a certain number of Server Groups at their current
size while the rest are scaled down.&lt;/p&gt;
&lt;h3 id=&#34;script&#34;&gt;Script&lt;/h3&gt;
&lt;p&gt;Execute an arbitrary script as part of your pipeline. Spinnaker uses Jenkins to
sandbox your scripts, so you need to 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/ci/jenkins/&#34;&gt;set up Jenkins&lt;/a&gt;
 in
order to use it. If you already have Jenkins set up, make sure that you have

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/setup/other_config/features/script-stage/&#34;&gt;configured it to run scripts&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;The only required field in this stage is &lt;strong&gt;Command&lt;/strong&gt;, where you must specify the
command to run the script. Otherwise, you can use any of the fields that are
relevant to your use case in order to describe the script location and specifics
about its output, environment, and so on.&lt;/p&gt;
&lt;h3 id=&#34;shrink-cluster&#34;&gt;Shrink Cluster&lt;/h3&gt;
&lt;p&gt;Shrink a given cluster to contain nothing except a specified number of either
the newest or the largest Server Groups. You can choose whether to delete active
Server Groups if they don’t fit the specified criteria.&lt;/p&gt;
&lt;h3 id=&#34;tag-image&#34;&gt;Tag Image&lt;/h3&gt;
&lt;p&gt;Tag the current image in your pipeline with all specified tags. Tags can only
contain lowercase letters, numeric characters, underscores and dashes. Spinnaker
converts the tags to your provider&amp;rsquo;s equivalent: for example, it creates labels
for GCE images, whereas it creates tags for AWS images, and so on.&lt;/p&gt;
&lt;h3 id=&#34;wait&#34;&gt;Wait&lt;/h3&gt;
&lt;p&gt;Wait a specified period of time before proceeding. You can choose to manually
skip some or all of the wait period during execution.&lt;/p&gt;
&lt;h3 id=&#34;webhook&#34;&gt;Webhook&lt;/h3&gt;
&lt;p&gt;Make an API call to an external system as part of your pipeline.&lt;/p&gt;
&lt;p&gt;Supply the URL to send the request to and the desired HTTP method, as well as
optionally any desired custom headers and a JSON payload to add to the request.
At this point, this stage is marked as successful if it receives a 2XX or 3XX
response, fails on a 4XX, or retries on 5XX. The webhook URL, payload, status
endpoint, and final status are all shown under the pipeline execution details in
the Spinnaker UI.&lt;/p&gt;
&lt;p&gt;Note that you can use 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/expressions/&#34;&gt;pipeline expressions&lt;/a&gt;

in both the URL field and the payload. When the stage completes, the &lt;code&gt;webhook&lt;/code&gt;
field of the stage context contains the payload, which allows you to use it in
future pipeline expressions. For example, you can reference the final status
code with the expression &lt;code&gt;${#stage(&amp;quot;My Webhook Stage&amp;quot;)[&amp;quot;context&amp;quot;][&amp;quot;webhook&amp;quot;][&amp;quot;statusCode&amp;quot;]}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;If you need more details to determine the success of your request, check the
&lt;strong&gt;Wait for completion&lt;/strong&gt; checkbox. Spinnaker then polls a status URL to determine
the progress of the stage. You can supply the status URL to Spinnaker in one of
the following ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GET method against webhook URL&lt;/strong&gt;: Spinnaker polls the webhook URL using
GET to determine the status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From the Location header&lt;/strong&gt;: Spinnaker parses the Location header of the
webhook&amp;rsquo;s response call to find the status URL, and polls that URL.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;From webhook&amp;rsquo;s response&lt;/strong&gt;: Spinnaker parses the response from the original
request, and polls the returned URL.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In all cases, you then need to provide details about how to access and interpret
the status:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Status JsonPath&lt;/strong&gt; is a required field which you use to specify the path to
the status information in the response JSON of the status URL, such as
&lt;code&gt;buildInfo.status&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SUCCESS, CANCELED, and TERMINAL status mappings&lt;/strong&gt; are comma-separated
lists of strings that represent successful, canceled, or terminal (failed)
statuses, respectively. These are required fields: Spinnaker continues
polling until it sees one of the specified statuses in the status URL&amp;rsquo;s
response.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Progress location&lt;/strong&gt; is optional, and lets you specify the path to detailed
progress information in the status URL&amp;rsquo;s response JSON, such as
&lt;code&gt;buildInfo.progress&lt;/code&gt;. It shows up in the &lt;strong&gt;Info&lt;/strong&gt; field of the pipeline
execution details.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you find yourself recreating the same webhook stage repeatedly, you can
create a 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/operator/custom-webhook-stages/&#34;&gt;custom webhook&lt;/a&gt;
 stage. A
custom webhook stage is a webhook stage specifically named and configured for
your application&amp;rsquo;s needs, which shows up in the standard pipeline stages
dropdown menu.&lt;/p&gt;
&lt;p&gt;You can 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/operator/webhook-custom-trust-store/&#34;&gt;add more certification authorities&lt;/a&gt;

to trust when making webhook calls over HTTPS.&lt;/p&gt;
&lt;h2 id=&#34;app-engine&#34;&gt;App Engine&lt;/h2&gt;
&lt;h3 id=&#34;start-a-server-group&#34;&gt;Start a Server Group&lt;/h3&gt;
&lt;p&gt;Spin up instances for the Server Group according to its scaling settings. This
is distinct from 
&lt;a href=&#34;#enable-server-group&#34;&gt;Enable Server Group&lt;/a&gt;
 because it entails
starting new instances, rather than sending traffic to existing instances. You
can choose whether to start the newest, oldest, or previous
(second-most-recently deployed) Server Group.&lt;/p&gt;
&lt;p&gt;Note that you can only use this stage if you&amp;rsquo;re using an App Engine flexible
environment or are using manual scaling. Both options can be configured in your
&lt;code&gt;app.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;stop-a-server-group&#34;&gt;Stop a Server Group&lt;/h3&gt;
&lt;p&gt;Scale the specified Server Group down to zero instances. This is distinct from

&lt;a href=&#34;#disable-server-group&#34;&gt;Disable Server Group&lt;/a&gt;
, where the specified server group
remains up but stops handling traffic. You can choose whether to stop the
newest, oldest, or previous (second-most-recently deployed) Server Group.&lt;/p&gt;
&lt;p&gt;Note that you can only use this stage if you&amp;rsquo;re using an App Engine flexible
environment or are using manual scaling. Both options can be configured in your
&lt;code&gt;app.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;edit-load-balancer&#34;&gt;Edit Load Balancer&lt;/h3&gt;
&lt;p&gt;Set how much traffic a given version of your app can receive. You can specify
versions by name — for example, &lt;code&gt;sample-cluster-v000&lt;/code&gt; — or choose to send
traffic to the newest, oldest, or previous (second-most-recently deployed)
Server Group. For an example of how to do this, see the

&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/tutorials/codelabs/appengine-source-to-prod/#edit-load-balancer-stage&#34;&gt;App Engine Source to Prod codelab&lt;/a&gt;
.&lt;/p&gt;
&lt;p&gt;Note that a Spinnaker Load Balancer maps to an App Engine service, as specified
in a version&amp;rsquo;s &lt;code&gt;app.yaml&lt;/code&gt;. Your version will be deployed to the &lt;code&gt;default&lt;/code&gt;
service if one was not specified.&lt;/p&gt;
&lt;h2 id=&#34;aws&#34;&gt;AWS&lt;/h2&gt;
&lt;h3 id=&#34;modify-aws-scaling-process&#34;&gt;Modify AWS Scaling Process&lt;/h3&gt;
&lt;p&gt;Suspend/resume scaling processes.&lt;/p&gt;
&lt;h2 id=&#34;cloud-foundry&#34;&gt;Cloud Foundry&lt;/h2&gt;
&lt;h3 id=&#34;bake-cf-manifest&#34;&gt;Bake CF Manifest&lt;/h3&gt;
&lt;p&gt;Bake a manifest with 1 or more variables files.
Similar to &lt;code&gt;cf push --vars-file vars.yml&lt;/code&gt;. See the Cloud Foundry documentation about 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/deploy-apps/manifest-attributes.html#variable-substitution&#34; target=&#34;_blank&#34;&gt;Variable Substitution&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;create-service-key&#34;&gt;Create Service Key&lt;/h3&gt;
&lt;p&gt;Generate credentials for a service instance. Similar to &lt;code&gt;cf create-service-key&lt;/code&gt;. See the Cloud Foundry documentation about how to 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/services/service-keys.html#create&#34; target=&#34;_blank&#34;&gt;Create a Service Key&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;delete-service-key&#34;&gt;Delete Service Key&lt;/h3&gt;
&lt;p&gt;Delete an existing service key. Similar to &lt;code&gt;cf delete-service-key&lt;/code&gt;. See the Cloud Foundry documentation about how to 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/services/service-keys.html#delete&#34; target=&#34;_blank&#34;&gt;Delete a Service Key&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;deploy-service&#34;&gt;Deploy Service&lt;/h3&gt;
&lt;p&gt;Create a service instance. Similar to &lt;code&gt;cf create-service&lt;/code&gt;. See the Cloud Foundry documentation about 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/services/managing-services.html#create&#34; target=&#34;_blank&#34;&gt;Creating Service Instances&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;destroy-service&#34;&gt;Destroy Service&lt;/h3&gt;
&lt;p&gt;Delete a service instance. Similar to &lt;code&gt;cf delete-service&lt;/code&gt;. See the Cloud Foundry documentation about how to 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/services/managing-services.html#delete&#34; target=&#34;_blank&#34;&gt;Delete a Service Instance&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;map-load-balancer&#34;&gt;Map Load Balancer&lt;/h3&gt;
&lt;p&gt;Map a Load Balancer (a Cloud Foundry route) to a server group (Cloud Foundry app).
The domain must already exist in the Cloud Foundry org.
If the route does not already exist, it will be created.
Similar to &lt;code&gt;cf map-route&lt;/code&gt;. See the Cloud Foundry documentation about how to 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#map-route&#34; target=&#34;_blank&#34;&gt;Map a Route to Your App&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;share-service&#34;&gt;Share Service&lt;/h3&gt;
&lt;p&gt;Share a service instance with a specific org / spaces.
Similar to &lt;code&gt;cf share-service&lt;/code&gt;. See the Cloud Foundry documentation about 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/services/sharing-instances.html#sharing&#34; target=&#34;_blank&#34;&gt;Sharing a Service Instance&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;unmap-load-balancer&#34;&gt;Unmap Load Balancer&lt;/h3&gt;
&lt;p&gt;Unmap a Load Balancer (a Cloud Foundry route) from a server group (Cloud Foundry app).
Similar to &lt;code&gt;cf unmap-route&lt;/code&gt;. See the Cloud Foundry documentation about how to 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/deploy-apps/routes-domains.html#unmap-route&#34; target=&#34;_blank&#34;&gt;Unmap a Route&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;unshare-service&#34;&gt;Unshare Service&lt;/h3&gt;
&lt;p&gt;Unshare a service instance with a specific org / space.
Similar to &lt;code&gt;cf unshare-service&lt;/code&gt;. See the Cloud Foundry documentation about 
&lt;a href=&#34;https://docs.cloudfoundry.org/devguide/services/sharing-instances.html#unsharing&#34; target=&#34;_blank&#34;&gt;Unsharing a Service Instance&lt;/a&gt;
.&lt;/p&gt;
&lt;h2 id=&#34;kubernetes&#34;&gt;Kubernetes&lt;/h2&gt;
&lt;h3 id=&#34;bake-manifest&#34;&gt;Bake (Manifest)&lt;/h3&gt;
&lt;p&gt;Bake a manifest (or multi-doc manifest set) using a template renderer such as
Helm.&lt;/p&gt;
&lt;h3 id=&#34;delete-manifest&#34;&gt;Delete (Manifest)&lt;/h3&gt;
&lt;p&gt;Destroy a Kubernetes object created from a manifest. If multiple label selectors
are specified, they are combined with the logical &lt;em&gt;AND&lt;/em&gt; operator. See 
&lt;a href=&#34;https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors&#34; target=&#34;_blank&#34;&gt;the
Kubernetes reference
page&lt;/a&gt;

for more details.&lt;/p&gt;
&lt;h3 id=&#34;deploy-manifest&#34;&gt;Deploy (Manifest)&lt;/h3&gt;
&lt;p&gt;Deploy a Kubernetes manifest YAML/JSON file.&lt;/p&gt;
&lt;h3 id=&#34;find-artifacts-from-resource&#34;&gt;Find Artifacts From Resource&lt;/h3&gt;
&lt;p&gt;Find artifacts from a Kubernetes resource.&lt;/p&gt;
&lt;h3 id=&#34;patch-manifest&#34;&gt;Patch (Manifest)&lt;/h3&gt;
&lt;p&gt;Update an already existing Kubernetes resource in place using the 
&lt;a href=&#34;https://kubernetes.io/docs/tasks/run-application/update-api-object-kubectl-patch/&#34; target=&#34;_blank&#34;&gt;Kubernetes
patch operation&lt;/a&gt;
.
Spinnaker can update the resource without knowing the entire resource (that is,
you have to specify only the portion of the manifest you want to update).&lt;/p&gt;
&lt;p&gt;The patch stage can be used to add a label or update a sidecar container image
for a set of resources. It can also be used to implement a 
&lt;a href=&#34;http://brandon.dimcheff.com/2018/02/rainbow-deploys-with-kubernetes/&#34; target=&#34;_blank&#34;&gt;rainbow deployment
&lt;/a&gt;

strategy for Kubernetes by first deploying a new ReplicaSet and then patching
the fronting service&amp;rsquo;s selectors to point to the new ReplicaSet.&lt;/p&gt;
&lt;p&gt;When patching with a &lt;em&gt;strategic&lt;/em&gt; or &lt;em&gt;merge&lt;/em&gt; strategy, Spinnaker also supports 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/artifacts/in-kubernetes/#binding-artifacts-in-manifests&#34;&gt;artifact substitution
&lt;/a&gt;
 for the
patch content just like the resource manifest in the deploy stage.&lt;/p&gt;
&lt;h3 id=&#34;scale-manifest&#34;&gt;Scale (Manifest)&lt;/h3&gt;
&lt;p&gt;Scale a Kubernetes object created from a manifest.&lt;/p&gt;
&lt;h3 id=&#34;undo-rollout-manifest&#34;&gt;Undo Rollout (Manifest)&lt;/h3&gt;
&lt;p&gt;Rollback a manifest a target number of revisions.&lt;/p&gt;
&lt;h2 id=&#34;custom-stages&#34;&gt;Custom Stages&lt;/h2&gt;
&lt;h3 id=&#34;custom-webhook&#34;&gt;Custom Webhook&lt;/h3&gt;
&lt;p&gt;Extend Spinnaker with 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/operator/custom-webhook-stages/&#34;&gt;predefined Webhook stages&lt;/a&gt;
.&lt;/p&gt;
&lt;h3 id=&#34;custom-job&#34;&gt;Custom Job&lt;/h3&gt;
&lt;p&gt;Extend Spinnaker with 
&lt;a href=&#34;https://deploy-preview-629--spinnaker-io.netlify.app/docs/guides/operator/custom-job-stages/&#34;&gt;predefined Run Job stages&lt;/a&gt;
.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: Pipeline Templates</title>
      <link>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/templates/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://deploy-preview-629--spinnaker-io.netlify.app/docs/reference/pipeline/templates/</guid>
      <description>
        
        
        &lt;h2 id=&#34;pipeline-template-json&#34;&gt;Pipeline template JSON&lt;/h2&gt;
&lt;p&gt;A pipeline template uses the following config JSON:&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;schema&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;v2&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;variables&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;&amp;lt;type&amp;gt;&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;defaultValue&amp;#34;&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;&amp;lt;value&amp;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;description&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;&amp;lt;description&amp;gt;&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;&amp;lt;varName&amp;gt;&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;id&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;&amp;lt;templateName&amp;gt;&amp;#34;&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;The&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;instance&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;references&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;template&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;this&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;protect&amp;#34;&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;&amp;lt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;|&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&amp;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;metadata&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;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;displayName&amp;#34;&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;The&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;display&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;shown&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;Deck&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;description&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;&amp;lt;description&amp;gt;&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;owner&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;example@example.com&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;scopes&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&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;global&amp;#34;&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;Not&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;used&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;pipeline&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;Contains&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;templatized&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;itself&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;lastModifiedBy&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;anonymous&amp;#34;&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;Not&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;used&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;updateTs&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;0&amp;#34;&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;Not&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;used&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;parameterConfig&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;Same&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;regular&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&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;limitConcurrent&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&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;Same&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;regular&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&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;keepWaitingPipelines&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&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;Same&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;regular&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&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;description&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;&amp;#34;&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;Same&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;regular&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&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;triggers&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;Same&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;regular&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&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;notifications&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;Same&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;as&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;a&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;regular&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&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;stages&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;Contains&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;templated&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;stages&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;This&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;one&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;is&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;an&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;example&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;stage:&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;waitTime&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;${ templateVariables.waitTime }&amp;#34;&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;Templated&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;field.&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;My Wait Stage&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;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;wait&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;refId&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;wait1&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;requisiteStageRefIds&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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:#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:#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;pipeline-json&#34;&gt;Pipeline JSON&lt;/h2&gt;
&lt;p&gt;A pipeline instance that implements a pipeline template uses the following
config:&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;schema&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;v2&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;application&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;&amp;lt;appName&amp;gt;&amp;#34;&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;this&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;app&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;you&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;want&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;create&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;in.&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;New Pipeline 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:#a40000&#34;&gt;#&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;The&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;name&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;of&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;your&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pipeline.&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;template&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;front50/pipelineTemplate&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;artifactAccount&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;front50ArtifactCredentials&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;spinnaker://&amp;lt;templateName&amp;gt;&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:#204a87;font-weight:bold&#34;&gt;&amp;#34;variables&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;&amp;lt;varName&amp;gt;&amp;#34;&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;&amp;lt;value&amp;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;Value&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;template&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;variable.&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;someOtherVar&amp;#34;&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;&amp;lt;value&amp;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;inherit&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;triggers&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;parameters&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;notifications&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;description&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;&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;stages&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#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;A more thorough explanation of some fields such as &lt;code&gt;protect&lt;/code&gt; can be found in the &lt;code&gt;v1&lt;/code&gt; schema 
&lt;a href=&#34;https://github.com/spinnaker/dcd-spec/blob/master/PIPELINE_TEMPLATES.md&#34; target=&#34;_blank&#34;&gt;here&lt;/a&gt;
.&lt;/p&gt;

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