SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
Having A Talk With Jenkins
Cliffano Subagio - Shine Solutions
Cliffano Subagio
@cliffano
Shine Solutions, AustraliaJenkins
(nee Hudson)
User ~2007
Contributor ~2008
© 2018 All Rights Reserved. !3
Let’s talk about adding voice capability to Jenkins.
© 2018 All Rights Reserved. !4
Humans have always wanted to talk to machines.
© 2018 All Rights Reserved. !5
Jean-Luc Picard talking to a spacecraft
© 2018 All Rights Reserved. !6
Michael Knight talking to a car
© 2018 All Rights Reserved. !7
Jìan-Yáng talking to a fridge
© 2018 All Rights Reserved. !8
I have always wanted to talk to Jenkins.
© 2018 All Rights Reserved.
Me talking to Jenkins in 2012
!9
© 2018 All Rights Reserved. !10
Talking to Jenkins on Firefox via a MacBook
• Speakable Items
• Maps voice input to a command
• plist file format
• No training capability
© 2018 All Rights Reserved.
Can we do better in 2018?
!11
© 2018 All Rights Reserved. !12
Yes, but first we need a programming interface.
© 2018 All Rights Reserved. !13
Jenkins World 2017
© 2018 All Rights Reserved. !14
Swaggy Jenkins
• OpenAPI specification
• Covers Jenkins Remote Access API and Blue Ocean API
• Generates API clients and libraries in 70+ technology stacks
• Goal: to broaden out Jenkins integration points
© 2018 All Rights Reserved. !15
Next, we need a voice interface.
© 2018 All Rights Reserved. !16
Architecture
Natural
language
processing
Voice
(and text)
input
Command
processing
and API calls
© 2018 All Rights Reserved.
Me talking to Jenkins in 2018
!17
© 2018 All Rights Reserved. !18
Data flow
“Build job ABC”
“Job ABC has been
added to the queue”
{
“queryText”: “Build job ABC”,
“parameters”: {
“jobName”: “ABC”
},
“intent”: {
“displayName”: “build-job”
}
}
POST /job/ABC/build
200 OK
{
“fulfllmentText”: “Job ABC has been added to the queue”,
“payload”: { “google”: { “richResponse”: { “items”: [
“simpleResponse”: {
“textToSpeech”: “Job ABC has been added to the queue”,
“displayText”: “Job ABC has been added to the queue”,
}]}}}
}
{
“inputs": [
{
"intent": "actions.intent.TEXT",
"rawInputs": [
{
"inputType": "VOICE",
"query": “Build job ABC”
}
]}]}
"expectedInputs": [
{
"inputPrompt": {
"richInitialPrompt": {
"items": [ { "simpleResponse": {
"textToSpeech": “Job ABC has been added to the queue"
}
}]}}}]}
© 2018 All Rights Reserved. !19
Convo
• node.js library for voice and text conversation
• Specification based
• Generates a Dialogflow agent
• Generates an OpenAPI CloudFunctions middleware
• Maps voice input to OpenAPI call
• Utilises Dialogflow support for multiple languages, devices, and messaging apps
• https://github.com/cliffano/convo
© 2018 All Rights Reserved. !20
Conversation specification in YAML?
© 2018 All Rights Reserved. !21
Convo Spec - Greetings and unknowns
© 2018 All Rights Reserved. !22
Convo Spec - Queries
© 2018 All Rights Reserved. !23
Convo Spec - Queries with parameters
© 2018 All Rights Reserved. !24
Jenkins can be multilingual.
© 2018 All Rights Reserved.
Talking to Jenkins in Japanese
!25
© 2018 All Rights Reserved.
Talking to Jenkins in German
!26
© 2018 All Rights Reserved.
Talking to Jenkins in Indonesian
!27
© 2018 All Rights Reserved. !28
Lessons learned.
© 2018 All Rights Reserved. !29
Job names
“Release the Kraken”
“Grill Easter Cracking”
is not
© 2018 All Rights Reserved. !30
Project names
© 2018 All Rights Reserved. !31
More lessons…
• Optimise for language
• Training, training, training - more phrases
• Need better error handling than “Not found"
• Potential for Convo facts and non-OpenAPI backend
© 2018 All Rights Reserved. !32
Most important lesson?Web API is often designed for machines.Conversation API must be designed for humans.
© 2018 All Rights Reserved. !33
“Now I can be the weird guy in the corner talking to his Jenkins server.”It might be weird now. But it might be common in the future.
© 2018 All Rights Reserved. !34
Contributions are welcome!
Speak Klingon?
Join the effort
http://github.com/cliffano/convo-jenkins
© 2018 All Rights Reserved. !35
Questions?
Thank you
© 2018 All Rights Reserved. !37
Links
• https://github.com/cliffano/convo-jenkins
• https://github.com/cliffano/convo-jenkins-helper
• https://github.com/cliffano/convo
© 2018 All Rights Reserved. !38
Credits
• http://s183.photobucket.com/user/TrueX-Ray/media/
Movies%20Caption%20Contest/Movies31a.jpg.html
• http://www.ataricompendium.com/game_library/atari_tube/tube_23.jpg
• https://hologramradio.org/images/The-Impromptu-A-Springboard-Rewrite.jpg
• https://www.youtube.com/watch?v=K3pYZwol6Dc
• https://pics.me.me/you-can-do-better-than-that-memes-com-17633693.png
• https://www.dailydot.com/unclick/release-the-kraken-meme/
• http://www.startrek.com/article/poll-says-series-you-d-want-to-join-is
• https://wiki.jenkins.io/display/JENKINS/Logo

