OPNFV DEVELOPER TOOLS.

Slides:



Advertisements
Similar presentations
Introduction To GIT Rob Di Marco Philly Linux Users Group July 14, 2008.
Advertisements

Simple Git Steve Pieper. Topics Git considerations and Slicer Git as if it were svn Git the way it is meant to be.
Version Control Systems Phil Pratt-Szeliga Fall 2010.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Patterns & practices Symposium 2013 Introducing Git version control into your team Mark
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.
1 CSE 390 “Lecture 11” Version control with Git slides created by Ruth Anderson, images from
Introduction to Git and Github Joshua imtraum.com.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git for Version Control These slides are heavily based on slides created by Ruth Anderson for CSE 390a. Thanks, Ruth! images taken from
Version control Using Git 1Version control, using Git.
Open Source Workshop1 IBM Software Group Working with Apache Tuscany A Hands-On Workshop Luciano Resende Haleh.
Chapter - 2 What is “GIT” VERSION CONTROL AND GIT BASICS.
WIKI IN EDUCATION Giti Javidi. W HAT IS WIKI ? A Wiki can be thought of as a combination of a Web site and a Word document. At its simplest, it can be.
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.
Created by: Maria Abrahms Modified Date: Classification: How to get it done Contributing to OpenStack.
Git – versioning and managing your software L. Grewe.
GIT An introduction to GIT Source Control. What is GIT (1 of 2) ▪ “Git is a free and open source distributed version control system designed to handle.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 8-Oct-15.
Version control Using Git Version control, using Git1.
Version Control. How do you share code? Discussion.
Version Control Systems academy.zariba.com 1. Lecture Content 1.What is Software Configuration Management? 2.Version Control Systems (VCS) 3.Basic Git.
…using Git/Tortoise Git
Git workflow and basic commands By: Anuj Sharma. Why git? Git is a distributed revision control system with an emphasis on speed, data integrity, and.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Information Systems and Network Engineering Laboratory II DR. KEN COSH WEEK 1.
Team 708 – Hardwired Fusion Created by Nam Tran 2014.
Introduction to Version Control with Git CSC/ECE 517, Fall 2014 A joint project of the CSC/ECE 517 staff, including Titus Barik, Gaurav Tungatkar, Govind.
1 GIT NOUN \’GIT\ A DISTRIBUTED REVISION CONTROL AND SOURCE CODE MANAGEMENT (SCM) SYSTEM WITH AN EMPHASIS ON SPEED. INITIALLY DESIGNED AND DEVELOPED BY.
Mtivity Client Support System Quick start guide. Mtivity Client Support System We are very pleased to announce the launch of a new Client Support System.
Team working in distributed environments M253 Communicating, Cooperating & Collaborating on Line Faculty of Computer Studies Arab Open University Kuwait.
Sofia Event Center May 2014 Martin Kulov Git For TFS Developers.
Version Control System Lisa Palathingal 03/04/2015.
GIT.
Intro to Git presented by Brian K. Vagnini Hosted by.
GitHub and the MPI Forum: The Short Version December 9, 2015 San Jose, CA.
(1) Introduction to Continuous Integration Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Introduction to Git Yonglei Tao GVSU. Version Control Systems  Also known as Source Code Management systems  Increase your productivity by allowing.
CS 160 and CMPE/SE 131 Software Engineering February 16 Class Meeting Department of Computer Science Department of Computer Engineering San José State.
It’s not just an insult from Harry Potter!. What is Git? Distributed Version Control System (DVCS) – Compared to a Centralized Version Control System.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Introduction to Git - Chirag Dani. Objectives Basics of Git Understanding different “Mindset of Git” Demo - Git with Visual Studio.
Git How to 1. Why Git To resolve problems in lab exams (accidental deletions) Use existing Libraries with ease (Statistics and Computer) Prepare undergraduates.
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Git workflows: using multiple branches for parallel development SE-2800 Dr. Mark L. Hornick 1.
Git A distributed version control system Powerpoint credited to University of PA And modified by Pepper 28-Jun-16.
GIT Version control. Version Control Sharing code via a centralized DB Also provides for Backtracking (going back to a previous version of code), Branching.
Git Girish Git VCS that I have used ClearCase, cvs, svn Happy p4 user.
CS5220 Advanced Topics in Web Programming Version Control with Git
Source Control Systems
LECTURE 2: Software Configuration Management
Version control, using Git
CS5220 Advanced Topics in Web Programming Version Control with Git
Software Engineering for Data Scientists
Macaualy2 Workshop Berkeley 2017
Distributed Version Control with git
LECTURE 3: Software Configuration Management
X in [Integration, Delivery, Deployment]
Getting Started with Git and Bitbucket
Using Github.
Git CS Fall 2018.
GitHub and Git.
GitHub 101 Using Github and Git for Source Control
Git Fundamentals.
Git Introduction.
Using GitHub for Papyrus Models Jessie Jewitt – OAM Technology Consulting/ ARM Inc. January 29th, 2018.
Presentation transcript:

