CI/CD Workflow and Event Pages

Slides:



Advertisements
Similar presentations
EpSOS Industry Team and OpenNCP Community Workshop OpenNCP Development Tools, Integration and Testing Arrangements Marcelo Fonseca Software Developer
Advertisements

Version Control What it is and why you want it. What is Version Control? A system that manages changes to documents, files, or any other stored information.
Source Control Repositories for Enabling Team Working Svetlin Nakov Telerik Corporation
Patterns & practices Symposium 2013 Introducing Git version control into your team Mark
European Organization for Nuclear Research Source Control Management Service (Subversion) Brice Copy, Michel Bornand EN-ICE 13 May 2009.
DNN LOVES JENKINS FOR CONTINUOUS INTEGRATION
Automating Drupal Deployment Dominique De Cooman.
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.
Tools and software process for the FLP prototype B. von Haller 9. June 2015 CERN.
DevOps Jesse Pai Robert Monical 8/14/2015. Agile Software Development 8/14/2015© 2015 SGT Inc.2.
Version control Using Git Version control, using Git1.
1 SEG4912 University of Ottawa by Jason Kealey Software Engineering Capstone Project Tools and Technologies.
SWEN 302: AGILE METHODS Roma Klapaukh & Alex Potanin.
Object-Oriented Analysis & Design Subversion. Contents  Configuration management  The repository  Versioning  Tags  Branches  Subversion 2.
Computer Science and Engineering The Ohio State University  Widely used, especially in the opensource community, to track all changes to a project and.
Continuous Integration and Code Review: how IT can help Alex Lossent – IT/PES – Version Control Systems 29-Sep st Forum1.
INFSO-RI Enabling Grids for E-sciencE SCDB C. Loomis / Michel Jouvin (LAL-Orsay) Quattor Tutorial LCG T2 Workshop June 16, 2006.
Version Control System Lisa Palathingal 03/04/2015.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Build and Deployment Process Understand NCI’s DevOps and continuous integration requirements Understand NCI’s build and distribution requirements.
ATS code development workflow Group Name: TST WG Source: Mahdi Ben Alaya, TST WG vice chair, SENSINOV, Miguel.
TEAM FOUNDATION VERSION CONTROL AN OVERVIEW AND WALKTHROUGH By: Michael Mallar.
Introduction to Git - Chirag Dani. Objectives Basics of Git Understanding different “Mindset of Git” Demo - Git with Visual Studio.
Software collaboration tools as a stack of services Borja Aparicio Cotarelo IT-PES-IS 2HEPiX Fall 2015 Workshop.
1 Ivan Marsic Rutgers University LECTURE 2: Software Configuration Management.
SCDB Update Michel Jouvin LAL, Orsay March 17, 2010 Quattor Workshop, Thessaloniki.
BIT 285: ( Web) Application Programming Lecture 07 : Tuesday, January 27, 2015 Git.
Introduction Aaron Day ● Software Architect ● Open Solutions Interests and Hobbies ● Family ● Software Development ● Woodworking ● Gaming ● Shooting.
CompSci 230 Software Construction
CS5220 Advanced Topics in Web Programming Version Control with Git
Source Control Systems
Joonas Sirén, Technology Architect, Emerging Technologies Accenture
Open-O Integration Project Introduction
Git and GitHub primer.
LECTURE 2: Software Configuration Management
GitHub workflow according to Google
Trends like agile development and continuous integration speak to the modern enterprise’s need to build software hyper-efficiently Jenkins:  a highly.
Version control, using Git
File Version Control System
CS5220 Advanced Topics in Web Programming Version Control with Git
4th Forum How to easily offer your application as a self-service template by using OpenShift and GitLab-CI 4th Forum Alberto.
Development and Deployment
Quality Control in the dCache team.
Software Engineering for Data Scientists
Building a Continuous Integration Pipeline using VSTS
CS427: Software Engineering I
SU Development Forum Introduction to Git - Save your projects!
Akshay Narayan git up to speed with RCS Akshay Narayan
Version Control with git
LECTURE 3: Software Configuration Management
Collaboration Work Flow with Git
Simplified Development Toolkit
Automated Testing and Integration with CI Tool
Continuous deployment best practices, methods and tools.
Git Best Practices Jay Patel Git Best Practices.
Lambda CI/CD Pipelines
JENKINS TIPS Ideas for making your life with Jenkins easier
Git CS Fall 2018.
Version Control System - Git
Version Control with Git
Patrick Cozzi University of Pennsylvania CIS Fall 2012
DEVOPS & THE FUTURE OF TESTING
Git Introduction.
Git GitHub.
Introduction to The Git Version Control System
Erik Vollebekk Application Architect
Overview on CI Use JJB (Jenkins Job Builder) to manage Jenkins jobs.
Presentation transcript:

