SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Bringing Jenkins Remote Access API To The Masses
Cliffano Subagio (@cliffano) - Shine Solutions
G’Day
Cliffano Subagio (@cliffano)
Shine Solutions, Australia
Jenkins (nee Hudson)
- User since 2007
- Contributor since 2008
Menu:
- Jenkins and I
- Remote Access API
- Introducing Swaggy Jenkins
- Demo Time
- What’s next?
Once upon a time…
My Mission:
To extend Jenkins.
1. Chuck Norris Plugin
2. JSGames Plugin
3. Speakable Items
4. Firefox Add-on Build Monitor
5. Nestor
Remote Access API: What Is It?
• REST-like style
• HTTP basic authentication
• CSRF protection token
• JSON/XML responses
Remote Access API: What Can It Do?
• Build, create, delete, enable, disable a job
• Create, delete a view
• Get job and view config.xml
• List jobs status, queued jobs, executors
• Get build console output
• Get Jenkins version
Build A Job + Stream Console Output
Build A Job + Stream Console Output
Client Library
api = new RemoteAccessApi(username, password);
crumb = api.getCrumb();
api.setCrumb(crumb);
job = api.buildJob(‘myjob’);
job.isInQueue();
job.getConsoleOutput();
Existing Client Libraries
• node.js: jenkins, jenkins-api,jenkins2-api, smithers
• python: pyjenkins, jenkins-webapi, jenkins-build
• ruby: jenkins, jenkins_api_client, jenkins-json-api
• perl: Jenkins::API, Net::Jenkins
• More…
Challenges I’m Trying To Solve
• Lack of parity between clients
• Maintainers availability
• Growing number of technology stacks
Introducing Swagger CodeGen
• Generates code from an OpenAPI specification
• Endpoints, parameters, models
• Support 70+ technology stacks

and counting…
Supported Technology Stacks
My New Mission:
To enable others to integrate Jenkins
with as many technologies as possible.
Introducing Swaggy Jenkins
• Code generated from OpenAPI spec for Jenkins
• Rapid change and regenerate!
• 70+ libraries
• Published to npmjs.com, PyPI, RubyGems.org

More to follow…
• Available on github.com/cliffano/swaggy-jenkins
Building An OpenAPI Specification
• Specify info, schemes, security
• Specify paths, parameters, responses
• Generate response model definitions
• Total: 2840 lines long

45% of which are response model definitions
Converting Response Models
Jenkins response JSON OpenAPI Definitions
Generating Response Model Definitions
• `swaggy-jenkins response2definition

remoteaccess-responses/

--reporter file

--out-file remoteaccess-definitions.yml`
• Result: 1274 lines of definitions
• Regenerate when there’s a response JSON update
70+ Generated Libraries
Demo 1: Nestor CLI + Remote Access API
Demo 2 - api.ai + Remote Access API
Demo 3: Slack Chatbot + Blue Ocean API
What Is Blue Ocean API?
• Used by Blue Ocean UX
• Private API
• JSON Web Token
• Pipeline, run, queue, log
• User, organisation, SCM
Run A Pipeline
What’s Next?
• Upgrade to OpenAPI 3.0
• JWT authentication support
• Folder support
• Future of Jenkins API?
Conclusions
Resources
• Swaggy Jenkins - https://github.com/cliffano/swaggy-
jenkins
• Nestor - https://github.com/cliffano/nestor
• Jenkins api.ai Demo - https://github.com/cliffano/jenkins-
apiai-demo
• Jenkins Slack Demo - https://github.com/cliffano/jenkins-
slack-demo
• Jenkins Remote Access API - https://wiki.jenkins.io/display/
jenkins/remote+access+api
• Jenkins Blue Ocean API - https://github.com/jenkinsci/
blueocean-plugin/tree/master/blueocean-rest
Questions?
Bringing Jenkins Remote Access API To The Masses

Weitere ähnliche Inhalte

Was ist angesagt?

Automating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps ApproachAutomating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps Approach
Akshaya Mahapatra
 
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet
 

Was ist angesagt? (19)

Jenkins Overview
Jenkins OverviewJenkins Overview
Jenkins Overview
 
Slides 29-07-2017
Slides 29-07-2017Slides 29-07-2017
Slides 29-07-2017
 
Pipeline+over view
Pipeline+over viewPipeline+over view
Pipeline+over view
 
Automating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps ApproachAutomating Software Development Life Cycle - A DevOps Approach
Automating Software Development Life Cycle - A DevOps Approach
 