Weitere ähnliche Inhalte

Was ist angesagt?

Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
Cisco DevNet
 
Native Script by Sebastian Witalec
Native Script by Sebastian WitalecNative Script by Sebastian Witalec
Native Script by Sebastian Witalec
Simone Basso
 

Was ist angesagt? (20)

Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizza
 
Modern Post-Exploitation Strategies - 44CON 2012
Modern Post-Exploitation Strategies - 44CON 2012Modern Post-Exploitation Strategies - 44CON 2012
Modern Post-Exploitation Strategies - 44CON 2012
 
13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications13 practical tips for writing secure golang applications
13 practical tips for writing secure golang applications
 
Nativescript with angular 2
Nativescript with angular 2Nativescript with angular 2
Nativescript with angular 2
 
給 RD 的 Kubernetes 初體驗
給 RD 的 Kubernetes 初體驗給 RD 的 Kubernetes 初體驗
給 RD 的 Kubernetes 初體驗
 
ng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshopng-conf NativeScript and Angular 2 Workshop
ng-conf NativeScript and Angular 2 Workshop
 
Agile Tools for PHP
Agile Tools for PHPAgile Tools for PHP
Agile Tools for PHP
 
DevOps: The Future of Software Development
DevOps: The Future of Software DevelopmentDevOps: The Future of Software Development
DevOps: The Future of Software Development
 
How to Work Efficiently in a Hybrid Git-Perforce Environment
How to Work Efficiently in a Hybrid Git-Perforce EnvironmentHow to Work Efficiently in a Hybrid Git-Perforce Environment
How to Work Efficiently in a Hybrid Git-Perforce Environment
 
NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...NativeScript - Open source framework for building truly native mobile apps wi...
NativeScript - Open source framework for building truly native mobile apps wi...
 
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket PipelinesSalesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
Salesforce CI (Continuous Integration) - SFDX + Bitbucket Pipelines
 
Porting Projects to .NET 5
Porting Projects to .NET 5Porting Projects to .NET 5
Porting Projects to .NET 5
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
 
Swift should I switch?
Swift should I switch?Swift should I switch?
Swift should I switch?
 
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
Building advanced Chats Bots and Voice Interactive Assistants - Stève Sfartz ...
 
A Tour of Swagger for APIs
A Tour of Swagger for APIsA Tour of Swagger for APIs
A Tour of Swagger for APIs
 
Native Script by Sebastian Witalec
Native Script by Sebastian WitalecNative Script by Sebastian Witalec
Native Script by Sebastian Witalec
 
Professional iOS development
Professional iOS developmentProfessional iOS development
Professional iOS development
 
APIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API LanguagesAPIdays 2015 - The State of Web API Languages
APIdays 2015 - The State of Web API Languages
 
Social Network
Social NetworkSocial Network
Social Network
 

Ähnlich wie Having A Talk With Jenkins

The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
Jorge Ferrer
 
GitOps Core Concepts & Ways of Structuring Your Repos
GitOps Core Concepts & Ways of Structuring Your ReposGitOps Core Concepts & Ways of Structuring Your Repos
GitOps Core Concepts & Ways of Structuring Your Repos
Weaveworks
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For Managers
Atul Shridhar
 

Ähnlich wie Having A Talk With Jenkins (20)

IBM Watson & PHP, A Practical Demonstration
IBM Watson & PHP, A Practical DemonstrationIBM Watson & PHP, A Practical Demonstration
IBM Watson & PHP, A Practical Demonstration
 
Beyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in ProductionBeyond the Hype: 4 Years of Go in Production
Beyond the Hype: 4 Years of Go in Production
 
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIsThe liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
The liferay case: lessons learned evolving from RPC to Hypermedia REST APIs
 
Hardware Prototyping for Software Developers
Hardware Prototyping for Software DevelopersHardware Prototyping for Software Developers
Hardware Prototyping for Software Developers
 
The Why of Go
The Why of GoThe Why of Go
The Why of Go
 
