SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Rajesh Raheja
Development Director
Oracle Workflow & Messaging
Oracle Corporation
ATG Standalone
Continuous Integration
Quality Build Process
An important part of any software development
process is getting reliable builds of the software.

- Martin Fowler, Chief Scientist, ThoughtWorks
What is Continuous Integration?

 A Fully Automated, Reproducible Build Process
 Runs many times a day – as often as needed
 Available to run on-demand in a single command
 Built from scratch from source control (ARCS)
 Includes Unit Testing and Code Coverage
 Automated Source Code Review and Quality Analysis
 Deliverables include latest distribution e.g. jar, ear
 Successful compilation AND testing I.e. not a build
  “attempt”, but a build that works!
The Benefits
 Reduced Time to Market
    –   Cuts testing time due to earlier detection of potential issues
    –   Significantly reduces manual source code review efforts
 Improved Product Quality
    –   Reduces bugs by uncovering integration issues early on
    –   Continuous testing enforces code quality
    –   Source code analysis enforces best programming practices
    –   Improved Reliability, Maintainability, Testability, Reusability
 Increased Developer Productivity
    –   Automated source analysis reduces manual review efforts
    –   Developers can focus on what needs to be fixed
    –   Developers can gain unique perspective on best
        programming practices and industry-standard patterns
The Build Process

Setup
Compile
Test
Code Coverage
Source Code Analysis
Publish Reports and Javadoc
Build Process: Setup

 Checks Build Mode and JDK
    –   Supported Build Modes are iAS and DB
    –   Supported JDK: 1.1.8 (may drop), 1.3 and 1.4
    –   Classpath uses iAS 1.0.2.2 or 9.0.4 home based on JDK
 Cleans build area and creates directory structure
 Copies any dependent FND libraries e.g. fndctx.jar
 Checks out latest source code from RCS
 Ignores file patterns specified in build.excludes
 Can check out for a given release label if needed
 Performs iAS or DB specific tasks
    –   E.g. Copy the appropriate Workflow Context factories
Build Process: Compile

 Instruments source code for code coverage
     –   Original source code backed up to ./prof-bak
     –   Generates BasicBlocks file containing source information
 Compiles all source code
     –   For Workflow, following modules are compiled:
          Workflow Engine
          Workflow Configuration Assistant
          XML Gateway Engine
          XML Gateway Message Designer
 Build all the jar, war and ear files
     –   Delivers a single workflow.jar along with other files
Build Process: Test

 Checks out test source code into build area
    –   Unit tests copied from $psa/java/ut
    –   Test data and RTs copied from $psa/test
 Compiles the test source code
 Sets the environment needed for testing
    –   Sets the required environment variables
    –   Puts data directory in the classpath for loading test data
    –   Puts junit.jar in the classpath
 Runs all (or specified) Unit Tests
 Run any additional RTs (manually if needed)
 Produces the profile files for code coverage
Build Process: Code Coverage

 Reads all generated profile files
    –   Initial profile files automatically generated from Unit Tests
    –   More profile files can be generated by running RTs
 Generates code coverage by module
    –   Compares profile against BasicBlocks generated file
    –   Groups by modules defined in the ProfileGroups file
    –   Ignores all blocks mentioned in Infeasible file
 Generates marked up source html files
    –   Indicating non-covered and heavy-hit blocks
 Restores all original source code from backup
    –   Unless of course you need to re-run after RTs
Build Process: Source Analysis

JavaNCSS
  –   Analyzes Complexity of Source Code
       Max Non-Commented Source Statements
       Max Cyclomatic Complexity (loops, conditions)
       Max Classes per Package and Methods Per
        Class
       Min Javadoc Per Method
  –   Helps Refactor code to reduce complexity
       Improve Maintainability
       Reduce bugs
Build Process: Source Analysis

 JDepend
    –   Provides Dependency and Stability Inference
    –   Analyzes Cyclical References between classes
    –   Helps in Refactoring code for Maintainability
 GSCC
    –   Runs GSCC checks per ARU guidelines
    –   Some GSCC checks not applicable in Standalone mode
 Memory Leak Checker (ATG Utility)
    –   Identifies potential memory leaks by smart parsing
    –   Very basic, may not be applicable for J2EE code
Build Process: Source Analysis
Format
  –   Formats source code to industry best-practice
  –   Helps normalize code by various developers
  –   Enforce corporate standards e.g. Oracle headers
      boilerplate in every file with the correct year e.g.
      Copyright © 2003 Oracle. All rights reserved.
  –   Can auto-generate Javadoc comments
  –   Saves developer time and effort
  –   Download Jalopy for JDeveloper and use profile
      file from http://www-apps/wf/wfjalopy.xml
