SlideShare una empresa de Scribd logo
1 de 16
Descargar para leer sin conexión
Continuous Integration For
Real: The Perforce Java
Platform
Hamish Reid
Perforce Software Inc.
OVERVIEW

   •  What do we mean by…
      •  Agile?
      •  Continuous Integration?
   •  Product line highlights:
      •    P4Eclipse + Mylin + MergeQuest
      •    P4Java
      •    P4Ant
      •    P4Maven
      •    (Hudson Perforce Plugin)
      •    (P4Java, P4D)
   •  The Perforce Java Team CI Workflow
WHAT DO WE MEAN BY “AGILE”?

    •  Adaptive processes and workflows:
       •  Feedback- and reality-driven
       •  Flexible goals
    •  Continuous processes and workflows:
       •    No surprises!
       •    Small increments in planning
       •    Small increments in delivery
       •    Small increments in effort
       •    There’s always some version of the final product
    •  Examples:
       •  Scrum, XP, Kanban
WHAT DOES “CONTINUOUS INTEGRATION” MEAN?

   •  The heart of agile processes…
                          (…but not just agile processes).
   •  Martin Fowler’s essentials:
      •  Integration is a non-event.
      •  Any individual developer's work is only a few hours
         away from a shared project state.
      •  Individual work can be integrated back into that state in
         minutes.
      •  Any integration errors are found rapidly and can be fixed
         rapidly.
   •  Trades up-front workflow and infrastructure effort for
      integration simplicity.
   •  Not for every product or workflow.
CONTINUOUS INTEGRATION ELEMENTS (1)

    •  Martin Fowler:
          •    Configuration management
          •    Build and test automation
          •    Self-testing
          •    Frequent commits
          •    Build and test on commit
          •    Fast build / test cycles
          •    Test in production environment clone
          •    Easy to get latest build artifacts
          •    Easy to get latest status
          •    Automated deployment
CONTINUOUS INTEGRATION ELEMENTS (2)

    •  Additionally, from our own experience:
       •  Integration into issues tracker system
       •  Easy / safe / cheap branching…
               …and integrate / merge / resolve cycle
       •  Low burden for developers:
            •  Integration into IDE’s and other common tools
            •  Visualization
            •  “Culturally appropriate”
OUR JAVA TEAM WORKFLOW

   •  We “eat our own dog food”…
               …but we also “eat our customers’ dog food”
   •  Heavy emphasis on continuous integration
   •  (Very) test-driven development process
   •  Jobs-driven process
   •  Branch-centric process:
      •  Dev / shared (team) / main / release
   •  Two modes:
      •  Eclipse-centric development and dev testing
      •  Hudson-centric automation for shared branches
   •  Open Source / off-the-shelf solutions:
      •  Eclipse, Mylin, Junit, Maven, Ant, Hudson, Cruise
         control
KEY ELEMENTS IN OUR CI WORKFLOW

   •    Eclipse + P4Eclipse
   •    P4Eclipse + MergeQuest + Mylin + more…
   •    Hudson + Perforce plugin
   •    Maven + P4Maven
   •    Ant + P4Ant
   •    P4Java
   •    (P4D)
ECLIPSE – THE DEVELOPER'S COMMAND CENTER
ECLIPSE + P4ECLIPSE

    •  All code work done in Eclipse
    •  P4Eclipse supplies the Perforce functionality:
       •    Import as project
       •    Add / edit / delete files
       •    Submit / changelist management
       •    Refactoring
       •    P4Grep, diffs, resolves, branches, merges
    •  All dev testing done using Junit:
       •  Suite-based
       •  Right-click from Eclipse
    •  Mylin – the task master
    •  MergeQuest, branch graph, timelapse…
    •  Mavenized development where needed
HUDSON + PERFORCE

   •  Hudson + P4 extensions central to Perforce Java
      team workflow:
      •  Used to setup builds and tests
      •  Used to store results and raw report data back to SCM
      •  Triggered on successful merges and codeline changes
   •  Uses existing third-party Open Source plugin
      •  Perforce will help develop and maintain
      •  Currently p4 command line based
   •  Typically configured through Hudson control panel
   •  Works with Jenkins, too, of course…
