OTC Tools Development and Release process. Igor Stoppa & Eduard Bartosh & JF Ding V May 2013

Similar documents
Continuous Deployment with Gerrit and Jenkins

ci-management Release 1.0.0

CAKEDC GIT WORKFLOW. CakeDC Git Workflow is a project development and release work flow which provides a

Tizen * IVI Hands-on Lab

Release for Lithium. George Zhao, Ed Warnicke, Colin Dixon, Mathieu Lemey, Robert Varga, An Ho.

Software configuration management

Change-sets. Basavaraj Karadakal

At a high level, the current OPNFV CI pipeline can be summarized as follows:

AEM Code Promotion and Content Synchronization Best Practices

FAQ Q: Where/in which branch do I create new code/modify existing code? A: Q: How do I commit new changes? A:

One-click Solution for Tizen Image Creation Based on Jenkins Framework. Zhang, Qiang (Intel Open Source Technology Center)

Creating a Patch. Created by Carl Heymann on 2010 Sep 14 1

ETOOMANYCATS. How we produce OpenStack

CS 390 Software Engineering Lecture 5 More Git

Getting the Source Code

ONAP Developer Typical Setup 2017 July ONAP Virtual Developers Event

Seven Habits of Highly Effective Jenkins Users. Andrew Bayer Cloudera OSCON Java 2011

FPLLL. Contributing. Martin R. Albrecht 2017/07/06

Tempest: Integrated OpenStack Testing

Git for Subversion users

contribution-guide.org Release

Git Workflows. Sylvain Bouveret, Grégory Mounié, Matthieu Moy

SCAP Security Guide Questions / Answers. Contributor WorkShop Volume #2

KTH Royal Institute of Technology SEMINAR 2-29 March Simone Stefani -

Git and Gerrit Workflows. Enforcing Manual & Automated Review

SCAP Security Guide Questions / Answers. Ján Lieskovský Contributor WorkShop November 2015

How SAP is using Python to test its database SAP HANA Christoph Heer EuroPython July 11

git-flow Documentation

SALOME Maintenance Procedure. Frédéric Pons (Open Cascade) Roman Nikolaev (Open Cascade)

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Git. all meaningful operations can be expressed in terms of the rebase command. -Linus Torvalds, 2015

Version Control for PL/SQL

Team Up: Contributing to the Tizen Platform. Narasimha Swamy Sanjay NM

QA and Testing. Suchitra Vemuri, ONF Karthick Ramanarayanan, Ciena November 8th, 2017

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer. Gerrit

Python Project Example Documentation

Infrastructure-as-Code and CI Infrastructure at Open Stack A look at one of the largest CI systems and system administration

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

OpenStack Infrastructure tools

Managing build infrastructure of a Debian derivative

The Automotive Grade Linux Build Service. ALS Tokyo '14, Jan-Simon Möller

Organising benchmarking LLVM-based compiler: Arm experience

Kernel maintainership: an oral tradition

TDF Infra Overview. from developers' perspective

Linux Kernel Subsystem Maintenance. Linus Walleij, Lund Linux Conference

The Old World. Have you ever had to collaborate on a project by

#jenkinsconf. Managing jenkins with multiple components project. Jenkins User Conference Israel. Presenter Name Ohad Basan

ThinkPalm s BreakThrough DevOps Capabilities ThinkPalm

Version Control for PL/SQL

chatterbot-weather Documentation

About SJTUG. SJTU *nix User Group SJTU Joyful Techie User Group

Creating a profile from Tizen:Common. Stéphane Desneux Senior Software Engineer Eurogiciel

What s New in Gerrit 2.14 Gerrit User Summit London 2017

Ingegneria del Software Corso di Laurea in Informatica per il Management (D)VCS. Davide Rossi Dipartimento di Informatica Università di Bologna

Belle II - Git migration

Software Development I

dgit Use the Debian archive as a git remote Debconf 15, Heidelberg

nacelle Documentation

Version Control: Gitting Started

Version Control for the 2- Pizza Team: Merge Conflicts (ELLS 9.5) Armando Fox

Building Tizen Development Environment

Git. Ľubomír Prda. IT4Innovations.

Introduction, Instructions and Conventions

Version Control. Second level Third level Fourth level Fifth level. - Software Development Project. January 11, 2017

Tools for Distributed, Open Source Systems Administration

CSC 2700: Scientific Computing

sainsmart Documentation

TPS Documentation. Release Thomas Roten

February 2 nd Jean Parpaillon

The Rock branching strategy is based on the Git Branching Model documented by Vincent Driessen.

Aircrack-ng python bindings Documentation

Your Engineering Excellency

RobinHood Project Status

Roman Numeral Converter Documentation

Best Practice for Tizen Platform from Code to Device. Zhang, Qiang Chen, Gui (Intel Open Source Technology Center)

Jinkun Jang Samsung Electronics

Releasing and Testing Free Opensource Graphics Drivers: the case of Mesa3D

JenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot

opensuse Packaging for the osmocom stack Martin Hauke

Keeping up with LTS Linux Kernel Functional Testing on Devices

google-search Documentation