Build Process: Source Analysis
 CheckStyle
    –   Checks conformance to industry best-practices
    –   Significantly reduces developer time and effort for manual,
        tedious code review
    –   Helps learn industry standard best programming practices
    –   Helps in Reusability and Maintainability
    –   Most non-compliances can be fixed by Jalopy
 DocCheck
    –   Checks for non-compliance of Javadoc standards
    –   Checks missing comments at various levels, saving time
    –   Suggests the comments for self-evident methods
    –   Provides suggestions that can be cut-n-pasted
    –   Helps in Maintainability
Build Process: Publish Reports

 Generates Javadoc with a PUBLIC scope
 Publishes to public web server
    –   Build Log Files and Test Outputs of FNDLOG
    –   JUnit Results
    –   Code Coverage Analysis
    –   Javadoc and DocCheck Reports
    –   GSCC and MemLeakChecker Output
    –   JavaNCSS and JDepend Reports
    –   Checkstyle Analysis
 Notifies Recipients by Email of Successful Build
 Master build page updated with build information
Build Progress
   Metric                                          WF2.6*              WF3.0**
   Lines of Code (w/o comments)                     53,046               8,294
   Methods                                          4,832                1,093
   Classes                                            525                  96
   Javadoc                                           1,786                 756
   Unit Tests                                         132                  130
   Unit Test Success Rate                          96.97%               96.92%
   Code Coverage (Unit Tests)                      19.17%               48.38%
                          * Applies to Standalone Java Build WF26.185 as of 08.07.2003
                         ** Applies to Standalone Java Build WF30.12 as of 07.25.2003

  Next Steps: OAM and Diagnostics soon to be enabled for continuous builds.
Build Targets
 Clean Build
    –   Source modifications checked every hour on weekdays
    –   5 minute “quiet period” before starting build
    –   Removes all derived / generated objects
    –   Checks out and compiles all source code
    –   Creates distribution executables
 Full Build (Every 4 Clean Builds)
    –   Performs Clean Build as above
    –   Compiles and Runs All Unit Tests
 Master Build (Every 8 Clean Builds)
    –   Performs Full Build as above
    –   Runs Code Coverage and Source Code Analysis
    –   Publishes Reports and Javadoc to Web Server
    –   Purges log files older than 7 days
Build Modes
 Continuous Build (Official Build Label)
    –   No manual intervention required
    –   Executed From: /wfdev/wf/tools/buildtool/wf26
    –   Outputs to /wfdev/wf/buildstage/wf26
 On-Demand Build (Build Label “X”)
    –   Copy build files to any local directory (one time) and run
    –   Run buildnow buildmaster.xml <targets>
    –   Outputs to /tmp/wf/buildstage/wf26
 Configuration Files
    –   buildmaster.*, config.xml      – DO NOT MODIFY
    –   build.xml, build.properties – Modify as needed
    –   Better still, pass in properties as –D parameters at runtime
Workflow Development Tools

                             GSCC            CheckStyle
               JUnit                                        Jalopy
                       Memory Leak Checker




                                                          JavaNCSS




Ora*Tst
  FSProf                         Cut-N-Paste Detector     JDepend
                    Javadoc
    HTTP*Tst       DocCheck
    ARCS*Web
D E M O N S T R A T I O N


Oracle Workflow
 Build Process
Q
&
QUESTIONS


 A
 ANSWERS
Oracle Workflow Continuous Integration

Weitere ähnliche Inhalte

Was ist angesagt?

Oracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certificationOracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certification
magnificsmily
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
Vladimir Bakhov
 
2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington
Brian Burrington
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA
 

Was ist angesagt? (18)

My Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12cMy Experience Using Oracle SQL Plan Baselines 11g/12c
My Experience Using Oracle SQL Plan Baselines 11g/12c
 
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
Inflectracon2020: Advantages of Integrating a DevSecOps Pipeline with the Spi...
 
Oracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certificationOracle fusion middleware training with placements and certification
Oracle fusion middleware training with placements and certification
 
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
UPGRADING FROM ORACLE ENTERPRISE MANAGER 10G TO CLOUD CONTROL 12C WITH ZERO D...
 
Front Cover:
Front Cover:Front Cover:
Front Cover:
 
Evolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOpsEvolving from Automated to Continous Testing for Agile and DevOps
Evolving from Automated to Continous Testing for Agile and DevOps
 
