Process changes: Internal processes of CASA, external contributions, release schedule Mark G. Rawlings, CASA Build & Test Lead NRAO, Charlottesville Acknowledgements:

Slides:



Advertisements
Similar presentations
Week 2 DUE This Week: Safety Form and Model Release DUE Next Week: Project Timelines and Website Notebooks Lab Access SharePoint Usage Subversion Software.
Advertisements

Software engineering tools for web development Jim Briggs 1CASE.
Version Control 1.  Version control (or revision control) is the term for the management of source files, and all of the intermediate stages as development.
Version Control System Sui Huang, McMaster University Version Control SystemSui Huang, McMaster University Version Control System -- base on Subversion.
Source Control in MATLAB A tool for tracking changes in software development projects. Stuart Nelis & Rachel Sheldon.
2/6/2008Prof. Hilfinger CS164 Lecture 71 Version Control Lecture 7.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Update on Version Control Systems: GitLab, SVN, Git, Trac, CERNforge
1 CMPT 275 Software Engineering Revision Control.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
CONTINUOUS INTEGRATION, DELIVERY & DEPLOYMENT ONE CLICK DELIVERY.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
Configuration Management Process and Environment MACS Review 1 February 5th, 2010 Roland Moser PR a-RMO, February 5 th, 2010 R. Moser 1 R. Gutleber.
Version control Using Git 1Version control, using Git.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Craig Berntson Chief Software Gardener Mojo Software Worx Branches and Merges are Bears, Oh My!
Introduction to Version Control with SVN & Git CSC/ECE 517, Fall 2012 Titus Barik & Ed Gehringer, with help from Gaurav.
علیرضا فراهانی استاد درس: جعفری نژاد مهر Version Control ▪Version control is a system that records changes to a file or set of files over time so.
Introduction to Version Control
The Design Workshop Introduction to Version Control 1.
With Mercurial and Progress.   Introduction  What is version control ?  Why use version control ?  Centralised vs. Distributed  Why Mercurial ?
Git – versioning and managing your software L. Grewe.
Version control Using Git Version control, using Git1.
2010. The Subversion Dilemma Check in buggy code and drive everyone else crazy Avoid checking it in until it’s fully debugged or.
Version Control. How do you share code? Discussion.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Version Control Systems with Subversion (SVN) and Tortoise.
Copyright © 2015 – Curt Hill Version Control Systems Why use? What systems? What functions?
Distributed Version Control Systems (or Version Control for Hipsters) Rob Gaston, web developer Farallon Geographics, Inc. SF Department of Technology.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
1 Software Configuration Management (SCM) and Software Reuse Presented By: Edmund Leng (HT052446J) Choo Zhi Min (HT052430X)
Continuous Integration and Code Review: how IT can help Alex Lossent – IT/PES – Version Control Systems 29-Sep st Forum1.
QUICK START OF GITHUB Lin Shuo-Ren 2013/3/6 1. Why We Should Control The Version Although it rains, throw not away your watering pot. All changes should.
Version Control Systems. Version Control Manage changes to software code – Preserve history – Facilitate multiple users / versions.
Version Control Reducing risk with version control Jon Austin
GitHub and the MPI Forum: The Short Version December 9, 2015 San Jose, CA.
University of Southern California Center for Systems and Software Engineering Configuration Management: Concepts and Tools Pongtip Aroonvatanaporn CSCI.
Version Control and SVN ECE 297. Why Do We Need Version Control?
© 2007 by Michal Dobisek; made available under the EPL v1.0 | EclipseCon 2007 Michal Dobisek, Inside Subversive The Subversion.
Subversion (SVN) Tutorial for CS421 Dan Fleck Spring 2010.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
1 Punishment Through Continuous Delivery If it hurts, do it more often…
Virtual Lab Overview 5/21/2015 xxxxxxxxxx NWS/MDL/CIRA.
Software collaboration tools as a stack of services Borja Aparicio Cotarelo IT-PES-IS 2HEPiX Fall 2015 Workshop.
Source Control Repositories for Enabling Team Working Doncho Minkov Telerik Corporation
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
SCDB Update Michel Jouvin LAL, Orsay March 17, 2010 Quattor Workshop, Thessaloniki.
DIGITAL REPOSITORIES CGDD Job Description… Senior Tools Programmer – pulled August 4 th, 2011 from Gamasutra.
DECTRIS Ltd Baden-Daettwil Switzerland Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)
GitHub A web-based Git repository hosting service.
Managing Alfresco source code
CompSci 230 Software Construction
CS5220 Advanced Topics in Web Programming Version Control with Git
Information Systems and Network Engineering Laboratory II
Version Control CS These slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Git and GitHub primer.
LECTURE 2: Software Configuration Management
Version Control CS These outstanding slides were created by Kevin Schenk, BS in Computer Science, Purdue University, 2012.
Version control, using Git
Version Control System using Git
Configuration Management
Concurrent Version Control
Version Control System
Akshay Narayan git up to speed with RCS Akshay Narayan
LECTURE 3: Software Configuration Management
X in [Integration, Delivery, Deployment]
Git CS Fall 2018.
Patrick Cozzi University of Pennsylvania CIS Fall 2012
Version Control with Git
Presentation transcript:

Process changes: Internal processes of CASA, external contributions, release schedule Mark G. Rawlings, CASA Build & Test Lead NRAO, Charlottesville Acknowledgements: Ville Suoranta, Darrell Schiebel & Jeff Kern

