SlideShare a Scribd company logo
1 of 30
Jenkins User Conference Europe #jenkinsconf
Vincent Latombe
Amadeus IT Group
http://www.amadeus.com
June 25, 2014
Going Literate in
Amadeus
#jenkinsconf
Jenkins User Conference Europe #jenkinsconf
About me
Vincent Latombe a.k.a vlatombe
Developer advocate at Amadeus
Used to build for Java/JEE env., now also
C++/Python/Ruby
Heavy Jenkins user since 2010
Maintainer of the Clearcase plugin
Contributes to core (windows fixes), git
and literate
Jenkins User Conference Europe #jenkinsconf
Agenda
What is Literate ?
Literate in Practice
Literate in Amadeus
Under the hood
Jenkins User Conference Europe #jenkinsconf
WHAT IS LITERATE?
Part I
WTF IS LITERATE???
Jenkins User Conference Europe #jenkinsconf
Literate Programming
• Introduced by Donald
Knuth in 1983
• Explain program logic
using natural language
with snippets of code
and macros
Jenkins User Conference Europe #jenkinsconf
Literate Builds
• Applies Literate paradigm to builds
• Describes the build steps in a marker file or
simply in README.md
• Build definition stored in the same SCM as
the code it is building
Jenkins User Conference Europe #jenkinsconf
Literate Builds
• Marker file within
the SCM
• May contain the
build definition
• Fallback to
README.md if
empty
Jenkins User Conference Europe #jenkinsconf
Markdown Cheatsheet
A section
=========
This is text inside section.
And `this is inline code`.
some code
Jenkins User Conference Europe #jenkinsconf
Hello world example
Hello world literate project
============================
Build
-----
Let's say hello
echo "Hello world"
Jenkins User Conference Europe #jenkinsconf
Ant example
Environments
===========
Notice how we specify the environment to build with by providing
Jenkins node labels or tool installer names in code snippet
sections attached to bullet points in an "environment" section?
* `ant-1.8`, `java-1.7`
Build
=====
ant clean dist
Jenkins User Conference Europe #jenkinsconf
Matrix build? No problem
Complex project
===============
Environments
===========
We have two different environments that the build must be run
on:
* `linux`, `gcc-4.2`, `ant-1.8`, `maven-3.0.5`, `java-1.7`
* `windows`, `vs-pro-2012`, `ant-1.8`, `maven-3.0.5`, `java-1.7`
Jenkins User Conference Europe #jenkinsconf
Build commands per environment
Build
=====
We have two different sets of build instructions, one for
building with visual studio and the other for building with GCC
* On `gcc-4.2`, we start by building the native code
./configure
make
* On `vs-pro-2012`, we have a batch file to do the native steps
call build-native.bat
Jenkins User Conference Europe #jenkinsconf
Additional tasks
• Defined in the marker file
• Enabled per branch using the job
configuration
• Lightweight promotion
– Self-promotion
– Manual promotion (with optional parameters)
Jenkins User Conference Europe #jenkinsconf
Extensions
• Files stored in SCM under .jenkins folder
• Basic: <extensionName>.xml, contains the
config snippet
• Implement Agent to expose higher-level
configuration files
Jenkins User Conference Europe #jenkinsconf
LITERATE IN PRACTICE
Part II
Jenkins User Conference Europe #jenkinsconf
DEMO TIME !
Jenkins User Conference Europe #jenkinsconf
LITERATE IN AMADEUS
Part III
Jenkins User Conference Europe #jenkinsconf
Our context
• About 3000 developers
• Commercial products
– ~1000 Java/JEE
– ~2000 C++
• For internal tooling, add
– Python
– Ruby
– Perl
Jenkins User Conference Europe #jenkinsconf
It’s about control!
• Fully open
• Locked down
• Balanced
– Template-based solutions: only defined attributes
can be customized
– Literate: commands can be customized, post-
build actions can be whitelisted
Jenkins User Conference Europe #jenkinsconf
Infrastructure
Stash Jenkins
 1.Enable CI
