SlideShare a Scribd company logo
1 of 32
Download to read offline
Scaling up development of a modular code
base
Robert Munteanu, Adobe Systems
Prague, 19-20 October 2017
Robert Munteanu @rombert Prague, 19-20 October 2017
About me
Robert Munteanu @rombert Prague, 19-20 October 2017
Agenda
●
Modular development
●
Source control
●
Build tool and continuous integration
●
(Integrated) development environment
●
Communication
●
Demo
●
Wrap-up
Robert Munteanu @rombert Prague, 19-20 October 2017
Modular development
Robert Munteanu @rombert Prague, 19-20 October 2017
What is modular development?
Robert Munteanu @rombert Prague, 19-20 October 2017
Modular development vs modular deployment
Robert Munteanu @rombert Prague, 19-20 October 2017
Modular development vs modular deployment
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control: to split or not to split
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control: single repository
$ svn checkout https://svn.apache.org↵
/repos/asf/sling/trunk sling
# change, commit atomically
$ svn ls https://svn.apache.org↵
/repos/asf/sling/tags | wc -l
1478
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control: multiple repositories
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control: repo (Android)
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
<remote name="origin" fetch=".." />
<default revision="master" remote="origin" />
<project path="api" name="api.git"/>
<project path="impl" name="impl.git"/>
</manifest>
$ repo init -u git@github.com:org/manifest.git
$ repo sync
$ repo start new-feature api/ impl/
$ repo forall -c 'git push ...'
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control: repo automation
#!/bin/sh
echo '<?xml version="1.0" encoding="UTF-8"?>'
echo "<!-- generated by $(basename $0) -->"
echo '<manifest>'
echo ' <remote name="origin" fetch="."/>'
echo ' <default revision="master" remote="origin"/>'
for repo in $(curl -s https://api.github.com/users/rombert/repos?sort=updated 
| jq '.[] | .name | match ("TMP-sling-org.apache.sling.*") | .string' | tr
-d '"' | sort); do
name=${repo#TMP-sling-}
echo " <project path="${name}" name="${repo}.git"/>"
done
echo '</manifest>'
Robert Munteanu @rombert Prague, 19-20 October 2017
Source control: migrating to individual repositories
$ git clone https://github.com/apache/sling.git sling
$ git clone sling org.apache.sling.engine
$ cd org.apache.sling.engine
$ git filter-branch --subdirectory-filter bundles/engine
$ git for-each-ref --format="%(refname)" refs/original/
| xargs -n1 git update-ref -d
$ ls # only data in bundles/engine
Robert Munteanu @rombert Prague, 19-20 October 2017
Build tool and continuous
integration
Robert Munteanu @rombert Prague, 19-20 October 2017
Build tool: the aggregate build
Robert Munteanu @rombert Prague, 19-20 October 2017
Build tool: repository
Robert Munteanu @rombert Prague, 19-20 October 2017
Build tool: automating creation of module builds
def modules = [
[
location: 'bundles/api'
],
[
location: 'bundles/auth/core'
] /* many others skipped */
]
modules.each { module ->
jdks.each { jdkKey ->
mavenJob(jobName(module.location, jdkKey)) {
logRotator {
numToKeep(15)
}
triggers {
snapshotDependencies(true)
scm('H/15 * * * *')
}
goals("-U clean deploy")
/* other instructions skipped */
}
}
}
Robert Munteanu @rombert Prague, 19-20 October 2017
(Integrated) development
environment
Robert Munteanu @rombert Prague, 19-20 October 2017
IDE: provisioning and project discovery
Robert Munteanu @rombert Prague, 19-20 October 2017
IDE: shared preferences
<!-- package your preferences as a Maven artifact --->
<dependency>
<groupId>org.acme.tooling</groupId>
<artifactId>acme-eclipse-formatter</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>eclipse-formatter</packaging>
</dependency>
<!-- configure the plugin in your parent pom -->
<plugins>
<plugin>
<groupId>ro.lmn.maven.rip</groupId>
<artifactId>eclipse-preferences-maven-plugin</artifactId>
<version>0.0.2</version>
<extensions>true</extensions>
<configuration>
<repository>
<kind>jira</kind>
<url>https://issues.apache.org/jira</url>
</repository>
<commitTemplate>${task.key} - ${task.description}nn</commitTemplate>
</configuration>
</plugin>
</plugins>
Robert Munteanu @rombert Prague, 19-20 October 2017
Communication
Robert Munteanu @rombert Prague, 19-20 October 2017
Communication: single channel
Robert Munteanu @rombert Prague, 19-20 October 2017
Communication: multiple channels
Robert Munteanu @rombert Prague, 19-20 October 2017
Communication: a split?
Robert Munteanu @rombert Prague, 19-20 October 2017
Demo
Robert Munteanu @rombert Prague, 19-20 October 2017
Wrap-up
Robert Munteanu @rombert Prague, 19-20 October 2017
Modular development - Sling
Robert Munteanu @rombert Prague, 19-20 October 2017
The big picture
Robert Munteanu @rombert Prague, 19-20 October 2017
The big picture
Robert Munteanu @rombert Prague, 19-20 October 2017
Supporting tools
●
https://github.com/jenkinsci/job-dsl-plugin
●
https://gerrit.googlesource.com/git-repo/
●
https://projects.eclipse.org/projects/tools.oomph
Robert Munteanu @rombert Prague, 19-20 October 2017
Examples of modular development
●
https://svn.apache.org/repos/asf/sling/trunk/tooling/jenkins/
●
https://github.com/wcm-io-devops/eclipse-maven-plugin
●
https://github.com/bdelacretaz/docker-jenkins-dsl-ready
●
https://wiki.openstack.org/wiki/MailingListEtiquette

More Related Content

Similar to Scaling up development of a modular code base

Similar to Scaling up development of a modular code base (20)

DevDay 2018: Ulrich Deiters - Offline First - kein Netz, kein Fehler, zufried...
DevDay 2018: Ulrich Deiters - Offline First - kein Netz, kein Fehler, zufried...DevDay 2018: Ulrich Deiters - Offline First - kein Netz, kein Fehler, zufried...
DevDay 2018: Ulrich Deiters - Offline First - kein Netz, kein Fehler, zufried...
 
Social Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open SourceSocial Connections 14 - ICS Integration with Node-RED and Open Source
Social Connections 14 - ICS Integration with Node-RED and Open Source
 
ICS INtegration with Node-RED and Open Source
ICS INtegration with Node-RED and Open SourceICS INtegration with Node-RED and Open Source
ICS INtegration with Node-RED and Open Source
 
apidays LIVE Helsinki & North - 20 minutes to build a serverless COVID-19 RES...
apidays LIVE Helsinki & North - 20 minutes to build a serverless COVID-19 RES...apidays LIVE Helsinki & North - 20 minutes to build a serverless COVID-19 RES...
apidays LIVE Helsinki & North - 20 minutes to build a serverless COVID-19 RES...
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Prepara tu entorno para Magento 2
Prepara tu entorno para Magento 2Prepara tu entorno para Magento 2
Prepara tu entorno para Magento 2
 
Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016Enabling Microservice @ Orbitz - GOTO Chicago 2016
Enabling Microservice @ Orbitz - GOTO Chicago 2016
 
Php 7.x 8.0 and hhvm and
Php 7.x 8.0 and hhvm and Php 7.x 8.0 and hhvm and
Php 7.x 8.0 and hhvm and
 
Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017Front End Development for Back End Developers - vJUG24 2017
Front End Development for Back End Developers - vJUG24 2017
 
Virtuoso RDF Triple Store Analysis Benchmark & mapping tools RDF / OO
Virtuoso RDF Triple Store Analysis Benchmark & mapping tools RDF / OOVirtuoso RDF Triple Store Analysis Benchmark & mapping tools RDF / OO
Virtuoso RDF Triple Store Analysis Benchmark & mapping tools RDF / OO
 
ChainerUI v0.2, v0.3
ChainerUI v0.2, v0.3ChainerUI v0.2, v0.3
ChainerUI v0.2, v0.3
 
Workshop: Introduction to Web Components & Polymer
Workshop: Introduction to Web Components & Polymer Workshop: Introduction to Web Components & Polymer
Workshop: Introduction to Web Components & Polymer
 
Streaming Visualization
Streaming VisualizationStreaming Visualization
Streaming Visualization
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
Git - the stupid content tracker
Git - the stupid content trackerGit - the stupid content tracker
Git - the stupid content tracker
 
Modern Perl Web Development with Dancer
Modern Perl Web Development with DancerModern Perl Web Development with Dancer
Modern Perl Web Development with Dancer
 
Building cognitive apps with Watson Work Services
Building cognitive apps with Watson Work ServicesBuilding cognitive apps with Watson Work Services
Building cognitive apps with Watson Work Services
 
Using Ruby in Android Development
Using Ruby in Android DevelopmentUsing Ruby in Android Development
Using Ruby in Android Development
 
Hacking the browser with puppeteer sharp .NET conf AR 2018
Hacking the browser with puppeteer sharp .NET conf AR 2018Hacking the browser with puppeteer sharp .NET conf AR 2018
Hacking the browser with puppeteer sharp .NET conf AR 2018
 

More from Robert Munteanu

More from Robert Munteanu (20)

Secure by Default Web Applications
Secure by Default Web ApplicationsSecure by Default Web Applications
Secure by Default Web Applications
 
Sling Applications - A DevOps perspective
Sling Applications - A DevOps perspectiveSling Applications - A DevOps perspective
Sling Applications - A DevOps perspective
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
 
Escape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud ServiceEscape the defaults - Configure Sling like AEM as a Cloud Service
Escape the defaults - Configure Sling like AEM as a Cloud Service
 
Crash course in Kubernetes monitoring
Crash course in Kubernetes monitoringCrash course in Kubernetes monitoring
Crash course in Kubernetes monitoring
 
Java agents for fun and (not so much) profit
Java agents for fun and (not so much) profitJava agents for fun and (not so much) profit
Java agents for fun and (not so much) profit
 
Will it blend? Java agents and OSGi
Will it blend? Java agents and OSGiWill it blend? Java agents and OSGi
Will it blend? Java agents and OSGi
 
Cloud-native legacy applications
Cloud-native legacy applicationsCloud-native legacy applications
Cloud-native legacy applications
 
Cloud-Native Sling
Cloud-Native SlingCloud-Native Sling
Cloud-Native Sling
 
From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...From Monolith to Modules - breaking apart a one size fits all product into mo...
From Monolith to Modules - breaking apart a one size fits all product into mo...
 
What's new in the Sling developer tooling?
What's new in the Sling developer tooling?What's new in the Sling developer tooling?
What's new in the Sling developer tooling?
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Scaling up development of a modular code base
Scaling up development of a modular code baseScaling up development of a modular code base
Scaling up development of a modular code base
 
Zero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using DockerZero downtime deployments for Sling application using Docker
Zero downtime deployments for Sling application using Docker
 
Do you really want to go fully micro?
Do you really want to go fully micro?Do you really want to go fully micro?
Do you really want to go fully micro?
 
Effective web application development with Apache Sling
Effective web application development with Apache SlingEffective web application development with Apache Sling
Effective web application development with Apache Sling
 
Of microservices and microservices
Of microservices and microservicesOf microservices and microservices
Of microservices and microservices
 
Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)Slide IDE Tooling (adaptTo 2016)
Slide IDE Tooling (adaptTo 2016)
 