CASA Main Topics Dealing With Change - Version Control Systems – Centralized vs. Distributed: Subversion (SVN) vs. Git – Proposed Implementation What’s In The Box? - Review of CASA package types – Test, Stable, Monthly – Pre-Release, Release How And When? - Continuous Integration vs. Continuous Delivery – Questions & Implementation Challenges 2015 CASA Users Committee Face-to-Face2

CASA “Change is inevitable - except from a vending machine.” -- Robert C. Gallagher 2015 CASA Users Committee Face-to-Face3

CASA Dealing With Change: Version Control (a.k.a. Revision Control, Source Control) Systems System that enables multiple people to simultaneously work on single project – Each contributor edits own copy, chooses when to share changes – Enables one person to use multiple computers to work on project – Integrates work done simultaneously by different contributors. In cases when two contributors make conflicting edits to same part of file, human assistance for resolution usually required – Provides access to historical versions of project Allows specific changes to be undone, version roll-back, reproduction & understanding of bug reports on prior versions Logs allow determination of when, why, by whom each change was made 2015 CASA Users Committee Face-to-Face4

CASA Dealing With Change: Version Control (a.k.a. Revision Control, Source Control) Systems Can be centralized (e.g. Subversion, CVS) or distributed (e.g. Git, Mercurial): 2015 CASA Users Committee Face-to-Face5

CASA CASA SVN, Branches & Version Numbering 2015 CASA Users Committee Face-to-Face6 CASA currently uses Subversion (SVN)

CASA Version Control: Branching & Merging Branching: Duplication of object under version control (e.g. source code file or directory tree) so modifications can happen in parallel along both branches – CASA has development (“trunk”) & (pre-)release branches Merging: Reconciliation of multiple changes made to version- controlled collection of files. When two branches merge, one set of files is produced containing both sets of changes – Centralized VCS (e.g. SVN) can make this process painful for large numbers of contributors/changes! – Currently minimized for CASA by requiring developers to commit to both branches (when in pre-release phase) 2015 CASA Users Committee Face-to-Face7

CASA Pros & Cons of DVCS for CASA Pros – Makes developers more directly accountable for own commits – Allows more flexibility for collaboration & greater code maturity before general distribution – Avoids large merges (although we mostly avoid those now) – Allows CASA Development Team and GitHub Casacore developers to keep to unified casacore codebase – Distributed approach relies on distribution of multiple complete copies of codebase (multiple “backups”) – Makes adoption of external astronomical community contributions simpler Cons – More complicated conceptually – Versatile: More rope with which to hang ourselves CASA Users Committee Face-to-Face8

CASA CASA Package Production Branch: Trunk – Test: Nightly builds that start Stable: Any Test package that passes all automated unit & regression tests (~200; run nightly on all supported platforms) – Monthly: Snapshot of most recent Stable package at start of each month (also Pipeline snapshots) Branch: Release (Re-created ~6 weeks prior to public release) – Pre-release: Usually produced several times per week Release: (Manually) promoted Pre-release package All now routinely produced for RHEL5 & 6; two most recent OS X versions 2015 CASA Users Committee Face-to-Face9

CASA 2015 CASA Users Committee Face-to-Face10 Proposed Git-based Architecture

CASA Proposed Git Architecture: Key Features NRAO host Bitbucket Server-based organization-wide Git repository in-house – CASA developers act as “Gatekeepers” who approve/reject pull requests; can also push – Small subset with greater admin permissions (rebase, enable force push for limited periods, etc.) External ATNF ASAP SVN repository dependency to be deprecated – NAOJ libsakura replaces it, initially as 3 rd party package External GitHub casacore component to be incorporated as Git submodule External possible contributions from the external CASA science user community will be as pull requests to NRAO CASA Git repository – Requires external expert users to have (more limited) accounts 2015 CASA Users Committee Face-to-Face11

CASA Continuous Integration vs. Continuous Delivery Not the same thing! Continuous integration (CI): “The practice, in software engineering, of merging all developer working copies to a shared mainline several times a day.” – Handled for CASA by CI server. Currently Jenkins, but will probably move to Atlassian Bamboo Checks for changes to codebase every ~3 mins, attempts builds, reports results to committing developers Continuous Delivery: “A software engineering approach in which teams keep producing valuable software in short cycles and ensure that the software can be reliably released at any time.” – Not yet done by CASA, although stable/pre-release packages approach this in microcosm somewhat… 2015 CASA Users Committee Face-to-Face12

CASA “To CD or not CD: That is the question.” 2015 CASA Users Committee Face-to-Face13

CASA “To CD or not CD: That is the question.” Takeaway question: How desirable is Continuous Delivery to the CASA user base (community end users & supported observatories)? Implications: – New features would be available to end users more quickly – An end to current (nominal) six-monthly public release cycle – Many more (incremental) releases – Would require some re-engineering of package production workflow In extremis: each bug fix / new feature would need to be science user tested individually prior to integration. Would probably need to either: – Have B&T Group selectively integrate all changes for each incremental release; or… – Have separate testing branch for every bug fix / new feature 2015 CASA Users Committee Face-to-Face14

CASA Key Points (For End Users) CASA Group is planning to move to Git (with an enterprise Git server – probably self-hosting with Atlassian Bitbucket Server): – External users will be able to submit pull requests to CASA to contribute to the codebase – Ideally, only validated software gets delivered to users(?) – Could transition to continuous delivery model (or something closer to it), if desired(?) 2015 CASA Users Committee Face-to-Face15