Leaping Forward: Finding The Future of Your API Docs
Leaping Forward: Finding The Future of Your API DocsLeaping Forward: Finding The Future of Your API Docs
Leaping Forward: Finding The Future of Your API Docs
 
Dublin js 2019 Fellyph Ctintra - Why use web components?
Dublin js 2019 Fellyph Ctintra - Why use web components?Dublin js 2019 Fellyph Ctintra - Why use web components?
Dublin js 2019 Fellyph Ctintra - Why use web components?
 
Python Experience in KKBOX Group
Python Experience in KKBOX GroupPython Experience in KKBOX Group
Python Experience in KKBOX Group
 
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
Introduction to Application Development in Python and Gtk+ / Hildon @ Maemo 5
 
GitOps Core Concepts & Ways of Structuring Your Repos
GitOps Core Concepts & Ways of Structuring Your ReposGitOps Core Concepts & Ways of Structuring Your Repos
GitOps Core Concepts & Ways of Structuring Your Repos
 
Python Intro For Managers
Python Intro For ManagersPython Intro For Managers
Python Intro For Managers
 
Using WordPress as a Headless CMS with WPGraphQL
Using WordPress as a Headless CMS with WPGraphQLUsing WordPress as a Headless CMS with WPGraphQL
Using WordPress as a Headless CMS with WPGraphQL
 
Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"Need to reboot your content creation strategy? Start with "No"
Need to reboot your content creation strategy? Start with "No"
 
TDD for jenkins pipelines
TDD for jenkins pipelinesTDD for jenkins pipelines
TDD for jenkins pipelines
 
Why Python Should Be Your First Programming Language
Why Python Should Be Your First Programming LanguageWhy Python Should Be Your First Programming Language
Why Python Should Be Your First Programming Language
 
Easy contributable internationalization process with Sphinx @ pyconsg2015
Easy contributable internationalization process with Sphinx @ pyconsg2015Easy contributable internationalization process with Sphinx @ pyconsg2015
Easy contributable internationalization process with Sphinx @ pyconsg2015
 
TypeScript: JavaScript that scales (Kostas Stergiou) - GreeceJS #22
TypeScript: JavaScript that scales (Kostas Stergiou) - GreeceJS #22TypeScript: JavaScript that scales (Kostas Stergiou) - GreeceJS #22
TypeScript: JavaScript that scales (Kostas Stergiou) - GreeceJS #22
 
Getting developers hooked on your API - Nicolas Garnier - Codemotion Amsterda...
Getting developers hooked on your API - Nicolas Garnier - Codemotion Amsterda...Getting developers hooked on your API - Nicolas Garnier - Codemotion Amsterda...
Getting developers hooked on your API - Nicolas Garnier - Codemotion Amsterda...
 
The Awesomeness of Go
The Awesomeness of GoThe Awesomeness of Go
The Awesomeness of Go
 
Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...Everyone wants (someone else) to do it: writing documentation for open source...
Everyone wants (someone else) to do it: writing documentation for open source...
 

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 (19)

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
 
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
 
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
 
Bringing Jenkins Remote Access API To The Masses
Bringing Jenkins Remote Access API To The MassesBringing Jenkins Remote Access API To The Masses
Bringing Jenkins Remote Access API To The Masses
 
Application Deployment Using Ansible
Application Deployment Using AnsibleApplication Deployment Using Ansible
Application Deployment Using Ansible
 
Continuous Delivery Using Jenkins
Continuous Delivery Using JenkinsContinuous Delivery Using Jenkins
Continuous Delivery Using Jenkins
 
Javascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To TailJavascript Everywhere From Nose To Tail
Javascript Everywhere From Nose To Tail
 
From Java To Node.js
From Java To Node.jsFrom Java To Node.js
From Java To Node.js
 

Kürzlich hochgeladen

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
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
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
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...
 