2.Creates
3.Index branches
4.Parses marker
Literate Multi-
branch project
Literate
branch
project
Project/Repo
sitory
Literate
env.
project
Literate
env.
project
5.Build status
Jenkins User Conference Europe #jenkinsconf
YAML Parser
• Markdown considered too textual, too
much space for syntax errors, even if using
README.md was tempting
• We have some YAML lovers internally ;-)
• Easy to implement thanks to existing Literate
architecture
Jenkins User Conference Europe #jenkinsconf
Markdown vs YAML
Environments
============
* `windows`, `java-1.6`
* `linux`, `java-1.7`
Build
=====
mvn –B clean verify
environments:
- [windows, java-1.6]
- [linux, java-1.7]
build: mvn –B clean verify
Jenkins User Conference Europe #jenkinsconf
UNDER THE HOOD
Part IV
Jenkins User Conference Europe #jenkinsconf
Architecture
Literate-plugin
Literate-api Branch-api
Scm-api
Jenkins User Conference Europe #jenkinsconf
Literate-api
• Doesn’t depend on Jenkins
• Pluggable model builders (Markdown,
YAML, …)
Jenkins User Conference Europe #jenkinsconf
Scm-API
• jenkins.scm.api.SCMSource : provider for
hudson.scm.SCM instances
• Able to comprehend multiple heads on a
SCM
Jenkins User Conference Europe #jenkinsconf
Branch-api
• Toolkit to handle multi-branch
– Dead branch policy
– Untrusted branches
– Build retention
– Throttling
• Foundation for
– Multi-branch freestyle project
– Multi-branch template project
Jenkins User Conference Europe #jenkinsconf
Literate-plugin
• New extension points
– LiterateBranchProperty : decorate branch and
environments with anything (buildwrapper,
properties…)
– Agent : Builds Publisher instances from files in the
SCM.
Jenkins User Conference Europe #jenkinsconf
Towards a release
• Develop the ecosystem
– More plugins integration
– Github/Bitbucket/Stash pull request support
• Integration with isolation features
– Sandbox commands within a container
Jenkins User Conference Europe #jenkinsconf
Corporate Community
Thank You To Our Sponsors
Platinum Gold
Silver

More Related Content

What's hot

2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
Shreeniwas Iyer
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
Dennys Hsieh
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
VladLica
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
AppsDojo
 

What's hot (20)

2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson2013 10-28 php ug presentation - ci using phing and hudson
2013 10-28 php ug presentation - ci using phing and hudson
 
Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)Continuous Integration (Jenkins/Hudson)
Continuous Integration (Jenkins/Hudson)
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 
TYPO3 & Composer
TYPO3 & ComposerTYPO3 & Composer
TYPO3 & Composer
 
Continuous integration with Jenkins
Continuous integration with JenkinsContinuous integration with Jenkins
Continuous integration with Jenkins
 
Continuous Integration for Beginners
Continuous Integration for BeginnersContinuous Integration for Beginners
Continuous Integration for Beginners
 
Improving software quality using Continuous Integration
Improving software quality using Continuous IntegrationImproving software quality using Continuous Integration
Improving software quality using Continuous Integration
 
Chapter 1 java
Chapter 1 java Chapter 1 java
Chapter 1 java
 
Driving Innovation with Component-based Development at Boeing
Driving Innovation with Component-based Development at BoeingDriving Innovation with Component-based Development at Boeing
Driving Innovation with Component-based Development at Boeing
 
Teamcity CI Server
Teamcity CI ServerTeamcity CI Server
Teamcity CI Server
 
PDE Good Practices
PDE Good PracticesPDE Good Practices
PDE Good Practices
 
Jenkins For One
Jenkins For OneJenkins For One
Jenkins For One
 
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/HudsonEclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
Eclipse DemoCamp Bucharest 2014 - Continuous Integration Jenkins/Hudson
 
Professional iOS development
Professional iOS developmentProfessional iOS development
Professional iOS development
 
Docker
DockerDocker
Docker
 
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
Patterns and antipatterns in Docker image lifecycle as was presented at DC Do...
 
Eclipse plug in development
Eclipse plug in developmentEclipse plug in development
Eclipse plug in development
 
Using Jenkins with iOS projects
Using Jenkins with iOS projectsUsing Jenkins with iOS projects
Using Jenkins with iOS projects
 
QA Fest 2019. Boni Garcia. Web and Mobile testing with Selenium, JUnit 5, and...
QA Fest 2019. Boni Garcia. Web and Mobile testing with Selenium, JUnit 5, and...QA Fest 2019. Boni Garcia. Web and Mobile testing with Selenium, JUnit 5, and...
QA Fest 2019. Boni Garcia. Web and Mobile testing with Selenium, JUnit 5, and...
 

Similar to Going literate in Amadeus JUC Berlin June 25th 2014

Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
Anton Arhipov
 