MAVEN + P4MAVEN

   •  Maven used extensively:
      •    Distribute shared team builds
      •    Cache external dependencies
      •    Off-the-shelf build lifecycle support
      •    Tie-ins to Eclipse
      •    Often run from Hudson
   •  P4Maven:
      •    Perforce-developed and supported
      •    P4Java-based
      •    Released 11.1
      •    Full Maven “scm” functionality
      •    MOJO-based extensions for jobs, etc.
      •    Non-core plugin
ANT + P4ANT

    •  P4Java-based
    •  P4Ant targets:
       •  The usual suspects, plus…
       •  …things like shelve / unshelve, fix, job-related tasks,
          etc.
    •  Perforce usage:
       •  Test setups
       •  Builds
       •  Distributions
    •  Example:
       <taskdef resource="com/perforce/ant/tasks/P4Tasks.properties" />
       …
       <target name="p4tasktest" description="Perforce task test">
           <p4jsubmit port="eng-p4java-vm:20101" user="p4jtestuser"
             passwd="p4jtestuser" client="p4TestUserWS" changelist="3391" />
       </target>
P4JAVA

   •    Makes all-Java implementations possible
   •    Native protocol implementation
   •    Clear object model
   •    Underpins:
         •  Nearly all our Java-related CI platform
         •  Perforce Web Services Platform (P4WSP)
LOOKING BACK…

   •  Tools integration (“it’s the tools, stupid!”):
       •  P4Eclipse + Mylin
       •  P4Maven, P4Ant, Hudson Plugin
   •  Visualization:
       •  MergeQuest, P4Eclipse, Timelapse, Branch Graph
       •  Hudson + P4Hudson
   •  Immediacy:
       •  P4Eclipse, Hudson
   •  Flexibility:
       •  …all that and more.
SUMMARY

   •  The Perforce Java product line now forms a platform
   •  Key components:
      •    P4Eclipse
      •    P4Maven
      •    P4Ant
      •    P4Hudson
      •    (P4D, P4Java)
   •  It makes agile continuous integration so easy…
          …that even the Perforce Java team can do it.

Más contenido relacionado

La actualidad más candente

Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
Hannes Lowette
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
Steve Povilaitis
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Matthew Cobby
 
Deployment of DevOps Environment with CA Solutions
Deployment of DevOps Environment with CA SolutionsDeployment of DevOps Environment with CA Solutions
Deployment of DevOps Environment with CA Solutions
Nic Swart
 

La actualidad más candente (20)

Continuous delivery with open source tools
Continuous delivery with open source toolsContinuous delivery with open source tools
Continuous delivery with open source tools
 
Best practices for Continuous Deployment with Drupal - DrupalCon Latin Améric...
Best practices for Continuous Deployment with Drupal - DrupalCon Latin Améric...Best practices for Continuous Deployment with Drupal - DrupalCon Latin Améric...
Best practices for Continuous Deployment with Drupal - DrupalCon Latin Améric...
 
Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®Build software like a bag of marbles, not a castle of LEGO®
Build software like a bag of marbles, not a castle of LEGO®
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
DevOps principles and practices - accelerate flow
DevOps principles and practices - accelerate flowDevOps principles and practices - accelerate flow
DevOps principles and practices - accelerate flow
 
Getting Started With Jenkins And Drupal
Getting Started With Jenkins And DrupalGetting Started With Jenkins And Drupal
Getting Started With Jenkins And Drupal
 
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source ToolsTYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
TYPO3 Camp Stuttgart 2015 - Continuous Delivery with Open Source Tools
 
Take your CFML Legacy Apps to Modernization
Take your CFML Legacy Apps to ModernizationTake your CFML Legacy Apps to Modernization
Take your CFML Legacy Apps to Modernization
 
Continuous Integration at Mollie
Continuous Integration at MollieContinuous Integration at Mollie
Continuous Integration at Mollie
 
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
 