How to Build Your First Web App in Go
How to Build Your First Web App in GoHow to Build Your First Web App in Go
How to Build Your First Web App in Go
 
Continuous Everything v2.0
Continuous Everything v2.0Continuous Everything v2.0
Continuous Everything v2.0
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
How to improve ELK log pipeline performance
How to improve ELK log pipeline performanceHow to improve ELK log pipeline performance
How to improve ELK log pipeline performance
 
Leveraging Ansible for CI/CD
Leveraging Ansible for CI/CDLeveraging Ansible for CI/CD
Leveraging Ansible for CI/CD
 
Drupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The BasicsDrupal Continuous Integration with Jenkins - The Basics
Drupal Continuous Integration with Jenkins - The Basics
 
Best Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical JenkinsBest Practices for Mission-Critical Jenkins
Best Practices for Mission-Critical Jenkins
 
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)Seven Habits of Highly Effective Jenkins Users (2014 edition!)
Seven Habits of Highly Effective Jenkins Users (2014 edition!)
 
Watch How The Giants Fall: Learning from Bug Bounty Results
Watch How The Giants Fall: Learning from Bug Bounty ResultsWatch How The Giants Fall: Learning from Bug Bounty Results
Watch How The Giants Fall: Learning from Bug Bounty Results
 
Full-Stack, Message-oriented Programming w/ Akka.NET Actors
Full-Stack, Message-oriented Programming w/ Akka.NET ActorsFull-Stack, Message-oriented Programming w/ Akka.NET Actors
Full-Stack, Message-oriented Programming w/ Akka.NET Actors
 
Elixir Phoenix
Elixir PhoenixElixir Phoenix
Elixir Phoenix
 
Building Jenkins Pipelines at Scale
Building Jenkins Pipelines at ScaleBuilding Jenkins Pipelines at Scale
Building Jenkins Pipelines at Scale
 
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like ServersPuppet Camp Charlotte 2015: Manage Your Switches Like Servers
Puppet Camp Charlotte 2015: Manage Your Switches Like Servers
 
NATS: Simple, Secure and Scalable Messaging For the Cloud Native Era
NATS: Simple, Secure and Scalable Messaging For the Cloud Native EraNATS: Simple, Secure and Scalable Messaging For the Cloud Native Era
NATS: Simple, Secure and Scalable Messaging For the Cloud Native Era
 
Continuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And DockerContinuous Delivery With Selenium Grid And Docker
Continuous Delivery With Selenium Grid And Docker
 

Ähnlich wie Bringing Jenkins Remote Access API To The Masses

Ähnlich wie Bringing Jenkins Remote Access API To The Masses (20)

Jenkins-CI
Jenkins-CIJenkins-CI
Jenkins-CI
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 
OpenFaaS - zero serverless in 60 seconds anywhere with case-studies
OpenFaaS - zero serverless in 60 seconds anywhere with case-studiesOpenFaaS - zero serverless in 60 seconds anywhere with case-studies
OpenFaaS - zero serverless in 60 seconds anywhere with case-studies
 
Plone api
Plone apiPlone api
Plone api
 
Test parallelization using Jenkins
Test parallelization using JenkinsTest parallelization using Jenkins
Test parallelization using Jenkins
 
Developing Brilliant and Powerful APIs in Ruby & Python
Developing Brilliant and Powerful APIs in Ruby & PythonDeveloping Brilliant and Powerful APIs in Ruby & Python
Developing Brilliant and Powerful APIs in Ruby & Python
 
Jenkins Pipelines
Jenkins PipelinesJenkins Pipelines
Jenkins Pipelines
 
Intro to Pentesting Jenkins
Intro to Pentesting JenkinsIntro to Pentesting Jenkins
Intro to Pentesting Jenkins
 
OpenFaaS JeffConf 2017 - Milan
OpenFaaS JeffConf 2017 - MilanOpenFaaS JeffConf 2017 - Milan
OpenFaaS JeffConf 2017 - Milan
 
Laying the Foundation for Ionic Platform Insights on Spark
Laying the Foundation for Ionic Platform Insights on SparkLaying the Foundation for Ionic Platform Insights on Spark
Laying the Foundation for Ionic Platform Insights on Spark
 
Jenkins State of union 2013
Jenkins State of union 2013Jenkins State of union 2013
Jenkins State of union 2013
 
Deep dive into SoapUI
Deep dive into SoapUIDeep dive into SoapUI
Deep dive into SoapUI
 
ONOS System Test - ONS2016
ONOS System Test - ONS2016ONOS System Test - ONS2016
ONOS System Test - ONS2016
 