Continuous Integration for Oracle Database Development
Continuous Integration for Oracle Database DevelopmentContinuous Integration for Oracle Database Development
Continuous Integration for Oracle Database Development
 
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle ExalogicZero Downtime for Oracle E-Business Suite on Oracle Exalogic
Zero Downtime for Oracle E-Business Suite on Oracle Exalogic
 
Lessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentationLessons learned validating 60,000 pages of api documentation
Lessons learned validating 60,000 pages of api documentation
 
To study pcms pegasus erp cargo management system-release-7 from architectu...
To study pcms   pegasus erp cargo management system-release-7 from architectu...To study pcms   pegasus erp cargo management system-release-7 from architectu...
To study pcms pegasus erp cargo management system-release-7 from architectu...
 
Strategies for agile software test automation
Strategies for agile software test automationStrategies for agile software test automation
Strategies for agile software test automation
 
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlobHow to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
How to Release Rock-solid RESTful APIs and Ice the Testing BackBlob
 
Hovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyerHovitaga OpenSQL Editor - Product flyer
Hovitaga OpenSQL Editor - Product flyer
 
Xray for Jira - How to automate your QA process
Xray for Jira - How to automate your QA processXray for Jira - How to automate your QA process
Xray for Jira - How to automate your QA process
 
2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington2016_Resume_Brian_Burrington
2016_Resume_Brian_Burrington
 
SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612SOASTA Webinar: Process Compression For Mobile App Dev 120612
SOASTA Webinar: Process Compression For Mobile App Dev 120612
 
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
OOW15 - Planning Your Upgrade to Oracle E-Business Suite 12.2
 
Database continuous integration, unit test and functional test
Database continuous integration, unit test and functional testDatabase continuous integration, unit test and functional test
Database continuous integration, unit test and functional test
 

Ähnlich wie Oracle Workflow Continuous Integration

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
Code Mastery
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
Ortus Solutions, Corp
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
os890
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
vstorm83
 
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax
 

Ähnlich wie Oracle Workflow Continuous Integration (20)

Build automation best practices
Build automation best practicesBuild automation best practices
Build automation best practices
 
Into The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applicationsInto The Box 2018 | Assert control over your legacy applications
Into The Box 2018 | Assert control over your legacy applications
 
Apache DeltaSpike
Apache DeltaSpikeApache DeltaSpike
Apache DeltaSpike
 
Unit Testing
Unit TestingUnit Testing
Unit Testing
 
eXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework IntroductioneXo Platform SEA - Play Framework Introduction
eXo Platform SEA - Play Framework Introduction
 
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
DataStax | Effective Testing in DSE (Lessons Learned) (Predrag Knezevic) | Ca...
 
Effective Testing in DSE
Effective Testing in DSEEffective Testing in DSE
Effective Testing in DSE
 
IntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and PerformanceIntelliJ IDEA Architecture and Performance
IntelliJ IDEA Architecture and Performance
 
Code quality par Simone Civetta
Code quality par Simone CivettaCode quality par Simone Civetta
Code quality par Simone Civetta
 
Groovy In the Cloud
Groovy In the CloudGroovy In the Cloud
Groovy In the Cloud
 
Unit Testing in JavaScript
Unit Testing in JavaScriptUnit Testing in JavaScript
Unit Testing in JavaScript
 
ContextualContinuous Profilng
ContextualContinuous ProfilngContextualContinuous Profilng
ContextualContinuous Profilng
 
Build, logging, and unit test tools
Build, logging, and unit test toolsBuild, logging, and unit test tools
Build, logging, and unit test tools
 
One integrated platform for all activities,from engineering to production
One integrated platform for all activities,from engineering to productionOne integrated platform for all activities,from engineering to production
One integrated platform for all activities,from engineering to production
 
The_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_CouldThe_Little_Jenkinsfile_That_Could
The_Little_Jenkinsfile_That_Could
 
Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9Illia shestakov - The Future of Java JDK #9
Illia shestakov - The Future of Java JDK #9
 
Performance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle CoherencePerformance Test Driven Development with Oracle Coherence
Performance Test Driven Development with Oracle Coherence
 
ASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in TechnologyASP.NET MVC Workshop for Women in Technology
ASP.NET MVC Workshop for Women in Technology
 
10071756.ppt
10071756.ppt10071756.ppt
10071756.ppt
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthrough
 

Mehr von Rajesh Raheja

The Role of an Architect
The Role of an ArchitectThe Role of an Architect
The Role of an Architect
Rajesh Raheja
 
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Rajesh Raheja
 