5 Best Practices DevOps Culture
5 Best Practices DevOps Culture5 Best Practices DevOps Culture
5 Best Practices DevOps Culture
 
Continuous testing
Continuous testingContinuous testing
Continuous testing
 
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
Practical Continuous Deployment - Atlassian - London AUG 18 Feb 2014
 
Optimizing deployment & dev ops with tfs 2013
Optimizing deployment & dev ops with tfs 2013Optimizing deployment & dev ops with tfs 2013
Optimizing deployment & dev ops with tfs 2013
 
Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)
 
Implementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using KubelessImplementing FaaS on Kubernetes using Kubeless
Implementing FaaS on Kubernetes using Kubeless
 
Deployment of DevOps Environment with CA Solutions
Deployment of DevOps Environment with CA SolutionsDeployment of DevOps Environment with CA Solutions
Deployment of DevOps Environment with CA Solutions
 
Lap around ALM with Visual Studio and TFS 2013
Lap around ALM with Visual Studio and TFS 2013Lap around ALM with Visual Studio and TFS 2013
Lap around ALM with Visual Studio and TFS 2013
 
PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...
PuppetConf 2016: Successful Puppet Implementation in Large Organizations – Ja...
 

Destacado

Change Management - Ansatz von Plaut
Change Management - Ansatz von PlautChange Management - Ansatz von Plaut
Change Management - Ansatz von Plaut
Plaut Consulting
 
BLM Webradiomonitor 2012, Goldmedia
BLM Webradiomonitor 2012, GoldmediaBLM Webradiomonitor 2012, Goldmedia
BLM Webradiomonitor 2012, Goldmedia
Goldmedia Group
 
Creating the Agile IT Organisation
Creating the Agile IT OrganisationCreating the Agile IT Organisation
Creating the Agile IT Organisation
Formicio
 
BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....
BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....
BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....
BPM&O GmbH
 
change factory: Change Management Begleitung
change factory: Change Management Begleitungchange factory: Change Management Begleitung
change factory: Change Management Begleitung
Change Factory
 

Destacado (20)

Vorgehensmodell
VorgehensmodellVorgehensmodell
Vorgehensmodell
 
Serena Change- & Release-Management
Serena Change- & Release-ManagementSerena Change- & Release-Management
Serena Change- & Release-Management
 
Change Management - Ansatz von Plaut
Change Management - Ansatz von PlautChange Management - Ansatz von Plaut
Change Management - Ansatz von Plaut
 
Neues Denken in Sales und Marketing - Tag 1
Neues Denken in Sales und Marketing - Tag 1Neues Denken in Sales und Marketing - Tag 1
Neues Denken in Sales und Marketing - Tag 1
 
Change Management für erfolgreiches E-Publishing in Verlagen
Change Management für erfolgreiches E-Publishing in VerlagenChange Management für erfolgreiches E-Publishing in Verlagen
Change Management für erfolgreiches E-Publishing in Verlagen
 
Concepts methodes
Concepts methodesConcepts methodes
Concepts methodes
 
BLM Webradiomonitor 2012, Goldmedia
BLM Webradiomonitor 2012, GoldmediaBLM Webradiomonitor 2012, Goldmedia
BLM Webradiomonitor 2012, Goldmedia
 
23 organisationsentwicklung 2015
23 organisationsentwicklung 201523 organisationsentwicklung 2015
23 organisationsentwicklung 2015
 
Digicomp change management_2 0_m_schweizer_v3_150317
Digicomp change management_2 0_m_schweizer_v3_150317Digicomp change management_2 0_m_schweizer_v3_150317
Digicomp change management_2 0_m_schweizer_v3_150317
 
The future of IT
The future of ITThe future of IT
The future of IT
 
20160813 getting real – impact of ux
20160813 getting real – impact of ux20160813 getting real – impact of ux
20160813 getting real – impact of ux
 
Creating the Agile IT Organisation
Creating the Agile IT OrganisationCreating the Agile IT Organisation
Creating the Agile IT Organisation
 
BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....
BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....
BPM-Club: Vortrag "Prozessmanagement bei der Hamburt Port Authority" - 11.05....
 
141212 broschüre change begleitung für hp de
141212 broschüre change begleitung für hp de141212 broschüre change begleitung für hp de
141212 broschüre change begleitung für hp de
 
Referat: Change Management 2.0
Referat: Change Management 2.0Referat: Change Management 2.0
Referat: Change Management 2.0
 
change factory: Change Management Begleitung
change factory: Change Management Begleitungchange factory: Change Management Begleitung
change factory: Change Management Begleitung
 
Schindler 2500 FR
Schindler 2500 FRSchindler 2500 FR
Schindler 2500 FR
 
Vorlesung - Cloud Infrastrukturen - Einleitung | anynines
Vorlesung - Cloud Infrastrukturen - Einleitung | anyninesVorlesung - Cloud Infrastrukturen - Einleitung | anynines
Vorlesung - Cloud Infrastrukturen - Einleitung | anynines
 
eCl@ss im Web: Mehr Kunden und bessere Stammdaten für jeden eCl@ss-Anwender
eCl@ss im Web: Mehr Kunden und bessere Stammdaten für jeden eCl@ss-AnwendereCl@ss im Web: Mehr Kunden und bessere Stammdaten für jeden eCl@ss-Anwender
eCl@ss im Web: Mehr Kunden und bessere Stammdaten für jeden eCl@ss-Anwender
 
DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?DevOps: Revolution im IT Betrieb?
DevOps: Revolution im IT Betrieb?
 

Similar a Perforce's Java Platform: Continuous Integration For Real

Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
Idaf_1er
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
Cprime
 

Similar a Perforce's Java Platform: Continuous Integration For Real (20)

Continuous Integration In A PHP World
Continuous Integration In A PHP WorldContinuous Integration In A PHP World
Continuous Integration In A PHP World
 
DevOps tools for winning agility
DevOps tools for winning agilityDevOps tools for winning agility
DevOps tools for winning agility
 
Unified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOpsUnified Deployment: Including the Mainframe in Enterprise DevOps
Unified Deployment: Including the Mainframe in Enterprise DevOps
 
Enterprise PHP
Enterprise PHPEnterprise PHP
Enterprise PHP
 
Devops
DevopsDevops
Devops
 
What we talk about when we talk about DevOps
What we talk about when we talk about DevOpsWhat we talk about when we talk about DevOps
What we talk about when we talk about DevOps
 
The Road to DevOps V3
The Road to DevOps V3The Road to DevOps V3
The Road to DevOps V3
 
Dev ops != Dev+Ops
Dev ops != Dev+OpsDev ops != Dev+Ops
Dev ops != Dev+Ops
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Introduction to devops
Introduction to devopsIntroduction to devops
Introduction to devops
 
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
Wilko Nienhaus - continuous delivery release the right thing, done right, at ...
 
Vagrant for Effective DevOps Culture
Vagrant for Effective DevOps CultureVagrant for Effective DevOps Culture
Vagrant for Effective DevOps Culture
 
Kku2011
Kku2011Kku2011
Kku2011
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
 
AvenDATA and Devops
AvenDATA and DevopsAvenDATA and Devops
AvenDATA and Devops
 
Continuous Development: Supporting a Release Model
Continuous Development: Supporting a Release ModelContinuous Development: Supporting a Release Model
Continuous Development: Supporting a Release Model
 
Full Stack DevOps - Ready To Go
Full Stack DevOps - Ready To GoFull Stack DevOps - Ready To Go
Full Stack DevOps - Ready To Go
 
Continuous feature-development
Continuous feature-developmentContinuous feature-development
Continuous feature-development
 
DCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production ParityDCRUG: Achieving Development-Production Parity
DCRUG: Achieving Development-Production Parity
 
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20
 

Más de Perforce

Más de Perforce (20)