CI/CD Workflow and Event Pages NetOpsIX - Developer’s Workshop Jeremy Fee <jmfee@usgs.gov>

CI/CD Workflow Development Deployment Coding Standards Build Tools Version Control Versioning Planning Deployment

Coding Standards Pick one as a group Tools Document, or just pick an existing standard Tools Code Linting Code Rewriting autopep8 clang-format google-java-format go fmt “Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code ... making it easy to read makes it easier to write.” - Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship

Build Tools Build is more than just compile Examples Compile Linting Tests (Unit and Integration) Coverage Examples Angular CLI / Grunt, Jasmine, Karma Ant, Cobertura, Junit Make, ...

Version Control CVS Git Subversion Decentralized Working copy is entire repository history Works offline Subversion Requires access to central server Working copy is only current revision

Version Control - Git Forking workflow Do not commit to master branch Simpler access control Simpler collaboration Pull requests Do not commit to master branch https://guides.github.com/activities/forking/

Git - Pull Request Manual review checkpoint Reference GitHub issues Discuss comments Automatically check incoming code Travis CI Check coding standards Compile Run unit tests Upload code coverage Codacy

Git - Rebase Apply same changes starting at different point Update Master Branch git checkout master git pull --ff-only upstream master Rebase against Master Branch git checkout branchX git rebase master https://git-scm.com/book/en/v2/Git-Branching-Rebasing

Versioning Semantic Versioning (major.minor.bugfix) Git tag Major - incompatible changes Minor - add new features Bug fix - fix existing features Git tag git tag -am vX.Y.Z vX.Y.Z Subversion tag svn copy ^/project/trunk ^/project/tags/vX.Y.Z

GitHub Releases Based on Git tags Add release notes Attach binaries

Planning Waffle Board Sprints Alternatives Uses Git Issues Columns map to Issue Labels Sprints Alternatives GitLab, JIRA

Deploy Automation Manual deploys Automated deploys Acceptance testing Code review Deployment planning Scheduled downtime? Automated deploys Same problems Test, Plan, Review incrementally Automate to avoid manual errors

Deploy Automation - Crontab Pull code/configuration changes Always use --ff-only Different branches for different environments master => staging production => production Doesn’t easily support More complex builds Build status reporting

Deploy Automation - Puppet Manually create PDL releases Pull request for puppet environment project Puppet master deploys Configuration via ERB template Init Script ProductClient.jar Restart services when config changes On hubs, EIDS configuration and services

Deploy Automation - Jenkins Separate build/deploy pipelines Jenkinsfile for build with source Jenkinsfile for deploy in separate repository Vulnerability checks Nightly patching

Jenkins Build master automatically triggers build Deploys to staging Manually deploy release tags to production

Zero-downtime Deploy Docker Stack/Swarm Deploy Canary Deploy Active Health/QC checks Update routing to Canary Deploy Active Revert routing to Active Clean up

Continuous Improvement It doesn’t happen overnight Improve coding standards When working on code Add tests To reproduce bugs Automate deployments Triggered when a button is clicked

Event Pages Improving Scalability Improving CI/CD pipelines Angular framework Client side data access ShakeMap code reuse Improving CI/CD pipelines https://github.com/usgs/earthquake-eventpages https://waffle.io/usgs/earthquake-eventpages https://dev-earthquake.cr.usgs.gov/beta/earthquakes/eventpage

Questions? Thank You