OPNFV DEVELOPER TOOLS

Agenda Setting the Context What we expect from you Part I – OPNFV Developer Tools at a Glance Part II - OPNFV Developer Workflow Quick Look Part III - Hands on

Setting the Context This presentation is about Which developer tools we have Frequently used terms by tools Typical OPNFV developer workflow How the tools fit in our workflow This presentation will not talk about Technical details of the tools Relations with/workflow towards upstream projects By following this presentation you will Learn how to use the OPNFV Tool Set to work on projects Be able to follow the developer workflow while working with OPNFV projects

What do we expect Ask questions... Give feedback... even though we can't guarantee we answer all of them on the spot – we guarantee to come back with answers though! Give feedback... so we can define/adjust the WOW which suits us as community and enables the smooth flow rather than becoming a blocker! Don't just watch it like a demo... instead, follow the steps and try them on your computer while we are doing hands on. WOW: Way of Working

Prerequisites Read about the OPNFV Developer Tools https://www.opnfv.org/developers/tools Obtain an account from the Linux Foundation https://wiki.opnfv.org/developer/getting_started Have access to a computer with a web browser and ability to install software. Install Git client and git-review to your computer. Add your SSH public keys to Gerrit https://gerrit.opnfv.org/gerrit/#/settings/ssh-keys https://wiki.opnfv.org/developer https://wiki.opnfv.org/developer/projects_abc https://wiki.opnfv.org/developer/getting_started

OPNFV Tools at a Glance Jira Gerrit Git Jenkins Artifact Repository Wiki Etherpad Mailing List MeetBot

Further reading/references Issue tracking tool proprietary provided by Atlassian has a simple UI and relatively simple usage comparing with other similar tools Typical workflow Create issue Prioritize Link with other issues if/as relevant Assign Work Resolve Close Further reading/references https://confluence.atlassian.com/display/JIRA/JIRA+Documentation Using Jira and creating backlog will improve overall visibility of issues/work that is left to do. This will also make inter-project dependencies more visible. Jira is a highly configurable tool. What is described in this and following slides reflects the default setup.

Issue Types – other types exist! Epic Story Subtask Bug Create issues with clear Definition of Done (DoD). Issue Linking – other relations exist! Blocks/Blocked by Depends/Depended on by Relates to Labeling Attach labels for marking issues for milestones Main Issue Types in Jira Epic: Epics simply are large user stories. Completion of an Epic can span to multiple sprints. Epics can also be used for grouping related stories together. Story: Stories are main work items in Jira and expressed using non-technical words. They are written from ”user” point of view and the usual format is As a ..., I want ... so that I can ... As an OPNFV community member, I want Fuel build automated so that I can easily execute the build. Estimation and prioritization are done based on stories. Subtasks: Work unit contained in a user story. User stories can be divided 0 or more subtasks and work can be done. Bug: Bug implements a fix. Issue Linking Dependencies between different issue on Jira can be made visible by linking related issues together. For example for CI to build something, it needs an input from BGS. The stories can be created in this way. ”CI Fuel Daily Build” depends on ”BGS Fuel Build Automation” Blocks/Blocked by can also be used for higlighting similar dependencies. Labeling Issues can be labelled in order to mark them for specific reasons. Labels can indicate milestones, features, and so on and can be used for creating custom Jira queries or easily finding all the issues related to ”something”.