Mehr von Rajesh Raheja (9)

What Product Leaders need to know about DevOps
What Product Leaders need to know about DevOpsWhat Product Leaders need to know about DevOps
What Product Leaders need to know about DevOps
 
The Role of an Architect
The Role of an ArchitectThe Role of an Architect
The Role of an Architect
 
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA SuiteOOW 2012: Integrate Cloud Applications with Oracle SOA Suite
OOW 2012: Integrate Cloud Applications with Oracle SOA Suite
 
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
Oracle OpenWorld 2010 Practical Insights on Using AIA (presentation only)
 
Oracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIAOracle OpenWorld 2010 Practical Insights on Using AIA
Oracle OpenWorld 2010 Practical Insights on Using AIA
 
Oracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best PracticesOracle OpenWorld 2009 AIA Best Practices
Oracle OpenWorld 2009 AIA Best Practices
 
WDSOA'05 Whitepaper: SOA and the Future of Application Development
WDSOA'05 Whitepaper: SOA and the Future of Application DevelopmentWDSOA'05 Whitepaper: SOA and the Future of Application Development
WDSOA'05 Whitepaper: SOA and the Future of Application Development
 
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
OracleWorld 2002 Whitepaper Web Services in E-Business SuiteOracleWorld 2002 Whitepaper Web Services in E-Business Suite
OracleWorld 2002 Whitepaper Web Services in E-Business Suite
 
Oracle World 2002 Leverage Web Services in E-Business Applications
Oracle World 2002 Leverage Web Services in E-Business ApplicationsOracle World 2002 Leverage Web Services in E-Business Applications
Oracle World 2002 Leverage Web Services in E-Business Applications
 

Kürzlich hochgeladen

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Kürzlich hochgeladen (20)

Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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...
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
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?
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 

