Open-O Integration Project Introduction

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Jenkins User Conference San Francisco, Sept #jenkinsconf Business Process Model & Notation (BPMN) Workflows in Jenkins Max Spring Cisco
Developing in CAS. Why? As distributed you edit CAS 3 with Eclipse and build with Maven 2 – Best Practice for Release Engineering – Difficult edit-debug.
Maven: Build and project management in the 21th century.
Wellcome Trust Centre for Gene Regulation & Expression College of Life Sciences, University of Dundee Dundee, Scotland, UK Continuous Integration 0.
Using Ant to build J2EE Applications Kumar
Maven & Bamboo CONTINUOUS INTEGRATION. QA in a large organization In a large organization that manages over 100 applications and over 20 developers, implementing.
SOA-14: Continuous Integration in SOA Projects Experience from the field Andreas Gies Principal Architect.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Sumedha Rubasinghe October,2009 Introduction to Programming Tools.
Created by Jan Medved Integration & Test Strategy for Lithium.
Using the ALM Module Michael Youngstrom. Disclaimer This is a training NOT a presentation. – Be prepared to learn and participate in lab Please ask questions.
Created by Jan Medved Integration & Test Strategy for Lithium.
Ant & Jar Ant – Java-based build tool Jar – pkzip archive, that contains metadata (a manifest file) that the JRE understands.
March 11, 2008 USCMS Tier-2 Workshop Oh Dear God Alain made a PowerPoint presentation 1.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
© 2008 by Shawn Spiars; made available under the EPL v1.0 | March 17, 2008 Case Study – Phurnace Software and RCP Shawn Spiars Lead UI Developer Phurnace.
Maven for building Java applications By Nalin De Zoysa
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
EMI INFSO-RI EMI Quality Assurance Tools Lorenzo Dini (CERN) SA2.4 Task Leader.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
Software Deployment & Release 26/03/2015 1EN-ICE.
Copyright Vincent Massol 2006 – All rights reserved Panorama of Quality Features in Maven2 Vincent Massol, 11 July 2006
8/29/10 Maven Repository Management with Nexus Jim McMahon.
#SummitNow Lessons Learnt From Share Extras Alfresco Summit 2013 Will Abson
Anjana & Shankar September,2010 Introduction to Programming Tools.
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
XNAT 1.7: Getting Started 6 June, Introduction In this presentation we’ll discuss:  Features and functions in XNAT 1.7  Requirements  Installing.
ALM Deployment Pipeline Implementation. Create a Repeatable, Reliable Process for Releasing Software. Automate Almost Everything Keep Everything in Version.
Open-O Integration Project Proposal. Overview Project Name: Integration Repository Name: integration Description: Responsible for the integration framework.
Bringing Dynamism to OPNFV
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Documentation Guidelines
Stress Free Deployments with Octopus Deploy
Abstract After a SIG has been approved, one of the next steps is to get products out to users. During this talk, Niels will explain how the Storage SIG.
Proposal for ONAP Development Best Practices Gildas Lanilis – ONAP Release Manager June 23 , 2017.
Integration and O-Parent Project Release 2
Maven 04 March
ONAP Installation Eric Debeau, Orange
Proposed IT Infrastructure for TOP OS project
What is Apertis? Apertis is a versatile open source infrastructure tailored to the automotive needs and fit for a wide variety of electronic devices.
Plan What is Maven ? Links : mvn command line tool
OPEN-O CSIT Infrastructure
OPEN-O Sun Release Lab Deployment & Assembly
Open-O O-Parent Project Proposal
Brian Leonard ブライアン レオナルド
prepared by hasan.we4tech.com
Testing for patch certification
Advanced Integration and Deployment Techniques
API Documentation Guidelines
Instructor: Prasun Dewan (FB 150,
X in [Integration, Delivery, Deployment]
Tech Inside Extended Document Management System (EDMS)
Dev Test on Windows Azure Solution in a Box
Maven IIB9 Plug-in Version 9.0
Sr. Developer Cloud System - Architecture
JENKINS TIPS Ideas for making your life with Jenkins easier
How to Improve Releasing Efficiency via i18N/L10n Test Automation.
Maven IIB9 Plug-in Version 9.0
Escidoc build and development environment
CONTINUOUS INTEGRATION –WHY WE DO IT?
Installing and running the local check and grader projects in Eclipse
CI/CD Workflow and Event Pages
Node.js Test Automation using Oracle Developer Cloud- Simplified
PyWBEM Python WBEM Client: Overview #2
Overview on CI Use JJB (Jenkins Job Builder) to manage Jenkins jobs.
Building LabKey with Gradle
Akraino R2 inputs, goals, & Planning
Interoperability Testing
Presentation transcript:

Open-O Integration Project Introduction Integration F2F @ Shanghai August 29, 2016

Goals Provide all the common and cross-project infrastructure code, setup, processes, etc. Avoid duplication of effort Make project teams’ lives easier “We take care of things so you don’t have to” We are here to help you

“We”: the Integration project team Roles “We”: the Integration project team “You”: all Open-O project teams and contributors Each Integration committer has two roles Integration team member Help Integration project provide services to others Representative of another project Act as liason to convey project-specific requirements, updates, etc.

Overview What services will Integration provide? How do projects leverage these services?

What Integration Will Provide – Release 1 O-Parent Shared common defaults CI-Management Jenkins Job Definitions Test Automation of unit and system test flows Autorelease Builds all projects from scratch / cross-project dependency validation Distribution End-user scripts, config files, README POC Scripts for setting up POC sample deployment

Tool Infrastructure Code / Unit Test Repository (Git/Gerrit) System Test Repository (Git/Gerrit) Artifact Repository (Nexus) Build / Unit Test (Jenkins, Maven) System Test (Robot Framework) Contribution Activity Reports (Bitergia or Spectrometer) API Documentation (Swagger) Unit Test Code Coverage Reports (SonarQube) System / Performance Test Reports (Robot, JMeter)

O-Parent License check Nexus setup Checkstyle Static code analysis Apache License Version 2 Nexus setup POM <distributionManagement> tag Checkstyle Google Java Style Guide Static code analysis E.g. FindBugs

Apache License Version 2 Mandatory Sample header text License Check Apache License Version 2 Mandatory Build fails if license header is missing Sample header text oparent/license/doc

Checkstyle Consistent code style Non-Mandatory Simplifies code reviews and version comparisons Eases code contribution into multiple projects Non-Mandatory Style violations reported as warnings Build will not fail when there are style violations Projects encouraged to minimize style warnings

Google Java Style Guide Well-known and well-documented https://google.github.io/styleguide/javaguide.html Saves us from writing our own style document Excellent tooling support Built-in support in Checkstyle tool IDEs (Eclipse, IntelliJ, etc.) Command-line formatter

CI-Management (Jenkins) Per Patch Periodic (Daily) Patch Submission Patch Merge All Projects Build From Source Deploy to Nexus Single Project Build / Core Unit Tests Single Project Build / Core Unit Tests All Unit Tests All Projects Build From Artifacts Check Cross-Project Dependencies Deploy to Swagger Deploy to SonarQube Project-Dependent System Tests All System Tests

Jenkins JJB Job Types Verify (patch submission) Merge (patch merge) Build project and run unit tests (mvn clean install) Check for cross-project dependency issues (e.g. circular/unsatisfied dependencies) Merge (patch merge) Deploy project SNAPSHOT artifacts to Nexus (mvn deploy) Run project-dependent system test suites Periodic (daily) Run full, clean build of all projects from source Run all unit tests and system test suites

Unit Tests Single project Feature/function tests Tests at the class/method level (JUnit) Tests using mock servers/APIs or stubs Source controlled in each project’s own repo Run with Maven Core vs. Comprehensive Core: run at every patch submission/merge Comprehensive: run on periodic basis (e.g. daily)

System Tests Cross project Performance tests E.g. latency, throughput, longevity, scalability Tests using live servers, VMs, containers Source controlled in Integration project repo Run with Robot Framework Project-Dependent vs. All Tests Project-Dependent: run at patch merge All Tests: run on periodic basis (e.g. daily)

System Test Suite Repository Source controlled in: integration/test/csit/suites/{project} Each project May have multiple test suites Divided into functional areas Specifies its upstream project dependencies Project-Dependent test suites all test suites marked as dependent on a project E.g. if GS-O is dependent on NFV-O, then GS-O test suites are run when NFV-O is changed

How to Leverage Integration’s Services, Part 1 Use provided Jenkins JJB templates Found in ci-management/jjb {project}-verify-java {project}-merge-java Project structure Inherit from O-Parent Define Top-Level POM If the repo contains only a single top level directory, consider moving its contents to the root

How to Leverage Integration’s Services, Part 2 Set up ~/.m2/settings.xml Allows pulling artifacts from Open-O’s Nexus server Get sample copy from oparent/settings.xml Make Java source code compliant Add Apache License Version 2 header Format Java source code into Google Java Style https://github.com/google/google-java-format Use Google Java Style formatters for IDEs Consider auto-formatting on save

How to Leverage Integration’s Services, Part 3 Organize unit tests Core: critical feature/function tests Comprehensive: tests that are time-consuming System test suites Guidelines TBD Swagger API Documentation

How to Leverage Integration’s Services, Part 4 Provide build / deployment requirements RAM requirements, Linux version, Java version, etc. Configuration files used How to run each module

How to Leverage Integration’s Services, Part 5 Avoid re-inventing the wheel / duplicating effort If the defaults don’t work for you, talk to us Ideas that may be useful for all projects are always welcome Help us help you! If anything can be done in a better way, just ask

Thank You for Your Contribution We are here to help We also need your help Let’s work together to make Open-O successful!

Integration mailing list Q&A Q&A Integration mailing list http://lists.open-o.org/mailman/listinfo/openo-integration