OPNFV Developer Workflow Highlight git clone in the slide git clone is the first thing to do when starting to work on a project. If you already cloned repo(s) you want to work with, git pull should be enough. Many details are neglected in this flow. See below for all the steps. Commit Flow Steps 1 to 6 are needed once. Registration Create LF ID (No Special Characters in username for Gerrit compatability, Please use company email) Email C  from your company email with name of project(s) you would like to contribute to Sign in to gerrit using LF credentials and add your keys   Sign the agreement Set up git Clone the repo(s) you might want/need to work with (and set up hooks if they're not set up while cloning the repo) Install git review Configure git review for each repo you cloned Sign in to Jira using LF credentials Assign yourself to a story from Jira or create a new story  [Interactive Option] An Issue of type "Story" Called onboarding_$yourname If you think the story you're working on requires multiple patchsets, create subtasks per patchset and put subtask ID in commit message as listed in step 12.1.  [Interactive Option] Create Subtask: Add $yourname and a few goals to your_repo/Onboard.txt (better name?) Set story to "In Progress" Pull latest changes Do your work in git and commit Don't forget to add JIRA ID, this must either be the ID of a story or subtask you created/assigned yourself on step 8.1.1. Do not add Epic IDs into commits or they will get -2 from reviewers [Interactive Option] Add your name and a few goals you have for your project to Onboard.txt git-review (opnfv-helpdesk@rt.linuxfoundation.org must have responded to your request for this step to work, ping aricg on freenode to expedite) Login to Gerrit and find your change Add reviewers Wait for Jenkins commit gate verification If it fails, navigate to Jenkins and check the console log If the failure is because of the commit itself, go back to step 11 and fix the problem If the failure is due to issues with the CI FW/environment, add a new comment to your patchset on Gerrit with either one of the keywords "recheck" or "reverify" to retrigger the verification. If it passes, wait for reviews Go back to Step 11 if reviewers request corrections/updates and amend your commit Submit your change for merge when you get review +2/verified Set the corresponding story in Jira to "Resolved" and then "Closed". (Jira-its plugin will do this automatically once its fully setup) Reviewer Flow Please be constructive with your reviews/comments and provide reasons clearly if you -1/-2d. Find the commit you want to review by logging into Gerrit either using the link from the mail you received from Gerrit or by going to Gerrit directly. If the commit gate tests have not been completed yet, please wait for their completion before starting with your review. Checkout the patchset if you want to try yourself in your environment by copying the link from the page. If you think the commit is good to go and if you are the first reviewer, give +1. If there is one or more +1(s) before and if you are a committer in the project, give +2. If you think the commit is not good Give -1 if it needs small changes such as not having a good commit message or code requires cosmetic changes. Give -2 if you think it is buggy, could break stuff, or it has reference to an Epic on JIRA and so on. Please note that -2 is blocker. The code can't get merged until the person(s) who -2d the commit amends their vote. Workflow to Update Jenkins Jobs The workflow is almost same as Basic Developer Workflow except the context. One must have knowledge regarding Jenkins Job Builder in order to do updates.   Please send request to Octopus Team if you want a separate session to be organized. * This is the starting point if you don’t already have a clone of the repo. Highly influenced by/stolen from OpenStack and modified for OPNFV.

Further reading/references Code review tool. open source created by Google fork of Rietveld Typical workflow If you are the committer Push your changes to Gerrit Add reviewers and wait for reviews Send new patchset or submit to master If you are a reviewer Do the review Provide feedback and vote Further reading/references https://gerrit-documentation.storage.googleapis.com/Documentation/2.11/index.html

Configuring Gerrit for first use Gerrit username is your LF username. See it from below link. https://gerrit.opnfv.org/gerrit/#/settings/ Add your SSH public keys https://gerrit.opnfv.org/gerrit/#/settings/ssh-keys Configure watched projects to get notifications https://gerrit.opnfv.org/gerrit/#/settings/projects Get the commands to clone the repos Go to projects page https://gerrit.opnfv.org/gerrit/#/admin/projects/ Click the project name Click ”clone with commit-msg hook” Copy the command and execute it on console

How Gerrit knows different patchsets are related Change Pushing a commit with a new Change-Id Changes could contain multiple patchsets Patchset Modify an existing change without pushing a new change How Gerrit knows different patchsets are related Change-Id Do not add Change-Id or modify existing one manually! Reviewing, commenting, voting -2, -1, +1, +2, verified -2 is blocker and sticky until the reviewer changes it +2 means change could be submitted +1 + +1 != +2

Review/Merge Etiquette A real review must have happened (ensure quality) Keep a patch open for at least 1 business day (interested reviewers might not live in the same time zone as you) If there is no real review in a couple of days - urge the team (your peers) to do a review (email, IRC, phone…) Note that everyone can perform a review “+2” as gateway of last resort (assuming you are a committer and very confident about your patch and the patch resolves a key issue/removes a key barrier) Once sufficient reviews are done and issues are resolved, allow the author (in case he/she is a committer) to merge/submit (assume that the author knows his code the best); an experienced committer of the project is an obvious alternate

Distributed version control system open source. created by Linus Torvalds. easy to learn and fast. Typical workflow Clone the repo Do your work Pull/fetch & rebase/merge Add & commit Amend Push Further reading/references http://git-scm.com/book/en/v2 Workflow shown in this and coming slides are not specific to OPNFV. They are simple Git workflows.

How to see what remotes you have Getting ready to work clone a repository from remote use Gerrit to copy needed commands for repo you want to work with everyone keeps full history of repo -> possible to work offline. What is ”remote” git doesn’t have central server like subversion aliases for all the repositories that are remote to you What is ”clone” copy of remote repository How to see what remotes you have git remote –v What is ”origin” alias for original repository where you got your clone – set by git Cloning is one time operation - unless you want to have multiple clones of same repo for certain reasons.

File states in git repository Start working changing the state of files modify existing files add new files remove existing files File states in git repository tracked: files that were in last snapshot – git tracks changes on them untracked: everything else – git doesn’t track them until you want otherwise

When you are done with your work Look what changes you have done Stage your changes How to see what changes I made git status What is ”staging” prepare the conditions for committing your changes. git add <path to file> git add –A = git add . && git add –u git add –A -> stage all git add . -> stage new and modified but not deleted git add –u -> stage modified and deleted

So you think you are good to go, but wait, final touches Commit your changes git commit -sv So you think you are good to go, but wait, final touches Amend the commit git commit -sv --amend Make sure to pull latest changes from remote and replay your changes on top of it using rebase git pull --rebase Share your work with others by pushing to origin git review Amending is used for submitting a new patchset for an existing change that received reviews. OPNFV uses git review so git push is not applicable to OPNFV. commit message guidelines Provide a brief description of the change in the first line. Insert a single blank line after the first line. Provide a detailed description of the change in the following lines. Use breaking paragraphs where needed. The first line should be limited to 50 characters; should be written in present tense; and should not end with a period. Subsequent lines should be wrapped at 72 characters. Use present tense. Add Jira issue no. (format JIRA: XYZ-12345)

Commit Message Etiquette Brief description Title: 50 chars max Add new base for common puppet modules Intent of this commit is to be a common place where we can contain a common set of puppet modules that installers should leverage when installing/configuring OPNFV target system. JIRA: BGS-23 Change-Id: I3a694b05a35a6e6025489b74c7bb38256dd84f12 Signed-off-by: Tim Rozet <trozet@redhat.com> Blank line Detailed description Jira reference Sign-off with name and email Example commit message Commit message: Provide a brief description of the change in the first line. Insert a single blank line after the first line. Provide a detailed description of the change in the following lines. Use breaking paragraphs where needed. The first line should be limited to 50 characters and should not end with a period. Subsequent lines should be wrapped at 72 characters. Use present tense. Add Jira issue no. (format JIRA: XYZ-12345)

Other frequently used commands/terms/tools fetch merge log stash squash branch tag diff stripspace (remove trailing whitespaces etc.) diff --check (check for obvious things to fix prior to commit) ... Get help git <command> --help

Continuous Integration Tool open source created by Kohsuke Kawaguchi fork of Hudson Typical workflow Create jobs Enable triggers Let the job run Check the console log Further reading/references https://wiki.jenkins-ci.org/display/JENKINS/Meet+Jenkins

Jobs/Projects Build Build Results Master Slave Trigger runnable tasks that are controlled/monitored by Jenkins Build result of one run of a project Build Results successful, stable, unstable, broken/failed, completed Master Basic installation of Jenkins - where the Jenkins is deployed Slave computers to build projects on Trigger when and on what conditions a job should be triggered

OPNFV uses Jenkins Job Builder to create/configure jobs. You don’t need to login to Jenkins in order to modify jobs. Read more about Jenkins Job Builder from http://ci.openstack.org/jenkins-job-builder/ Take a look at existing OPNFV Jenkins Jobs from OPNFV Gerrit. https://gerrit.opnfv.org/gerrit/gitweb?p=releng.git

General purpose storage service provided by Google used as artifact repository Typical workflow Upload artifacts Browse artifacts Download artifacts Further reading/references https://cloud.google.com/storage/docs/overview

DokuWiki A wiki application to support documentation needs Open source Can upload images & files Supports many plug-ins In order to edit contents on wiki.opnfv.org, you need to have a Linux Foundation Account Can create an account @identity.linuxfoundation.org Content only as good as the level of community participation Please help keep contents up-to-date! Further reading/references https://www.dokuwiki.org/dokuwiki#

Web-based collaborative real-time editor Open source Typical workflow Anyone can start/create a new Pad Share the link with team members Anyone can update/contribute Further reading/references http://etherpad.org/

Web-based list management system Developed by MIT Further reading/references http://web.mit.edu/lists/mailman/ OPNFV’ technical mailing lists are open to anyone to join. More information on OPNFV’ technical mailing lists are available at https://wiki.opnfv.org/developer/getting_started?&#mailing_list

MeetBot OPNFV uses MeetBot to create and manage meeting minutes on IRC. See the details from https://wiki.opnfv.org/meetings/meetbot

Questions & Short Break

OPNFV Developer Workflow git clone is the first thing to do when starting to work on a project. If you already cloned repo(s) you want to work with, git pull should be enough. Many details are neglected in this flow. See below for all the steps. Commit Flow Steps 1 to 6 are needed once. Registration Create LF ID (No Special Characters in username for Gerrit compatability, Please use company email) Email C  from your company email with name of project(s) you would like to contribute to Sign in to gerrit using LF credentials and add your keys   Sign the agreement Set up git Clone the repo(s) you might want/need to work with (and set up hooks if they're not set up while cloning the repo) Install git review Configure git review for each repo you cloned Sign in to Jira using LF credentials Assign yourself to a story from Jira or create a new story  [Interactive Option] An Issue of type "Story" Called onboarding_$yourname If you think the story you're working on requires multiple patchsets, create subtasks per patchset and put subtask ID in commit message as listed in step 12.1.  [Interactive Option] Create Subtask: Add $yourname and a few goals to your_repo/Onboard.txt (better name?) Set story to "In Progress" Pull latest changes Do your work in git and commit Don't forget to add JIRA ID, this must either be the ID of a story or subtask you created/assigned yourself on step 8.1.1. Do not add Epic IDs into commits or they will get -2 from reviewers [Interactive Option] Add your name and a few goals you have for your project to Onboard.txt git-review (opnfv-helpdesk@rt.linuxfoundation.org must have responded to your request for this step to work, ping aricg on freenode to expedite) Login to Gerrit and find your change Add reviewers Wait for Jenkins commit gate verification If it fails, navigate to Jenkins and check the console log If the failure is because of the commit itself, go back to step 11 and fix the problem If the failure is due to issues with the CI FW/environment, add a new comment to your patchset on Gerrit with either one of the keywords "recheck" or "reverify" to retrigger the verification. If it passes, wait for reviews Go back to Step 11 if reviewers request corrections/updates and amend your commit Submit your change for merge when you get review +2/verified Set the corresponding story in Jira to "Resolved" and then "Closed". (Jira-its plugin will do this automatically once its fully setup) Reviewer Flow Please be constructive with your reviews/comments and provide reasons clearly if you -1/-2d. Find the commit you want to review by logging into Gerrit either using the link from the mail you received from Gerrit or by going to Gerrit directly. If the commit gate tests have not been completed yet, please wait for their completion before starting with your review. Checkout the patchset if you want to try yourself in your environment by copying the link from the page. If you think the commit is good to go and if you are the first reviewer, give +1. If there is one or more +1(s) before and if you are a committer in the project, give +2. If you think the commit is not good Give -1 if it needs small changes such as not having a good commit message or code requires cosmetic changes. Give -2 if you think it is buggy, could break stuff, or it has reference to an Epic on JIRA and so on. Please note that -2 is blocker. The code can't get merged until the person(s) who -2d the commit amends their vote. Workflow to Update Jenkins Jobs The workflow is almost same as Basic Developer Workflow except the context. One must have knowledge regarding Jenkins Job Builder in order to do updates.   Please send request to Octopus Team if you want a separate session to be organized. * This is the starting point if you don’t already have a clone of the repo. Highly influenced by/stolen from OpenStack and modified for OPNFV.

Hands on Session

Thank you!