Developer Workshop 2015. Marc Dumontier McMaster/OSCAR-EMR



Similar documents
MOOSE-Based Application Development on GitLab

Version Control with Git. Linux Users Group UT Arlington. Rohit Rawat

Content. Development Tools 2(63)

Gitflow process. Adapt Learning: Gitflow process. Document control

Software configuration management

Version Control! Scenarios, Working with Git!

Annoyances with our current source control Can it get more comfortable? Git Appendix. Git vs Subversion. Andrey Kotlarski 13.XII.

Version control with GIT

Git - Working with Remote Repositories

HELIO Storage Service Developers Guide Draft

Lab Exercise Part II: Git: A distributed version control system

Version Control Systems: SVN and GIT. How do VCS support SW development teams?

Mastering Continuous Integration with Jenkins

Leveraging Rational Team Concert's build capabilities for Continuous Integration

In depth study - Dev teams tooling

PKI, Git and SVN. Adam Young. Presented by. Senior Software Engineer, Red Hat. License Licensed under

SMZ. SocialMedia. Z olutions

StriderCD Book. Release 1.4. Niall O Higgins

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

Data management on HPC platforms

Version Control with Git. Dylan Nugent

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Source Control Systems

Using GitHub for Rally Apps (Mac Version)

MATLAB & Git Versioning: The Very Basics

Software Configuration Management and Continuous Integration

Continuous Integration

Successful PaaS and CI in the Cloud

Version Control using Git and Github. Joseph Rivera

Version Control with Git

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Using Oracle Cloud to Power Your Application Development Lifecycle

Git Basics. Christopher Simpkins Chris Simpkins (Georgia Tech) CS 2340 Objects and Design CS / 22

Git Branching for Continuous Delivery

Introduction to Programming Tools. Anjana & Shankar September,2010

Palantir.net presents Git

Version Control with Git. Kate Hedstrom ARSC, UAF

Version control. with git and GitHub. Karl Broman. Biostatistics & Medical Informatics, UW Madison

SOFTWARE DEVELOPMENT BASICS SED

ALERT installation setup

Software Development In the Cloud Cloud management and ALM

Git. A Distributed Version Control System. Carlos García Campos carlosgc@gsyc.es

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Version Control. Version Control

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

Putting It All Together. Vagrant Drush Version Control

Drupalcamp Vienna 2009

Version Control with Subversion

Git Basics. Christian Hanser. Institute for Applied Information Processing and Communications Graz University of Technology. 6.

GECKO Software. Introducing FACTORY SCHEMES. Adaptable software factory Patterns

Sonatype CLM for Maven. Sonatype CLM for Maven

Enterprise-level EE: Uptime, Speed, and Scale

Continuous Integration. Wellcome Trust Centre for Gene Regulation & Expression College of Life Sciences, University of Dundee Dundee, Scotland, UK

Git Fusion Guide August 2015 Update

FEEG Applied Programming 3 - Version Control and Git II

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

STABLE & SECURE BANK lab writeup. Page 1 of 21

Eclipse Committer Bootcamp

Introduction to Version Control

Version Control for Computational Economists: An Introduction

Introduction to Git. Markus Kötter Notes. Leinelab Workshop July 28, 2015

Introduction to the Git Version Control System

Puppet Firewall Module and Landb Integration

ECE 4750 Computer Architecture, Fall 2015 Tutorial 2: Git Distributed Version Control System

Integrating your Maven Build and Tomcat Deployment

1. History 2. Structure 3. Git Comparison 4. File Storage 5. File Tracking 6. Staging 7. Queues (MQ) 8. Merge Tools 9. Interfaces

Version Control with. Ben Morgan

Version Uncontrolled! : How to Manage Your Version Control

Building a Continuous Integration Pipeline with Docker

Module 11 Setting up Customization Environment

Mobile Development with Git, Gerrit & Jenkins

DevShop. Drupal Infrastructure in a Box. Jon Pugh CEO, Founder ThinkDrop Consulting Brooklyn NY