OpenWhisk Go Runtime
OpenWhisk Go RuntimeOpenWhisk Go Runtime
OpenWhisk Go Runtime
 
CI Provisioning with OpenStack - Gidi Samuels - OpenStack Day Israel 2016
CI Provisioning with OpenStack - Gidi Samuels - OpenStack Day Israel 2016CI Provisioning with OpenStack - Gidi Samuels - OpenStack Day Israel 2016
CI Provisioning with OpenStack - Gidi Samuels - OpenStack Day Israel 2016
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
Go Faster with Ansible (AWS meetup)
Go Faster with Ansible (AWS meetup)Go Faster with Ansible (AWS meetup)
Go Faster with Ansible (AWS meetup)
 
Spinnaker Chadev
Spinnaker ChadevSpinnaker Chadev
Spinnaker Chadev
 
How to create a multi tenancy for an interactive data analysis
How to create a multi tenancy for an interactive data analysisHow to create a multi tenancy for an interactive data analysis
How to create a multi tenancy for an interactive data analysis
 
Using the Splunk Java SDK
Using the Splunk Java SDKUsing the Splunk Java SDK
Using the Splunk Java SDK
 

Mehr von Cliffano Subagio

Cross-Workloads Resource-Level Relationship in AWS
Cross-Workloads Resource-Level Relationship in AWSCross-Workloads Resource-Level Relationship in AWS
Cross-Workloads Resource-Level Relationship in AWS
Cliffano Subagio
 

Mehr von Cliffano Subagio (20)

Cross-Workloads Resource-Level Relationship in AWS
Cross-Workloads Resource-Level Relationship in AWSCross-Workloads Resource-Level Relationship in AWS
Cross-Workloads Resource-Level Relationship in AWS
 
AEM OpenCloud Delivery Practices
AEM OpenCloud Delivery PracticesAEM OpenCloud Delivery Practices
AEM OpenCloud Delivery Practices
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live ParisOpenAPI Generator The Babel Fish of The API World - apidays Live Paris
OpenAPI Generator The Babel Fish of The API World - apidays Live Paris
 
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live AustraliaOpenAPI Generator The Babel Fish of The API World - apidays Live Australia
OpenAPI Generator The Babel Fish of The API World - apidays Live Australia
 
A Journey to Improve Infrastructure Compliance With InSpec
A Journey to Improve Infrastructure Compliance With InSpecA Journey to Improve Infrastructure Compliance With InSpec
A Journey to Improve Infrastructure Compliance With InSpec
 
How to Fit an Infrastructure Platform into Multiple Enterprise Environments
How to Fit an Infrastructure Platform into Multiple Enterprise EnvironmentsHow to Fit an Infrastructure Platform into Multiple Enterprise Environments
How to Fit an Infrastructure Platform into Multiple Enterprise Environments
 
Swagger AEM - An OpenAPI Specification for AEM
Swagger AEM - An OpenAPI Specification for AEMSwagger AEM - An OpenAPI Specification for AEM
Swagger AEM - An OpenAPI Specification for AEM
 
Introducing AEM OpenCloud
Introducing AEM OpenCloudIntroducing AEM OpenCloud
Introducing AEM OpenCloud
 
A Quick Look at Accessibility in the World of DevOps
A Quick Look at Accessibility in the World of DevOpsA Quick Look at Accessibility in the World of DevOps
A Quick Look at Accessibility in the World of DevOps
 
Conversation With Your Application Using DialogFlow and CloudFunctions
Conversation With Your Application Using DialogFlow and CloudFunctionsConversation With Your Application Using DialogFlow and CloudFunctions
Conversation With Your Application Using DialogFlow and CloudFunctions
 
Let's Build Voice Assistant Learning Games For Kids
Let's Build Voice Assistant Learning Games For KidsLet's Build Voice Assistant Learning Games For Kids
Let's Build Voice Assistant Learning Games For Kids
 
Having A Talk With Jenkins
Having A Talk With JenkinsHaving A Talk With Jenkins
Having A Talk With Jenkins
 
AEM Open Cloud - The First Two Years
AEM Open Cloud - The First Two YearsAEM Open Cloud - The First Two Years
AEM Open Cloud - The First Two Years
 
AEM OpenCloud - What's New Since 2.0.0
AEM OpenCloud - What's New Since 2.0.0AEM OpenCloud - What's New Since 2.0.0
AEM OpenCloud - What's New Since 2.0.0
 
Beyond AEM Curl Commands
Beyond AEM Curl CommandsBeyond AEM Curl Commands
Beyond AEM Curl Commands
 