Continuous Delivery of your infrastructure. Christophe

Frédéric Crozat SUSE Linux Enterprise Release Manager

Code Review for DevOps

Version Control. So#ware Quality Quality Audit and Cer2fica2on. Master in Computer Engineering. Roberto García

MySQL Development Cycle

vpp-firstcut Documentation

I2C LCD Documentation

Versioning with git. Moritz August Git/Bash/Python-Course for MPE. Moritz August Versioning with Git

New Contributor Tutorial and Best Practices

The OpenStack Project Continuous Integration System. Elizabeth K.

Continuous Integration / Continuous Testing

exo Product Maintenance Program

MOOSE-Based Application Development on GitLab

Version Control Systems

Data for LibreOffice developerss

Release Ralph Offinger

Super Charge Your Continuous Integration Deployments. Nikola Gotsev April 26, 2016

Git Basi, workflow e concetti avanzati (pt2)

About HP Quality Center Upgrade... 2 Introduction... 2 Audience... 2

Transcription:

OTC Tools Development and Release process Igor Stoppa & Eduard Bartosh & JF Ding V0.12 23 May 2013

Purpose of the document This document describes development and release workflow for the following projects: Tools releases: bmap-tools, depanneur, gbs, git-buildpackage and mic QA Tools: CATS, QA Reports. These are released independently. Services packages: Jenkins-jobs, Jenkins-plugins, Jenkins-scripts, and all the packages for BOSS. For the above mentioned projects it s strongly recommended to follow the workflow and rules described in this document. For other projects it s up to the project maintainers to decide to use the workflow and rules described in this document, use them partly or not to use at all. In the following of this document, all the references of Tools names are for the convenience of description, which can be replaced by other different component name, e.g. Services 2 INTEL CONFIDENTIAL

devel patch A patch B submit for review (Jenkins) pre-review build & test OBS build in sandbox Development & Release Process (Gerrit) human review & acceptance gerrit devel branch (Jenkins) upload (OBS) integration into <project>:devel build test OBS <project>:devel (Jenkins) publish Repos 1 2 3 4 5 rebase required Branching & version management tizen.org tzdev.org intranet OBS <project>:devel <project>:pre-release <project> 1) developers submit patches for review 2) preliminary automated verification: test packages are built in a sandbox and smoke tested 3) the submission is reviewed when accepted it requires rebase and resubmit for other changes queued for review 4) upload to OBS of the new version of the package(s) 5) the packages are published to the appropriate location 3 INTEL CONFIDENTIAL

Branching process 1. Developers submit changes to devel branch devel branch release-<rnumber> branch Master branch 1 2 3 4 6 5 7 8 2. When the devel branch meets the criteria for rolling out a release, it is branched into a release-<rnumber> branch 3. The release-<rnumber> undergoes a stabilization phase during which all changes submitted to release-<number> branch have to be submitted also to devel. 4. Release candidates should be tagged as v<rnumber>rc<num> 5. Eventually the branch is tagged as v<rnumber> and a release is made. 6. Master Branch is reset to the release tag and doesn t receive any direct commit. 7. Bugfix branch is made for current release patch tag & release 8. Master Branch is reset once more to the latest bugfix release. 4 INTEL CONFIDENTIAL

Versioning Recommended versioning scheme for releases is major.minor[.bugfix] Release candidates should add -rc<num> suffix to release version, for example: 1.2-rc1 or 1.2.3-rc1 In order to make package versions reflect versioning scheme and look similar for rpm and deb they should follow these recommendations: rpm.spec files: Release candidate: Version: 1.2, Release: 0.rc1.<CI_CNT>.<B_CNT> Final release: Version: 1.2, Release: 1.<CI_CNT>.<B_CNT> debian/changelog Release candidate: 1.2-0.rc1 Final release: 1.2-1 After creating release- branch package version in devel branch must be increased to ensure that version in <project>:devel repository is always higher than in <project>pre-release and <project> 5 INTEL CONFIDENTIAL

Advice of the Versioning for Services Packages Because we need not to release the services packages to end users currently, not like developer tools. And we need only to deploy them to the product infrastructure servers instead. So the versioning of these packages can be simpler: No rc versions No bugfixing versions Using <Major>.<Minor> versioning schema only, for every release, just increase the minor number. And for some important milestone release, increase the major number. 6 INTEL CONFIDENTIAL

Submitting changes Changes are submitted for review using git push <origin> <commit id>:refs/for/<target branch> Every submission triggers Jenkins job OTC-Tools-Tester-<project name>. This job does the following: Submits sources to OBS for the build to a project home:tester:tools-<project name>-<gerrit change number>.<gerrit patchset number>. OBS buld targets for the builds are taken from base project. For Tools releases it is Tools:Devel. Result packages uploaded to build repository at http://download.otctools.jf.intel.com/home%3a/tester%3a/tools-<package name>-<gerrit change number>.<gerrit patchset>/ Performs package installations in clean virtual environments for all target distributions. Optionally runs pylint and nosetests for python projects and produces violation, code coverage and test reports 7 INTEL CONFIDENTIAL