COSC Software Engineering. Lecture 7: Version Control

Adopting a Collaborative Software Development Process in the Scientific Community

GitLab as an Alternative Development Platform for Github.com

Introducing Xcode Source Control

Faculty of Science and Technology MASTER S THESIS

Lucid Key Server v2 Installation Documentation.

Version Control with Git

SOA Software API Gateway Appliance 7.1.x Administration Guide

Using Git for Project Management with µvision

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Nexus Professional Whitepaper. Repository Management: Stages of Adoption

Budget Event Management Design Document

Java Software Quality Tools and techniques

Software Construction

@jenkinsconf. Maintaining huge Jenkins clusters - Have we reached the limit of Jenkins?

Lab 0 (Setting up your Development Environment) Week 1

Integrated version control with Fossil SCM

Continuous Integration

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Distributed Version Control with Mercurial and git

Continuous Integration Multi-Stage Builds for Quality Assurance

OpenShift. OpenShift platform features. Benefits Document. openshift. Feature Benefit OpenShift. Enterprise

The Bazaar Version Control System. Michael Hudson, Canonical Ltd

Continuous Deployment with Gerrit and Jenkins

Continuous integration with Jenkins CI

vs. Web Site: Blog: blog.soebes.com Dipl.Ing.(FH) Karl Heinz Marbaise

Teaming Up for Software Development

Transcription:

Developer Workshop 2015 Marc Dumontier McMaster/OSCAR-EMR

Agenda Code Submission 101 Infrastructure Tools Developing OSCAR

Code Submission: Process OSCAR EMR Sourceforge http://www.sourceforge.net/projects/oscarmcmaster

Code Submission: New Feature Need to be logged into sourceforge. Create a new ticket under the feature requests tracker. You are presented with a template. Copy and paste the headers, and fill out every section. Attach relevant documents. Sections include change benefit, interaction points, integration risks, risk if not incorporated, minimum testing requirements, training requirements, time estimate. Set the proper milestone and priority What happens next?

Code Submission: bug reporting Sourceforge can be anonymous. Use the bug tracker. No standard template yet. Provide detailed steps to reproduce bug (how did I get to this page). Include stack trace if available (screen or catalina.out) Include additional supporting material where possible (de-identified lab). Be specific about the version you are running. Helpful to specify expected behaviour as well as the observed behaviour. Setting priorities. Are you sure it's a 9?

Code Submission: Following up As a developer, you should update the ticket when making a commit to cross link them. Commit message must include the Sourceforge ID Ticket comment should be added with Gerrit URL to commit Ticket should be updated to open-fixed if appropriate. After the code has been accepted and merged, you should verify the fix, and the ticket should be updated closed-fixed Many ways for features and bugs to progress through the quality management worflow (see OSCAR EMR diagrams)

Infrastructure GIT Gerrit Jenkins DEB packaging

GIT Source Code Management OSCAR EMR hosts GIT and mirrors it to Sourceforge. You can use the sourceforge one only as read-only. Branching stategy Commonly used commands: clone, checkout, pull, fetch, commit, push, status, log, diff Lesser used commands: rebase, cherry-pick