Oracle Workflow Continuous Integration

  • 1.
  • 2. Rajesh Raheja Development Director Oracle Workflow & Messaging Oracle Corporation
  • 4. An important part of any software development process is getting reliable builds of the software. - Martin Fowler, Chief Scientist, ThoughtWorks
  • 5. What is Continuous Integration?  A Fully Automated, Reproducible Build Process  Runs many times a day – as often as needed  Available to run on-demand in a single command  Built from scratch from source control (ARCS)  Includes Unit Testing and Code Coverage  Automated Source Code Review and Quality Analysis  Deliverables include latest distribution e.g. jar, ear  Successful compilation AND testing I.e. not a build “attempt”, but a build that works!
  • 6. The Benefits  Reduced Time to Market – Cuts testing time due to earlier detection of potential issues – Significantly reduces manual source code review efforts  Improved Product Quality – Reduces bugs by uncovering integration issues early on – Continuous testing enforces code quality – Source code analysis enforces best programming practices – Improved Reliability, Maintainability, Testability, Reusability  Increased Developer Productivity – Automated source analysis reduces manual review efforts – Developers can focus on what needs to be fixed – Developers can gain unique perspective on best programming practices and industry-standard patterns
  • 7. The Build Process Setup Compile Test Code Coverage Source Code Analysis Publish Reports and Javadoc
  • 8. Build Process: Setup  Checks Build Mode and JDK – Supported Build Modes are iAS and DB – Supported JDK: 1.1.8 (may drop), 1.3 and 1.4 – Classpath uses iAS 1.0.2.2 or 9.0.4 home based on JDK  Cleans build area and creates directory structure  Copies any dependent FND libraries e.g. fndctx.jar  Checks out latest source code from RCS  Ignores file patterns specified in build.excludes  Can check out for a given release label if needed  Performs iAS or DB specific tasks – E.g. Copy the appropriate Workflow Context factories
  • 9. Build Process: Compile  Instruments source code for code coverage – Original source code backed up to ./prof-bak – Generates BasicBlocks file containing source information  Compiles all source code – For Workflow, following modules are compiled: Workflow Engine Workflow Configuration Assistant XML Gateway Engine XML Gateway Message Designer  Build all the jar, war and ear files – Delivers a single workflow.jar along with other files
  • 10. Build Process: Test  Checks out test source code into build area – Unit tests copied from $psa/java/ut – Test data and RTs copied from $psa/test  Compiles the test source code  Sets the environment needed for testing – Sets the required environment variables – Puts data directory in the classpath for loading test data – Puts junit.jar in the classpath  Runs all (or specified) Unit Tests  Run any additional RTs (manually if needed)  Produces the profile files for code coverage
  • 11. Build Process: Code Coverage  Reads all generated profile files – Initial profile files automatically generated from Unit Tests – More profile files can be generated by running RTs  Generates code coverage by module – Compares profile against BasicBlocks generated file – Groups by modules defined in the ProfileGroups file – Ignores all blocks mentioned in Infeasible file  Generates marked up source html files – Indicating non-covered and heavy-hit blocks  Restores all original source code from backup – Unless of course you need to re-run after RTs
  • 12. Build Process: Source Analysis JavaNCSS – Analyzes Complexity of Source Code Max Non-Commented Source Statements Max Cyclomatic Complexity (loops, conditions) Max Classes per Package and Methods Per Class Min Javadoc Per Method – Helps Refactor code to reduce complexity Improve Maintainability Reduce bugs
  • 13. Build Process: Source Analysis  JDepend – Provides Dependency and Stability Inference – Analyzes Cyclical References between classes – Helps in Refactoring code for Maintainability  GSCC – Runs GSCC checks per ARU guidelines – Some GSCC checks not applicable in Standalone mode  Memory Leak Checker (ATG Utility) – Identifies potential memory leaks by smart parsing – Very basic, may not be applicable for J2EE code
  • 14. Build Process: Source Analysis Format – Formats source code to industry best-practice – Helps normalize code by various developers – Enforce corporate standards e.g. Oracle headers boilerplate in every file with the correct year e.g. Copyright © 2003 Oracle. All rights reserved. – Can auto-generate Javadoc comments – Saves developer time and effort – Download Jalopy for JDeveloper and use profile file from http://www-apps/wf/wfjalopy.xml
  • 15. Build Process: Source Analysis  CheckStyle – Checks conformance to industry best-practices – Significantly reduces developer time and effort for manual, tedious code review – Helps learn industry standard best programming practices – Helps in Reusability and Maintainability – Most non-compliances can be fixed by Jalopy  DocCheck – Checks for non-compliance of Javadoc standards – Checks missing comments at various levels, saving time – Suggests the comments for self-evident methods – Provides suggestions that can be cut-n-pasted – Helps in Maintainability
  • 16. Build Process: Publish Reports  Generates Javadoc with a PUBLIC scope  Publishes to public web server – Build Log Files and Test Outputs of FNDLOG – JUnit Results – Code Coverage Analysis – Javadoc and DocCheck Reports – GSCC and MemLeakChecker Output – JavaNCSS and JDepend Reports – Checkstyle Analysis  Notifies Recipients by Email of Successful Build  Master build page updated with build information
  • 17. Build Progress Metric WF2.6* WF3.0** Lines of Code (w/o comments) 53,046 8,294 Methods 4,832 1,093 Classes 525 96 Javadoc 1,786 756 Unit Tests 132 130 Unit Test Success Rate 96.97% 96.92% Code Coverage (Unit Tests) 19.17% 48.38% * Applies to Standalone Java Build WF26.185 as of 08.07.2003 ** Applies to Standalone Java Build WF30.12 as of 07.25.2003 Next Steps: OAM and Diagnostics soon to be enabled for continuous builds.
  • 18. Build Targets  Clean Build – Source modifications checked every hour on weekdays – 5 minute “quiet period” before starting build – Removes all derived / generated objects – Checks out and compiles all source code – Creates distribution executables  Full Build (Every 4 Clean Builds) – Performs Clean Build as above – Compiles and Runs All Unit Tests  Master Build (Every 8 Clean Builds) – Performs Full Build as above – Runs Code Coverage and Source Code Analysis – Publishes Reports and Javadoc to Web Server – Purges log files older than 7 days
  • 19. Build Modes  Continuous Build (Official Build Label) – No manual intervention required – Executed From: /wfdev/wf/tools/buildtool/wf26 – Outputs to /wfdev/wf/buildstage/wf26  On-Demand Build (Build Label “X”) – Copy build files to any local directory (one time) and run – Run buildnow buildmaster.xml <targets> – Outputs to /tmp/wf/buildstage/wf26  Configuration Files – buildmaster.*, config.xml – DO NOT MODIFY – build.xml, build.properties – Modify as needed – Better still, pass in properties as –D parameters at runtime
  • 20. Workflow Development Tools GSCC CheckStyle JUnit Jalopy Memory Leak Checker JavaNCSS Ora*Tst FSProf Cut-N-Paste Detector JDepend Javadoc HTTP*Tst DocCheck ARCS*Web
  • 21. D E M O N S T R A T I O N Oracle Workflow Build Process

Hinweis der Redaktion

  1. 58 26 24
  2. 58 26 24