Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix
-
Upload
spring-by-pivotal -
Category
Technology
-
view
708 -
download
0
Transcript of Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix
![Page 1: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/1.jpg)
Spinnaker and SpELEvolving an Expression Language forContinuous Delivery Pipelines
| Tomas Lin @tomaslin
![Page 2: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/2.jpg)
BakeTrigger Deploy SmokeTest
Approval
![Page 3: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/3.jpg)
BakeTrigger Deploy SmokeTest
Approval
Branchname
![Page 4: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/4.jpg)
BakeTrigger Deploy SmokeTest
Approval
Branchname
myapp-feature- Branchname
![Page 5: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/5.jpg)
BakeTrigger Deploy SmokeTest
Approval
run smoke tests?
![Page 6: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/6.jpg)
BakeTrigger Deploy SmokeTest
Approval
run smoke tests?
![Page 7: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/7.jpg)
Spring Expression Language ( SpEL )
![Page 8: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/8.jpg)
“The Spring Expression Language (SpEL for short) is a powerful expression language that supports querying and manipulating an object graph at runtime. The language syntax is similar to Unified EL but offers additional features, most notably method invocation and basic string templating functionality.”
- Spring documentation Chapter 10
![Page 9: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/9.jpg)
Also in:Spring
Thymeleaf
![Page 10: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/10.jpg)
a. Cluster-${ 7+2 } Cluster-9
b. Cluster-${ 7+2 }-${ 9 + 1 }-${ ‘string’ } Cluster-9-10-string
c. ${‘ some stringaroony ’.trim() } some stringaroony
d. ${ deploymentDetails[0] }
e. ${ trigger[‘parameters’][‘ideal temperature’] }
![Page 11: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/11.jpg)
a. ${ trigger.user ?: ‘britney’ }
b. ${ deploymentDetails?.[ region == ‘us-west-1’ ] }
c. ${ #toJson( deploymentDetails ) }
d. ${ new java.text.SimpleDateFormat('mm-dd-yyyy').format(new java.util.Date()) }
![Page 12: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/12.jpg)
YayWe were already heavily invested in Spring Ecosystem - Spring Boot, Spring Batch.
No external library dependency.
Seem pretty robust and powerful.
Looked to have great documentation.
![Page 13: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/13.jpg)
NayCouldn’t find a lot of examples of usage outside of Spring and Thymeleaf.
Could it work outside of managing bean dependencies?
Unsure of how easy it was to extend and customize.
Did it have a heavy dependency on Java?
![Page 14: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/14.jpg)
Spinnaker Pipelines
![Page 15: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/15.jpg)
![Page 16: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/16.jpg)
Open Source successor to Asgard
Multi-region, multi-account, multi-cloud
Used to deploy around 98% of microservices at Netflix.
http://spinnaker.io
![Page 17: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/17.jpg)
![Page 18: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/18.jpg)
![Page 19: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/19.jpg)
![Page 20: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/20.jpg)
Resize, Disable, Enable, Destroy, Deploy, Clone
![Page 21: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/21.jpg)
![Page 22: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/22.jpg)
Shrink, Scale Down, Disable
![Page 23: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/23.jpg)
![Page 24: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/24.jpg)
![Page 25: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/25.jpg)
![Page 26: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/26.jpg)
![Page 27: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/27.jpg)
Wiring up SpEL
![Page 28: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/28.jpg)
Note: Everything we’re talking about is available in Github.
Easiest way to check it out is search for ‘ContextParameterProcessor’ in orca,
https://github.com/spinnaker/orca/search?q=contextparameterprocessor
![Page 29: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/29.jpg)
Trigger( builds a ami )
Smoke Test Merge PREnableServer Group
DeployServer Group
![Page 30: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/30.jpg)
![Page 31: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/31.jpg)
Customizing the parser
![Page 32: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/32.jpg)
task context
![Page 33: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/33.jpg)
Evaluating SpEL
evaluationContext
${ SpEL expression }
parserContext
result
![Page 34: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/34.jpg)
${ job }
faily-godmother
![Page 35: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/35.jpg)
Adding Properties
![Page 36: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/36.jpg)
Execution - the current pipeline ExecutionTrigger - the pipeline trigger
Parameters - pipeline parameterstrigger - pipeline triggerparameters - pipeline parametersscmInfo - git details in triggerdeployedServerGroups : details from last cluster deployed
execution the current pipeline execution
parameters pipeline parameters
trigger pipeline trigger
scmInfo git details
deploymentDetails results of the findImage or Bake stage
deployedServerGroups last created server group
![Page 37: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/37.jpg)
${ deployedServerGroups?.[region==‘us-east-1’][‘serverGroup’] }
myapp-v001
![Page 38: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/38.jpg)
Adding Methods
![Page 39: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/39.jpg)
![Page 40: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/40.jpg)
Execution - the current pipeline ExecutionTrigger - the pipeline trigger
Parameters - pipeline parameterstrigger - pipeline triggerparameters - pipeline parametersscmInfo - git details in triggerdeployedServerGroups : details from last cluster deployed
#alphanumerical trims all non-alphanumerical characters
#fromJson converts JSON to a map
#fromUrl contents from a url
#jsonFromUrl JSON content from an url
#judgment choice from manual judgment stage
![Page 41: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/41.jpg)
Execution - the current pipeline ExecutionTrigger - the pipeline trigger
Parameters - pipeline parameterstrigger - pipeline triggerparameters - pipeline parametersscmInfo - git details in triggerdeployedServerGroups : details from last cluster deployed
#stage shortcut to stage contents by name
#toBoolean conversion to boolean
#toFloat conversion to float
#toInt conversion to int
#toJson conversion from Map to Json
![Page 42: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/42.jpg)
${ #alphanumerical(‘jenny from the block’) }
jennyfromtheblock
![Page 43: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/43.jpg)
Getting data from Jenkins
![Page 44: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/44.jpg)
Trigger
Smoke Test Merge PR
ami=i-xxxyyyyregion=us-west-1
Property Files
![Page 45: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/45.jpg)
![Page 46: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/46.jpg)
${ trigger.properties[‘ami’] }
![Page 47: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/47.jpg)
Trigger
Smoke Test Merge PR
retries=truenumber of retries=2
![Page 48: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/48.jpg)
![Page 49: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/49.jpg)
${ retries }${ #stage(‘Smoke Test’)[‘context’][‘retries’] }
![Page 50: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/50.jpg)
Example: Jenkins parameter passing
![Page 51: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/51.jpg)
![Page 52: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/52.jpg)
${ #alphanumerical( trigger.properties[‘us-west-1’] ).toUpperCase() }
![Page 53: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/53.jpg)
![Page 54: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/54.jpg)
Global SpEL Evaluation
![Page 55: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/55.jpg)
![Page 56: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/56.jpg)
![Page 57: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/57.jpg)
![Page 58: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/58.jpg)
stage
stage
task
task
task
context
definition
![Page 59: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/59.jpg)
stage
stage
task
task
task
context
definitiondefinition
stage
![Page 60: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/60.jpg)
Not everything is a String…
![Page 61: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/61.jpg)
}
![Page 62: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/62.jpg)
Pipeline parameters
![Page 63: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/63.jpg)
![Page 64: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/64.jpg)
![Page 65: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/65.jpg)
![Page 66: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/66.jpg)
Using SpEL to control execution of stages
![Page 67: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/67.jpg)
![Page 68: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/68.jpg)
![Page 69: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/69.jpg)
![Page 70: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/70.jpg)
![Page 71: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/71.jpg)
![Page 72: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/72.jpg)
![Page 73: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/73.jpg)
}
![Page 74: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/74.jpg)
![Page 75: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/75.jpg)
![Page 76: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/76.jpg)
![Page 77: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/77.jpg)
![Page 78: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/78.jpg)
![Page 79: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/79.jpg)
![Page 80: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/80.jpg)
![Page 81: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/81.jpg)
Using SpEL in Spinnaker UI
![Page 82: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/82.jpg)
![Page 83: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/83.jpg)
![Page 84: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/84.jpg)
![Page 85: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/85.jpg)
![Page 86: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/86.jpg)
![Page 87: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/87.jpg)
![Page 88: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/88.jpg)
![Page 89: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/89.jpg)
![Page 90: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/90.jpg)
Common mistakes around Expressions
![Page 91: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/91.jpg)
Culture of Freedom and Responsibility
You build it, you run it, you support it.
#spinnaker slack channel
Office Hours
Anytime walk-in 1-1 help with first responder
![Page 92: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/92.jpg)
${ parameters.ami ?: ${ ‘ami’ + ‘x’ } }
![Page 93: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/93.jpg)
${ parameters.use ami in us-west-1 }
${ parameters[‘use ami in us-west-1’] }
![Page 94: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/94.jpg)
${ #deploymentDetails?.[ region == parameters.region ] }
${ #deploymentDetails?.[ region == #root.parameters.region ] }
![Page 95: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/95.jpg)
${ ‘a’ + ‘b’ } ${ derp } ${ 1 + 1 }
![Page 96: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/96.jpg)
“${ my escaped expression }”.toString()
![Page 97: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/97.jpg)
Simplifying Stage Executions
![Page 98: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/98.jpg)
read from url
![Page 99: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/99.jpg)
#jsonFromUrl( url )
![Page 100: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/100.jpg)
${ #jsonFromUrl( ‘http://archeius/rest/v1/props/myapp’)[‘propertiesList’][0][‘value’]}
${ deploymentDetails[0].jenkins.number != #jsonFromUrl( ‘https://spinnakerapi/applications/orca/clusters/mgmt/orca-main/aws/us-west-2/serverGroups/target/NEWEST?onlyEnabled=true' )['buildInfo']['jenkins']['number'] }
![Page 101: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/101.jpg)
Expressions can be a nice temporary solution
![Page 102: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/102.jpg)
![Page 104: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/104.jpg)
![Page 105: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/105.jpg)
![Page 106: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/106.jpg)
What’s next?
![Page 107: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/107.jpg)
Better support for on-the-fly expression testing and construction.
Helper methods such as #pipeline( ‘xxx’ ) and #stageInPipeline( ‘Wait’, ‘xxx’ ).
Better UI support.
![Page 108: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/108.jpg)
Results
![Page 109: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/109.jpg)
Over 1100 pipelines running in production ( of 5100 + ) use at least one SpEL expression.
![Page 110: Putting a SpEL on Spinnaker: Evolving an Expression Language for Continuous Delivery at Netflix](https://reader031.fdocuments.us/reader031/viewer/2022030317/5870d9441a28ab64768b73eb/html5/thumbnails/110.jpg)
Thank you.
spinnaker.io jobs.netflix.com
Try Spinnaker Come work with us!