How to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning NeedsHow to Organize Game Developers With Different Planning Needs
How to Organize Game Developers With Different Planning Needs
 
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...Regulatory Traceability:  How to Maintain Compliance, Quality, and Cost Effic...
Regulatory Traceability: How to Maintain Compliance, Quality, and Cost Effic...
 
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...Efficient Security Development and Testing Using Dynamic and Static Code Anal...
Efficient Security Development and Testing Using Dynamic and Static Code Anal...
 
Understanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPsUnderstanding Compliant Workflow Enforcement SOPs
Understanding Compliant Workflow Enforcement SOPs
 
Branching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development ProcessBranching Out: How To Automate Your Development Process
Branching Out: How To Automate Your Development Process
 
How to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOpsHow to Do Code Reviews at Massive Scale For DevOps
How to Do Code Reviews at Massive Scale For DevOps
 
How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog How to Spark Joy In Your Product Backlog
How to Spark Joy In Your Product Backlog
 
Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team Going Remote: Build Up Your Game Dev Team
Going Remote: Build Up Your Game Dev Team
 
Shift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New WorkflowShift to Remote: How to Manage Your New Workflow
Shift to Remote: How to Manage Your New Workflow
 
Hybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated WorldHybrid Development Methodology in a Regulated World
Hybrid Development Methodology in a Regulated World
 
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the EnterpriseBetter, Faster, Easier: How to Make Git Really Work in the Enterprise
Better, Faster, Easier: How to Make Git Really Work in the Enterprise
 
Easier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALMEasier Requirements Management Using Diagrams In Helix ALM
Easier Requirements Management Using Diagrams In Helix ALM
 
How To Master Your Mega Backlog
How To Master Your Mega Backlog How To Master Your Mega Backlog
How To Master Your Mega Backlog
 
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
Achieving Software Safety, Security, and Reliability Part 3: What Does the Fu...
 
How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure How to Scale With Helix Core and Microsoft Azure
How to Scale With Helix Core and Microsoft Azure
 
Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2Achieving Software Safety, Security, and Reliability Part 2
Achieving Software Safety, Security, and Reliability Part 2
 
Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?Should You Break Up With Your Monolith?
Should You Break Up With Your Monolith?
 
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
Achieving Software Safety, Security, and Reliability Part 1: Common Industry ...
 