Git continued git clone (get a copy of the repository locally) git checkout (set the working index to a specific commit or HEAD. git pull (fetch latest from remote + update current branch) git fetch (get all the missing commits from remote. Doesn't affect working index) git commit (self explanatory) git status (tells you what's going on) git log (shows history up to the current commit

Branching

Git: Branching If you want your change in OSCAR 15. Commit to RELEASE_15_BETA and master If you want your change in OSCAR 15.1. Commit to master only If you fix a major bug, commit to RELEASE_12_1 (if appropriate), RELEASE_15_BETA (if appropriate), and master. Cherry-pick is useful here. QA team is useful here too.

Git continued git cherry-pick (takes the commit, and commits it to your local index. We use this to copy a commit to another branch) git rebase (rewrite history good way to move your commit to a new point on a branch, or to clean up depency chain you may have) example. You have a commit in gerrit, but master has changed before yours is merged in such a way that it cannot be merged. Checkout commit, git rebase -i origin/<branch>. Fix merge conflicts, git add <files>, git rebase continue, push.

GIT Resources http://git-scm.com/docs/user-manual.html documentation and oscar source from gerrit

Gerrit Gerrit is a web based code review system. Developed by Google for Android. Developers commit code to Gerrit Code review process initiated by a commit to Gerrit. Code Reviewers approve, and merge code to GIT Web based side by side view of changes (diff)

Gerrit: Setup https://source.oscartools.org:8080/

Gerrit: Setup You need a GitHub account for logging in. You need to set your preferred Email and username in your gerrit profile (as well as confirm the email). You need to upload an SSH key You need to request an admin add you to the code committer group.

Gerrit: committing Send code changes to a specific branch using the remote ref argument of git push git push ssh://hexbinary@source.oscartools.org:29418/oscar HEAD:refs/for/master You'll usually send code to refs/for/master refs/for/release_12_1 refs/for/release_15_beta If the build passes (more on this later), then a code reviewer will review, and either approve or give feedback on changes required for approval On approval, the code will be merged

Gerrit: committing Before you git commit Checking what files you will send using git status Checking what code you are sending using git diff Setting the commit msg as #<sf id> - <sf description>\n other stuff

Gerrit: Code Review Code reviewers will add comments while reviewing (code level and commit level) Voting system (+2,+1,0,-1,-2) Draft comments are not published to others! Make sure you reply to publish them.

Gerrit: Code Review Closing streams using finally clause Staying away from DBHandler Removing dependencies / rebasing Adding security checks Auditing PHI access DB Scripts Date / Time handling Using null instead of empty value

Gerrit: Code Review

Gerrit: Amending commits Commits often need to be amended Code change required to fix issue identified yourself or by review process Rebasing due to conflicts between the commit, and the branch it is attempted to be merged to If it's the last commit you did in your workspace, you can change the files, and then commit with amend as an argument to change the last commit instead of making a new one. You then need to push that back to your ORIGINAL commit as a new patchset

Gerrit: Common Issues I can't push, I get a permission denied error The commit includes files I didn't want to send No one is reviewing my commit Not including the sourceforge bug / feature change ID in the commit message Pushing to the stable branch, and not to master as well. Commits are too large Commits include code from other things being worked on

Jenkins Jenkins is a Continuous Integration (CI) server Every commit gets verified by jenkins by running maven Jenkins runs (mvn clean verify pmd:pmd) What gets checked Checkstyle (see rules in utils/checkstyle.xml) Compile Test (we have reflection based testing on DAOs) Licenses (see utils/headers, pom.xml) JSP compile PMD Console output

Jenkins

Sourceforge https://sourceforge.net/projects/oscarmcmaster/ File releases Mailing lists Bug and Feature Requests trackers Git browser DEB created by Peter HC as volunteer contributions

Developing: OSCAR JAVA based project Built using maven Runs on Tomcat MySQL support 15 year project with many different ways of doing the same thing..some good, some bad. Major workflows for having code get run Struts 1.x based Actions Directly from JSP as scriptlets Web services (SOAP and REST) Database is mostly not tightly constrained.

Important classes AbstractModel / AbstractDao MiscUtils SpringUtils

Developing: Environment Linux vs. Windows based environment Setting up multiple OSCARs on a single machine Using multiple workspaces Using different JAVA and Tomcat implementations on a single machine Building from the command line Eclipse is the most commonly used IDE for developing OSCAR.

Developing: Concerns Copyrights Checking for appropriate Roles/Rights using SecurityInfoManager LoggedInInfo contains user information. Available from session. Audit Logging important events Avoid direct SQL access (DBHandler, etc) Property files Preferences Write it as a service New UI

Developing: new UI Codename: cobalt Requires the REST module be loaded Angular based Bootstrap based REST services

Getting Help Sourceforge mailing list oscarmcmaster-devel OCUS OSCAR-EMR User groups