Accepting changes When change is accepted to the target branch(devel or release-<number>) in Gerrit OTC-Tools-Tester-<project name> is also triggered. For merged changes it does the same steps as on change submission, but upload sources to base OBS project. For devel branch it uploads sources to Tools:Devel For release-<number> branches it uploads sources to Tools:Pre-release This way system maintains consistency between code in devel and release branches and packages in correspondent OBS projects. It s recommended to configure Gerrit to allow only fast-forward merges. In this case changes have to be rebased on top of target branch before merging and pushed to Gerrit again. This will trigger OTC-Tools-Tester-<project name> job again and change will be tested again. It will reduce chances to get broken code to the target branches. 8 INTEL CONFIDENTIAL

Criteria for rejection of submissions the submission claims to fix a bug, but the bug is still reproducible with roughly the same frequency (if the frequency is significantly reduced we probably still want to accept it) the submission claims to implement a feature, but the feature verification fails so much that the feature is considered to be unusable (in practice the submission is not adding any value) the submission degrades the overall code quality (fails automated code analysis & verification / has problems with the implementation) the submission introduces major regressions (more on regression testing in separate foil) 9 INTEL CONFIDENTIAL

Regression testing Regression testing must be performed at least before releasing a tool. It should be done also periodically, during the development phase, preferably synchronised with integration of major changes. Specific test cases depend on the nature of each tool. Generic steps: take previous execution of the stable (production) release of the tool use the same data with the development release of the tool verify that the output is consistent and the only differences are due to bugfixes and planned features. 10 INTEL CONFIDENTIAL

Regression Testing in Staging Environment Because it s very critical for Tizen development process if we release and deploy the tools and services packages in product servers, we need to test them in staging environment before being deployed in product infrastructure servers. We d better host staging servers for all the three supporting domains: TZ, RSA and tizen.org, and testing the new packages in them accordingly. 11 INTEL CONFIDENTIAL

Smoke Testings for MIC Images For the regression testings for MIC, we need do simple verification for the outputs, which means the smoke testings for images. We need to confirm the output images can boot and work properly, with the same workable package repositories. We need to verify all the supported verticals: Mobile, PC, IVI, at least. 12 INTEL CONFIDENTIAL

Releasing Release stabilization is done in release-<rnumber> branches Jenkins job OTC-Tools-Tester-<project name> is taking care of synchronizing code in release-<rnumber> branches and packages in Tools:Pre-release Pre-release testers should install packages from http://download.otctools.jf.intel.com/home%3a/tester%3a/tools-<package name>-<gerrit change number>.<gerrit patchset>/ repos to verify changes under review and from http://download.otctools.jf.intel.com/tools%3a/prerelease/ to test accepted changes. When release is ready it s tagged with v<rnumber> tag and master branch is resetted to it. Packages from Tools:Pre-release are copied to Tools 13 INTEL CONFIDENTIAL

Bugfix releases (need to update it according current) Bugfix releases should be done in bugfix-<rnumber> branches. Release- <rnumber> branches can t be used for bugfix releases as they re mapped to Tools:Pre-release OBS project, which may contain packages scheduled for the next release. Jenkins job OTC-Tools-Tester-<project name> is taking care of synchronizing code in bugfix-<rnumber> branches and packages in Tools:Bugfix Bugfix testers install packages from http://download.otctools.jf.intel.com/home%3a/tester%3a/tools-<package name>- <gerrit change number>.<gerrit patchset>/ repos to verify changes under review and from http://download.otctools.jf.intel.com/tools%3a/bugfix/ to test accepted changes. When release is ready it s tagged with v<rnumber> tag and master branch is reset to it. Packages from Tools:Bugifx are copied to Tools 14 INTEL CONFIDENTIAL

Publishing releases and pre-releases Tools and Tools:Prerelease repositories are published to the http://download.tizen.org/tools/. Job is run by release managers manually. Job publishes repos to public location, extracts release notes from packages and updates.repo files with the proper urls. Similarly, Services and Services:prerelease repos will be published to http://download.tizen.org/tools/ci/. Package maintainers should put RELEASE_NOTES file into packages using %doc RELEASE_NOTES in spec file. Release notes will be extracted by the publishing job and uploaded to the public site as RELEASE_NOTES.<package name> Structure of the public download site contains archive of all releases, pre-release and link to the latest release. 15 INTEL CONFIDENTIAL

Development and release flow: Jenkins Git branch OBS download repo testing patch failed pre-review testing pass reject peer review accept Devel branch branch Tools:Devel download.otctools.jf.intel.com/tools:/devel/ Functional testing hot fix peer review accept release-* branch Tools:pre-release download.tizen.org/tools/pre-release/ Full testing merge Deploy request master branch Tools download.tizen.org/tools/archive/ download.tizen.org/tools/latest-release/ Sanity testing Release announce handled by Jenkins automatically 16 INTEL CONFIDENTIAL

Repository for Pre-announcement Deployment According our process, we need to deploy the new packages in all domains product servers. Need to use the latest published repo under archive for the deployment. After confirming everything is ok, and before the official announcement, need to update the repo URL to latest-release. 17 INTEL CONFIDENTIAL