Similar to Going literate in Amadeus JUC Berlin June 25th 2014 (20)

Version your build process as you version your code
Version your build process as you version your codeVersion your build process as you version your code
Version your build process as you version your code
 
Jenkins & IaC
Jenkins & IaCJenkins & IaC
Jenkins & IaC
 
Jenkins & Selenium
Jenkins & SeleniumJenkins & Selenium
Jenkins & Selenium
 
Build Time Hacking
Build Time HackingBuild Time Hacking
Build Time Hacking
 
JUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with JenkinsJUC Europe 2015: A Reproducible Build Environment with Jenkins
JUC Europe 2015: A Reproducible Build Environment with Jenkins
 
Sai krishna
Sai krishnaSai krishna
Sai krishna
 
Jenkins 1
Jenkins 1Jenkins 1
Jenkins 1
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
Developer joy for distributed teams with CodeReady Workspaces | DevNation Tec...
 
Resume
ResumeResume
Resume
 
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) TeamsGraduating to Jenkins CI for Ruby(-on-Rails) Teams
Graduating to Jenkins CI for Ruby(-on-Rails) Teams
 
Android ndk
Android ndkAndroid ndk
Android ndk
 
sahithi_Build_Release_Resume
sahithi_Build_Release_Resumesahithi_Build_Release_Resume
sahithi_Build_Release_Resume
 
Juc boston2014.pptx
Juc boston2014.pptxJuc boston2014.pptx
Juc boston2014.pptx
 
Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012Jenkins Evolutions - JEEConf 2012
Jenkins Evolutions - JEEConf 2012
 
Android NDK
Android NDKAndroid NDK
Android NDK
 
ASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bitsASP.NET Core: The best of the new bits
ASP.NET Core: The best of the new bits
 
varun JENKINS.pptx
varun JENKINS.pptxvarun JENKINS.pptx
varun JENKINS.pptx
 
Development-Environment Up & Running with Docker
Development-Environment Up & Running with DockerDevelopment-Environment Up & Running with Docker
Development-Environment Up & Running with Docker
 

Recently uploaded

Recently uploaded (20)

%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Vancouver Psychic Readings, Attraction spells,Br...
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban%in Durban+277-882-255-28 abortion pills for sale in Durban
%in Durban+277-882-255-28 abortion pills for sale in Durban
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Unlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language ModelsUnlocking the Future of AI Agents with Large Language Models
Unlocking the Future of AI Agents with Large Language Models
 
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...Chinsurah Escorts ☎️8617697112  Starting From 5K to 15K High Profile Escorts ...
Chinsurah Escorts ☎️8617697112 Starting From 5K to 15K High Profile Escorts ...
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 