Having A Talk With Jenkins

  • 1. Having A Talk With Jenkins Cliffano Subagio - Shine Solutions
  • 2. Cliffano Subagio @cliffano Shine Solutions, AustraliaJenkins (nee Hudson) User ~2007 Contributor ~2008
  • 3. © 2018 All Rights Reserved. !3 Let’s talk about adding voice capability to Jenkins.
  • 4. © 2018 All Rights Reserved. !4 Humans have always wanted to talk to machines.
  • 5. © 2018 All Rights Reserved. !5 Jean-Luc Picard talking to a spacecraft
  • 6. © 2018 All Rights Reserved. !6 Michael Knight talking to a car
  • 7. © 2018 All Rights Reserved. !7 Jìan-Yáng talking to a fridge
  • 8. © 2018 All Rights Reserved. !8 I have always wanted to talk to Jenkins.
  • 9. © 2018 All Rights Reserved. Me talking to Jenkins in 2012 !9
  • 10. © 2018 All Rights Reserved. !10 Talking to Jenkins on Firefox via a MacBook • Speakable Items • Maps voice input to a command • plist file format • No training capability
  • 11. © 2018 All Rights Reserved. Can we do better in 2018? !11
  • 12. © 2018 All Rights Reserved. !12 Yes, but first we need a programming interface.
  • 13. © 2018 All Rights Reserved. !13 Jenkins World 2017
  • 14. © 2018 All Rights Reserved. !14 Swaggy Jenkins • OpenAPI specification • Covers Jenkins Remote Access API and Blue Ocean API • Generates API clients and libraries in 70+ technology stacks • Goal: to broaden out Jenkins integration points
  • 15. © 2018 All Rights Reserved. !15 Next, we need a voice interface.
  • 16. © 2018 All Rights Reserved. !16 Architecture Natural language processing Voice (and text) input Command processing and API calls
  • 17. © 2018 All Rights Reserved. Me talking to Jenkins in 2018 !17
  • 18. © 2018 All Rights Reserved. !18 Data flow “Build job ABC” “Job ABC has been added to the queue” { “queryText”: “Build job ABC”, “parameters”: { “jobName”: “ABC” }, “intent”: { “displayName”: “build-job” } } POST /job/ABC/build 200 OK { “fulfllmentText”: “Job ABC has been added to the queue”, “payload”: { “google”: { “richResponse”: { “items”: [ “simpleResponse”: { “textToSpeech”: “Job ABC has been added to the queue”, “displayText”: “Job ABC has been added to the queue”, }]}}} } { “inputs": [ { "intent": "actions.intent.TEXT", "rawInputs": [ { "inputType": "VOICE", "query": “Build job ABC” } ]}]} "expectedInputs": [ { "inputPrompt": { "richInitialPrompt": { "items": [ { "simpleResponse": { "textToSpeech": “Job ABC has been added to the queue" } }]}}}]}
  • 19. © 2018 All Rights Reserved. !19 Convo • node.js library for voice and text conversation • Specification based • Generates a Dialogflow agent • Generates an OpenAPI CloudFunctions middleware • Maps voice input to OpenAPI call • Utilises Dialogflow support for multiple languages, devices, and messaging apps • https://github.com/cliffano/convo
  • 20. © 2018 All Rights Reserved. !20 Conversation specification in YAML?
  • 21. © 2018 All Rights Reserved. !21 Convo Spec - Greetings and unknowns
  • 22. © 2018 All Rights Reserved. !22 Convo Spec - Queries
  • 23. © 2018 All Rights Reserved. !23 Convo Spec - Queries with parameters
  • 24. © 2018 All Rights Reserved. !24 Jenkins can be multilingual.
  • 25. © 2018 All Rights Reserved. Talking to Jenkins in Japanese !25
  • 26. © 2018 All Rights Reserved. Talking to Jenkins in German !26
  • 27. © 2018 All Rights Reserved. Talking to Jenkins in Indonesian !27
  • 28. © 2018 All Rights Reserved. !28 Lessons learned.
  • 29. © 2018 All Rights Reserved. !29 Job names “Release the Kraken” “Grill Easter Cracking” is not
  • 30. © 2018 All Rights Reserved. !30 Project names
  • 31. © 2018 All Rights Reserved. !31 More lessons… • Optimise for language • Training, training, training - more phrases • Need better error handling than “Not found" • Potential for Convo facts and non-OpenAPI backend
  • 32. © 2018 All Rights Reserved. !32 Most important lesson?Web API is often designed for machines.Conversation API must be designed for humans.
  • 33. © 2018 All Rights Reserved. !33 “Now I can be the weird guy in the corner talking to his Jenkins server.”It might be weird now. But it might be common in the future.
  • 34. © 2018 All Rights Reserved. !34 Contributions are welcome! Speak Klingon? Join the effort http://github.com/cliffano/convo-jenkins
  • 35. © 2018 All Rights Reserved. !35 Questions?
  • 37. © 2018 All Rights Reserved. !37 Links • https://github.com/cliffano/convo-jenkins • https://github.com/cliffano/convo-jenkins-helper • https://github.com/cliffano/convo
  • 38. © 2018 All Rights Reserved. !38 Credits • http://s183.photobucket.com/user/TrueX-Ray/media/ Movies%20Caption%20Contest/Movies31a.jpg.html • http://www.ataricompendium.com/game_library/atari_tube/tube_23.jpg • https://hologramradio.org/images/The-Impromptu-A-Springboard-Rewrite.jpg • https://www.youtube.com/watch?v=K3pYZwol6Dc • https://pics.me.me/you-can-do-better-than-that-memes-com-17633693.png • https://www.dailydot.com/unclick/release-the-kraken-meme/ • http://www.startrek.com/article/poll-says-series-you-d-want-to-join-is • https://wiki.jenkins.io/display/JENKINS/Logo