What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4What's New in Helix ALM 2019.4
What's New in Helix ALM 2019.4
 
Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison Free Yourself From the MS Office Prison
Free Yourself From the MS Office Prison
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Último (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
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
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
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
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 

Perforce's Java Platform: Continuous Integration For Real

  • 1. Continuous Integration For Real: The Perforce Java Platform Hamish Reid Perforce Software Inc.
  • 2. OVERVIEW •  What do we mean by… •  Agile? •  Continuous Integration? •  Product line highlights: •  P4Eclipse + Mylin + MergeQuest •  P4Java •  P4Ant •  P4Maven •  (Hudson Perforce Plugin) •  (P4Java, P4D) •  The Perforce Java Team CI Workflow
  • 3. WHAT DO WE MEAN BY “AGILE”? •  Adaptive processes and workflows: •  Feedback- and reality-driven •  Flexible goals •  Continuous processes and workflows: •  No surprises! •  Small increments in planning •  Small increments in delivery •  Small increments in effort •  There’s always some version of the final product •  Examples: •  Scrum, XP, Kanban
  • 4. WHAT DOES “CONTINUOUS INTEGRATION” MEAN? •  The heart of agile processes… (…but not just agile processes). •  Martin Fowler’s essentials: •  Integration is a non-event. •  Any individual developer's work is only a few hours away from a shared project state. •  Individual work can be integrated back into that state in minutes. •  Any integration errors are found rapidly and can be fixed rapidly. •  Trades up-front workflow and infrastructure effort for integration simplicity. •  Not for every product or workflow.
  • 5. CONTINUOUS INTEGRATION ELEMENTS (1) •  Martin Fowler: •  Configuration management •  Build and test automation •  Self-testing •  Frequent commits •  Build and test on commit •  Fast build / test cycles •  Test in production environment clone •  Easy to get latest build artifacts •  Easy to get latest status •  Automated deployment
  • 6. CONTINUOUS INTEGRATION ELEMENTS (2) •  Additionally, from our own experience: •  Integration into issues tracker system •  Easy / safe / cheap branching… …and integrate / merge / resolve cycle •  Low burden for developers: •  Integration into IDE’s and other common tools •  Visualization •  “Culturally appropriate”
  • 7. OUR JAVA TEAM WORKFLOW •  We “eat our own dog food”… …but we also “eat our customers’ dog food” •  Heavy emphasis on continuous integration •  (Very) test-driven development process •  Jobs-driven process •  Branch-centric process: •  Dev / shared (team) / main / release •  Two modes: •  Eclipse-centric development and dev testing •  Hudson-centric automation for shared branches •  Open Source / off-the-shelf solutions: •  Eclipse, Mylin, Junit, Maven, Ant, Hudson, Cruise control
  • 8. KEY ELEMENTS IN OUR CI WORKFLOW •  Eclipse + P4Eclipse •  P4Eclipse + MergeQuest + Mylin + more… •  Hudson + Perforce plugin •  Maven + P4Maven •  Ant + P4Ant •  P4Java •  (P4D)
  • 9. ECLIPSE – THE DEVELOPER'S COMMAND CENTER
  • 10. ECLIPSE + P4ECLIPSE •  All code work done in Eclipse •  P4Eclipse supplies the Perforce functionality: •  Import as project •  Add / edit / delete files •  Submit / changelist management •  Refactoring •  P4Grep, diffs, resolves, branches, merges •  All dev testing done using Junit: •  Suite-based •  Right-click from Eclipse •  Mylin – the task master •  MergeQuest, branch graph, timelapse… •  Mavenized development where needed
  • 11. HUDSON + PERFORCE •  Hudson + P4 extensions central to Perforce Java team workflow: •  Used to setup builds and tests •  Used to store results and raw report data back to SCM •  Triggered on successful merges and codeline changes •  Uses existing third-party Open Source plugin •  Perforce will help develop and maintain •  Currently p4 command line based •  Typically configured through Hudson control panel •  Works with Jenkins, too, of course…
  • 12. MAVEN + P4MAVEN •  Maven used extensively: •  Distribute shared team builds •  Cache external dependencies •  Off-the-shelf build lifecycle support •  Tie-ins to Eclipse •  Often run from Hudson •  P4Maven: •  Perforce-developed and supported •  P4Java-based •  Released 11.1 •  Full Maven “scm” functionality •  MOJO-based extensions for jobs, etc. •  Non-core plugin
  • 13. ANT + P4ANT •  P4Java-based •  P4Ant targets: •  The usual suspects, plus… •  …things like shelve / unshelve, fix, job-related tasks, etc. •  Perforce usage: •  Test setups •  Builds •  Distributions •  Example: <taskdef resource="com/perforce/ant/tasks/P4Tasks.properties" /> … <target name="p4tasktest" description="Perforce task test"> <p4jsubmit port="eng-p4java-vm:20101" user="p4jtestuser" passwd="p4jtestuser" client="p4TestUserWS" changelist="3391" /> </target>
  • 14. P4JAVA •  Makes all-Java implementations possible •  Native protocol implementation •  Clear object model •  Underpins: •  Nearly all our Java-related CI platform •  Perforce Web Services Platform (P4WSP)
  • 15. LOOKING BACK… •  Tools integration (“it’s the tools, stupid!”): •  P4Eclipse + Mylin •  P4Maven, P4Ant, Hudson Plugin •  Visualization: •  MergeQuest, P4Eclipse, Timelapse, Branch Graph •  Hudson + P4Hudson •  Immediacy: •  P4Eclipse, Hudson •  Flexibility: •  …all that and more.
  • 16. SUMMARY •  The Perforce Java product line now forms a platform •  Key components: •  P4Eclipse •  P4Maven •  P4Ant •  P4Hudson •  (P4D, P4Java) •  It makes agile continuous integration so easy… …that even the Perforce Java team can do it.