Going literate in Amadeus JUC Berlin June 25th 2014

  • 1. Jenkins User Conference Europe #jenkinsconf Vincent Latombe Amadeus IT Group http://www.amadeus.com June 25, 2014 Going Literate in Amadeus #jenkinsconf
  • 2. Jenkins User Conference Europe #jenkinsconf About me Vincent Latombe a.k.a vlatombe Developer advocate at Amadeus Used to build for Java/JEE env., now also C++/Python/Ruby Heavy Jenkins user since 2010 Maintainer of the Clearcase plugin Contributes to core (windows fixes), git and literate
  • 3. Jenkins User Conference Europe #jenkinsconf Agenda What is Literate ? Literate in Practice Literate in Amadeus Under the hood
  • 4. Jenkins User Conference Europe #jenkinsconf WHAT IS LITERATE? Part I WTF IS LITERATE???
  • 5. Jenkins User Conference Europe #jenkinsconf Literate Programming • Introduced by Donald Knuth in 1983 • Explain program logic using natural language with snippets of code and macros
  • 6. Jenkins User Conference Europe #jenkinsconf Literate Builds • Applies Literate paradigm to builds • Describes the build steps in a marker file or simply in README.md • Build definition stored in the same SCM as the code it is building
  • 7. Jenkins User Conference Europe #jenkinsconf Literate Builds • Marker file within the SCM • May contain the build definition • Fallback to README.md if empty
  • 8. Jenkins User Conference Europe #jenkinsconf Markdown Cheatsheet A section ========= This is text inside section. And `this is inline code`. some code
  • 9. Jenkins User Conference Europe #jenkinsconf Hello world example Hello world literate project ============================ Build ----- Let's say hello echo "Hello world"
  • 10. Jenkins User Conference Europe #jenkinsconf Ant example Environments =========== Notice how we specify the environment to build with by providing Jenkins node labels or tool installer names in code snippet sections attached to bullet points in an "environment" section? * `ant-1.8`, `java-1.7` Build ===== ant clean dist
  • 11. Jenkins User Conference Europe #jenkinsconf Matrix build? No problem Complex project =============== Environments =========== We have two different environments that the build must be run on: * `linux`, `gcc-4.2`, `ant-1.8`, `maven-3.0.5`, `java-1.7` * `windows`, `vs-pro-2012`, `ant-1.8`, `maven-3.0.5`, `java-1.7`
  • 12. Jenkins User Conference Europe #jenkinsconf Build commands per environment Build ===== We have two different sets of build instructions, one for building with visual studio and the other for building with GCC * On `gcc-4.2`, we start by building the native code ./configure make * On `vs-pro-2012`, we have a batch file to do the native steps call build-native.bat
  • 13. Jenkins User Conference Europe #jenkinsconf Additional tasks • Defined in the marker file • Enabled per branch using the job configuration • Lightweight promotion – Self-promotion – Manual promotion (with optional parameters)
  • 14. Jenkins User Conference Europe #jenkinsconf Extensions • Files stored in SCM under .jenkins folder • Basic: <extensionName>.xml, contains the config snippet • Implement Agent to expose higher-level configuration files
  • 15. Jenkins User Conference Europe #jenkinsconf LITERATE IN PRACTICE Part II
  • 16. Jenkins User Conference Europe #jenkinsconf DEMO TIME !
  • 17. Jenkins User Conference Europe #jenkinsconf LITERATE IN AMADEUS Part III
  • 18. Jenkins User Conference Europe #jenkinsconf Our context • About 3000 developers • Commercial products – ~1000 Java/JEE – ~2000 C++ • For internal tooling, add – Python – Ruby – Perl
  • 19. Jenkins User Conference Europe #jenkinsconf It’s about control! • Fully open • Locked down • Balanced – Template-based solutions: only defined attributes can be customized – Literate: commands can be customized, post- build actions can be whitelisted
  • 20. Jenkins User Conference Europe #jenkinsconf Infrastructure Stash Jenkins  1.Enable CI 2.Creates 3.Index branches 4.Parses marker Literate Multi- branch project Literate branch project Project/Repo sitory Literate env. project Literate env. project 5.Build status
  • 21. Jenkins User Conference Europe #jenkinsconf YAML Parser • Markdown considered too textual, too much space for syntax errors, even if using README.md was tempting • We have some YAML lovers internally ;-) • Easy to implement thanks to existing Literate architecture
  • 22. Jenkins User Conference Europe #jenkinsconf Markdown vs YAML Environments ============ * `windows`, `java-1.6` * `linux`, `java-1.7` Build ===== mvn –B clean verify environments: - [windows, java-1.6] - [linux, java-1.7] build: mvn –B clean verify
  • 23. Jenkins User Conference Europe #jenkinsconf UNDER THE HOOD Part IV
  • 24. Jenkins User Conference Europe #jenkinsconf Architecture Literate-plugin Literate-api Branch-api Scm-api
  • 25. Jenkins User Conference Europe #jenkinsconf Literate-api • Doesn’t depend on Jenkins • Pluggable model builders (Markdown, YAML, …)
  • 26. Jenkins User Conference Europe #jenkinsconf Scm-API • jenkins.scm.api.SCMSource : provider for hudson.scm.SCM instances • Able to comprehend multiple heads on a SCM
  • 27. Jenkins User Conference Europe #jenkinsconf Branch-api • Toolkit to handle multi-branch – Dead branch policy – Untrusted branches – Build retention – Throttling • Foundation for – Multi-branch freestyle project – Multi-branch template project
  • 28. Jenkins User Conference Europe #jenkinsconf Literate-plugin • New extension points – LiterateBranchProperty : decorate branch and environments with anything (buildwrapper, properties…) – Agent : Builds Publisher instances from files in the SCM.
  • 29. Jenkins User Conference Europe #jenkinsconf Towards a release • Develop the ecosystem – More plugins integration – Github/Bitbucket/Stash pull request support • Integration with isolation features – Sandbox commands within a container
  • 30. Jenkins User Conference Europe #jenkinsconf Corporate Community Thank You To Our Sponsors Platinum Gold Silver