Secure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache SlingSecure by Default Web Applications with Apache Sling
Secure by Default Web Applications with Apache Sling
 
Apache Sling as a Microservices Gateway
Apache Sling as a Microservices GatewayApache Sling as a Microservices Gateway
Apache Sling as a Microservices Gateway
 

Recently uploaded

TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
anilsa9823
 

Recently uploaded (20)

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
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
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
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
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 🔝✔️✔️
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 

Scaling up development of a modular code base

  • 1. Scaling up development of a modular code base Robert Munteanu, Adobe Systems Prague, 19-20 October 2017
  • 2. Robert Munteanu @rombert Prague, 19-20 October 2017 About me
  • 3. Robert Munteanu @rombert Prague, 19-20 October 2017 Agenda ● Modular development ● Source control ● Build tool and continuous integration ● (Integrated) development environment ● Communication ● Demo ● Wrap-up
  • 4. Robert Munteanu @rombert Prague, 19-20 October 2017 Modular development
  • 5. Robert Munteanu @rombert Prague, 19-20 October 2017 What is modular development?
  • 6. Robert Munteanu @rombert Prague, 19-20 October 2017 Modular development vs modular deployment
  • 7. Robert Munteanu @rombert Prague, 19-20 October 2017 Modular development vs modular deployment
  • 8. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control
  • 9. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control: to split or not to split
  • 10. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control: single repository $ svn checkout https://svn.apache.org↵ /repos/asf/sling/trunk sling # change, commit atomically $ svn ls https://svn.apache.org↵ /repos/asf/sling/tags | wc -l 1478
  • 11. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control: multiple repositories
  • 12. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control: repo (Android) <?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="origin" fetch=".." /> <default revision="master" remote="origin" /> <project path="api" name="api.git"/> <project path="impl" name="impl.git"/> </manifest> $ repo init -u git@github.com:org/manifest.git $ repo sync $ repo start new-feature api/ impl/ $ repo forall -c 'git push ...'
  • 13. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control: repo automation #!/bin/sh echo '<?xml version="1.0" encoding="UTF-8"?>' echo "<!-- generated by $(basename $0) -->" echo '<manifest>' echo ' <remote name="origin" fetch="."/>' echo ' <default revision="master" remote="origin"/>' for repo in $(curl -s https://api.github.com/users/rombert/repos?sort=updated | jq '.[] | .name | match ("TMP-sling-org.apache.sling.*") | .string' | tr -d '"' | sort); do name=${repo#TMP-sling-} echo " <project path="${name}" name="${repo}.git"/>" done echo '</manifest>'
  • 14. Robert Munteanu @rombert Prague, 19-20 October 2017 Source control: migrating to individual repositories $ git clone https://github.com/apache/sling.git sling $ git clone sling org.apache.sling.engine $ cd org.apache.sling.engine $ git filter-branch --subdirectory-filter bundles/engine $ git for-each-ref --format="%(refname)" refs/original/ | xargs -n1 git update-ref -d $ ls # only data in bundles/engine
  • 15. Robert Munteanu @rombert Prague, 19-20 October 2017 Build tool and continuous integration
  • 16. Robert Munteanu @rombert Prague, 19-20 October 2017 Build tool: the aggregate build
  • 17. Robert Munteanu @rombert Prague, 19-20 October 2017 Build tool: repository
  • 18. Robert Munteanu @rombert Prague, 19-20 October 2017 Build tool: automating creation of module builds def modules = [ [ location: 'bundles/api' ], [ location: 'bundles/auth/core' ] /* many others skipped */ ] modules.each { module -> jdks.each { jdkKey -> mavenJob(jobName(module.location, jdkKey)) { logRotator { numToKeep(15) } triggers { snapshotDependencies(true) scm('H/15 * * * *') } goals("-U clean deploy") /* other instructions skipped */ } } }
  • 19. Robert Munteanu @rombert Prague, 19-20 October 2017 (Integrated) development environment
  • 20. Robert Munteanu @rombert Prague, 19-20 October 2017 IDE: provisioning and project discovery
  • 21. Robert Munteanu @rombert Prague, 19-20 October 2017 IDE: shared preferences <!-- package your preferences as a Maven artifact ---> <dependency> <groupId>org.acme.tooling</groupId> <artifactId>acme-eclipse-formatter</artifactId> <version>1.0-SNAPSHOT</version> <packaging>eclipse-formatter</packaging> </dependency> <!-- configure the plugin in your parent pom --> <plugins> <plugin> <groupId>ro.lmn.maven.rip</groupId> <artifactId>eclipse-preferences-maven-plugin</artifactId> <version>0.0.2</version> <extensions>true</extensions> <configuration> <repository> <kind>jira</kind> <url>https://issues.apache.org/jira</url> </repository> <commitTemplate>${task.key} - ${task.description}nn</commitTemplate> </configuration> </plugin> </plugins>
  • 22. Robert Munteanu @rombert Prague, 19-20 October 2017 Communication
  • 23. Robert Munteanu @rombert Prague, 19-20 October 2017 Communication: single channel
  • 24. Robert Munteanu @rombert Prague, 19-20 October 2017 Communication: multiple channels
  • 25. Robert Munteanu @rombert Prague, 19-20 October 2017 Communication: a split?
  • 26. Robert Munteanu @rombert Prague, 19-20 October 2017 Demo
  • 27. Robert Munteanu @rombert Prague, 19-20 October 2017 Wrap-up
  • 28. Robert Munteanu @rombert Prague, 19-20 October 2017 Modular development - Sling
  • 29. Robert Munteanu @rombert Prague, 19-20 October 2017 The big picture
  • 30. Robert Munteanu @rombert Prague, 19-20 October 2017 The big picture
  • 31. Robert Munteanu @rombert Prague, 19-20 October 2017 Supporting tools ● https://github.com/jenkinsci/job-dsl-plugin ● https://gerrit.googlesource.com/git-repo/ ● https://projects.eclipse.org/projects/tools.oomph
  • 32. Robert Munteanu @rombert Prague, 19-20 October 2017 Examples of modular development ● https://svn.apache.org/repos/asf/sling/trunk/tooling/jenkins/ ● https://github.com/wcm-io-devops/eclipse-maven-plugin ● https://github.com/bdelacretaz/docker-jenkins-dsl-ready ● https://wiki.openstack.org/wiki/MailingListEtiquette