AEM OpenCloud
AEM OpenCloudAEM OpenCloud
AEM OpenCloud
 
Open Source AEM Platform: A Short Intro
Open Source AEM Platform: A Short IntroOpen Source AEM Platform: A Short Intro
Open Source AEM Platform: A Short Intro
 
How To Play Music On A Vacuum Cleaner
How To Play Music On A Vacuum CleanerHow To Play Music On A Vacuum Cleaner
How To Play Music On A Vacuum Cleaner
 
Application Deployment Using Ansible
Application Deployment Using AnsibleApplication Deployment Using Ansible
Application Deployment Using Ansible
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
 

Kürzlich hochgeladen

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024Top 10 Most Downloaded Games on Play Store in 2024
Top 10 Most Downloaded Games on Play Store in 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

Bringing Jenkins Remote Access API To The Masses

  • 1. Bringing Jenkins Remote Access API To The Masses Cliffano Subagio (@cliffano) - Shine Solutions
  • 2. G’Day Cliffano Subagio (@cliffano) Shine Solutions, Australia Jenkins (nee Hudson) - User since 2007 - Contributor since 2008
  • 3. Menu: - Jenkins and I - Remote Access API - Introducing Swaggy Jenkins - Demo Time - What’s next?
  • 4. Once upon a time…
  • 9. 4. Firefox Add-on Build Monitor
  • 11. Remote Access API: What Is It? • REST-like style • HTTP basic authentication • CSRF protection token • JSON/XML responses
  • 12. Remote Access API: What Can It Do? • Build, create, delete, enable, disable a job • Create, delete a view • Get job and view config.xml • List jobs status, queued jobs, executors • Get build console output • Get Jenkins version
  • 13. Build A Job + Stream Console Output
  • 14. Build A Job + Stream Console Output
  • 15. Client Library api = new RemoteAccessApi(username, password); crumb = api.getCrumb(); api.setCrumb(crumb); job = api.buildJob(‘myjob’); job.isInQueue(); job.getConsoleOutput();
  • 16. Existing Client Libraries • node.js: jenkins, jenkins-api,jenkins2-api, smithers • python: pyjenkins, jenkins-webapi, jenkins-build • ruby: jenkins, jenkins_api_client, jenkins-json-api • perl: Jenkins::API, Net::Jenkins • More…
  • 17. Challenges I’m Trying To Solve • Lack of parity between clients • Maintainers availability • Growing number of technology stacks
  • 18. Introducing Swagger CodeGen • Generates code from an OpenAPI specification • Endpoints, parameters, models • Support 70+ technology stacks
 and counting…
  • 20. My New Mission: To enable others to integrate Jenkins with as many technologies as possible.
  • 21. Introducing Swaggy Jenkins • Code generated from OpenAPI spec for Jenkins • Rapid change and regenerate! • 70+ libraries • Published to npmjs.com, PyPI, RubyGems.org
 More to follow… • Available on github.com/cliffano/swaggy-jenkins
  • 22. Building An OpenAPI Specification • Specify info, schemes, security • Specify paths, parameters, responses • Generate response model definitions • Total: 2840 lines long
 45% of which are response model definitions
  • 23. Converting Response Models Jenkins response JSON OpenAPI Definitions
  • 24. Generating Response Model Definitions • `swaggy-jenkins response2definition
 remoteaccess-responses/
 --reporter file
 --out-file remoteaccess-definitions.yml` • Result: 1274 lines of definitions • Regenerate when there’s a response JSON update
  • 26. Demo 1: Nestor CLI + Remote Access API
  • 27.
  • 28. Demo 2 - api.ai + Remote Access API
  • 29.
  • 30. Demo 3: Slack Chatbot + Blue Ocean API
  • 31. What Is Blue Ocean API? • Used by Blue Ocean UX • Private API • JSON Web Token • Pipeline, run, queue, log • User, organisation, SCM
  • 32.
  • 34. What’s Next? • Upgrade to OpenAPI 3.0 • JWT authentication support • Folder support • Future of Jenkins API?
  • 36. Resources • Swaggy Jenkins - https://github.com/cliffano/swaggy- jenkins • Nestor - https://github.com/cliffano/nestor • Jenkins api.ai Demo - https://github.com/cliffano/jenkins- apiai-demo • Jenkins Slack Demo - https://github.com/cliffano/jenkins- slack-demo • Jenkins Remote Access API - https://wiki.jenkins.io/display/ jenkins/remote+access+api • Jenkins Blue Ocean API - https://github.com/jenkinsci/ blueocean-plugin/tree/master/blueocean-rest