life outside of tfs

70
Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved. 1 Life Outside of TFS Andrew Ochsner

Upload: andrew-ochsner

Post on 12-Jan-2015

337 views

Category:

Technology


2 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.1

Life Outside of TFSAndrew Ochsner

Page 2: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.2

Life Outside of TFSAndrew Ochsner

DISCLAIMER

Page 3: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.3

About CSG

Page 4: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.4

About CSG

Business Support System (BSS) and Operational Support System (OSS) software• Product, Order, Billing, and Customer management• Inventory, Provisioning, and Job management• Primarily North America cable, satellite, and telecom companies• Expanding internationally• Hosted solution

Page 5: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.5

Code

10s of Millions of Lines of Code• Mainframe – Assembler, COBOL, JCL• Linux/Solaris – C/C++• Linux – Java• Windows – .NET/C#, C/C++, Java

Databases• SQL Server• Oracle• DB2 on Mainframe

Page 6: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.6

Code

10s of Millions of Lines of Code• Mainframe – Assembler, COBOL, JCL• Linux/Solaris – C/C++• Linux – Java• Windows – .NET/C#, C/C++, Java

Databases• SQL Server• Oracle• DB2 on Mainframe

Page 7: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.7

Agile Transformation

Page 8: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.8

Waterfall

Page 9: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.9

Scrum

Page 10: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.10

Scaled Agile Framework (SAFe)

http://scaledagileframework.com/

Page 11: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.11

CSG’s ALM Approach

Best in breed approach• Mostly an evolution – no big bang• Integrated what we had• Upgrade to better components as we find them

Solidifying around Atlassian Suite • Not Open Source but customers are allowed to view and modify

source• Integrates with many third party tools• Web based• Hosted or On Premise• Rich plugin ecosystem/marketplace• Open web-based APIs and SDKs

Page 12: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.12

Core Principles

Page 13: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.13

Core Principles

Have No Fear Trunk Based Development Continuous Integration

• Commit early• Commit often

Collective Code Ownership Demand ownership of failing builds Standardized project layout Dedicated System Team (ESM)

• Staffed with good developers

Page 14: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.14

Development Lifecycle

Page 15: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.15

Development Lifecycle

Page 16: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.16

Tools

Issue Tracking – Atlassian JIRA Source Code Control – VisualSVN (Subversion) Package Repository –Artifactory/NuGet Testing – NUnit & SpecFlow Database Migrations – CSG Tools Continuous Builds – Jenkins/NAnt/MSBuild Code Reviews – Atlassian Crucible Code Search – Atlassian Fisheye Installers - WiX Automated Deployments – BMC BladeLogic

Page 17: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.17

Development Lifecycle

Page 18: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.18

Issue Tracker

Page 19: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.19

Jira – Issue Tracker

Web based issue tracker created by Atlassian On-Premise or Hosted Very flexible custom fields and workflows

• Lots of third party plugins• Mobile app• Plugin SDK to build your own

Scrum and Kanban story boards EpicsFeaturesStoriesTasks Development and Production Defects Production Defects synchronize with Remedy IDE Integration Reports and Charts are lacking a bit

Page 20: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.20

Demo

Page 21: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.21

Jira – Issue Tracker

Page 22: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.22

Jira – Issue Tracker

Page 23: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.23

Jira – Issue Tracker

Page 24: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.24

Issue Tracker

Page 25: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.25

Developer Tools

`

Page 26: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.26

Developer Tools

Visual Studio Resharper VisualSVN – Visual Studio Subversion integration NUnit & SpecFlow CSG Developer Tools

• CSGCopyDeps – Copy dependencies – LibraryManifest.xml• CSGVerifySolution – Enforce Standard Project Layout• SqlServer Management Studio Addins for Database Migrations

Page 27: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.27

Developer Tools

Visual Studio Resharper VisualSVN – Visual Studio Subversion integration NUnit & SpecFlow CSG Developer Tools

• CSGCopyDeps – Copy dependencies – LibraryManifest.xml• CSGVerifySolution – Enforce Standard Project Layout• SqlServer Management Studio Addins for Database Migrations

Page 28: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.28

Standard Project Layout

Built Assemblies (not checked in)

Database Schema & Static Data

Dependencies (not checked in)Deploy configs and build script hooksSource code

Module specific build option settings

Module Solution File

Module Installer Solution File

Generated WSDL

Documentation

Page 29: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.29

CSGCopyDeps – SCM\LibraryManifest.xml

Page 30: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.30

CSGCopyDeps

Page 31: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.31

CSGVerifySolution

Page 32: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.32

Developer Tools

`

Page 33: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.33

Package Repositories

Page 34: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.34

Artifactory - Package Repositories

Need the ability to grab the build artifacts of any given version

Third party dependencies too! Don’t check binaries into Subversion Non .NET teams have same needs Eventually could replace CSGCopyDeps with NuGet

Page 35: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.35

Artifactory - Package Repositories

Artifactory Pro by JFrog• Supports NuGet (Pro), Ivy, Maven

Web Based & On-Premise or Hosted Stores CSG built packages along with version Acts as a remote proxy between build tool and external

galleries• Pin a package to a particular version• Governance around approved Third Party Software and

Licenses (Pro w/ BlackDuck integration)

Page 36: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.36

Package Repositories

Page 37: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.37

Source Code Control

Page 38: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.38

Subversion - Source Control

Subversion – Open Source Centralized Version Control Copy-Modify-Merge rather than Lock-Modify-Unlock Directories are first class objects, just like files Branching and Tagging are “cheap”

• Copy on Write Widespread adoption & integration with other tools No Stash/Shelve features

• We utilize a Branch

Page 39: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.39

Subversion - Source Control

VisualSVN Server – On Premise Subversion installation for Windows• ActiveDirectory integration

VisualSVN – Visual Studio Subversion Integration TortoiseSVN – Windows Explorer Integration

Page 40: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.40

Subversion - Source Control

VisualSVN Server – On Premise Subversion installation for Windows• ActiveDirectory integration

VisualSVN – Visual Studio Subversion Integration TortoiseSVN – Windows Explorer Integration

Page 41: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.41

Demo

Page 42: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.42

Source Code Control

Page 43: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.43

Continuous Integration

Page 44: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.44

Jenkins – Continuous Integration

Web-based, open source continuous integration server On-Premise or Hosted by Cloudbees Fork of Hudson project Tons of plugins to integrate with just about anything

• Write your own as needed Open APIs and command line tools to automate as

needed• JenkinsGenerator

One Master (Controller), Many Agents

Page 45: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.45

Jenkins – Continuous Integration

Polls Repository for changes Triggers builds Generate Reports off of build artifacts

• Emails• Test Results

Page 46: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.46

Jenkins – Continuous Integration

Polls Repository for changes Triggers builds Generate Reports off of build artifacts

• Emails• Test Results

Page 47: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.47

Common build - NAnt

Checkout source (done by Jenkins slave) Get dependencies via CSGCopyDeps (varies by build

type) Run CSGVerifySolution Build solution - MSBuild Run Tests

• Build system only runs tests that don’t hit external systems• Smoke test builds run all tests

Run Code Analysis (varies by build type) Build Installers Publish Artifacts

Page 48: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.48

Build Types

Every module has at least 3 builds• Daily Build (DSM)• Continuous Stable (CS)• Continuous Integration (CI)

Other build types• Smoke Test (SMOKETEST)• Continuous Stable Database (CSDB)• Database Restore (QRDB/PRDB)• Documentation (DOC)• Sonar (SONAR)

Page 49: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.49

Build Types

Every module has at least 3 builds• Daily Build (DSM)• Continuous Stable (CS)• Continuous Integration (CI)

Other build types• Smoke Test (SMOKETEST)• Continuous Stable Database (CSDB)• Database Restore (QRDB/PRDB)• Documentation (DOC)• Sonar (SONAR)

Page 50: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.50

Build Types – Daily Build

“The official build” Builds latest from SVN Uses dependencies officially staged from Package

Repository Results are staged into Package Repository CREATE and MIGRATION scripts also generated Triggered nightly

Page 51: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.51

Build Types – Continuous Stable

“Current build” Builds latest from SVN Uses dependencies from Package Repository

(dependency DSMs) Runs extra checks such as Code Analysis Results are not staged into Package Repository Triggered off of SVN commit or dependency DSM

Page 52: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.52

Build Types – Continuous Integration

“Tomorrow’s DSM” Builds latest from SVN Uses dependencies from latest CI of each module

dependency Results are not staged into Package Repository

• Go into a “sandbox” area to be used by other CI builds Triggered off of SVN commit or dependency CI

Page 53: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.53

Build Types

Build Type Description

Daily Build (DSM) Builds the latest of a module's branch/trunk, including database CREATE and MIGRATION SCRIPTs, using other modules officially staged assets as dependencies, results are officially staged. Triggered Nightly.

Continuous Stable (CS) Builds the latest of that module's branch/trunk, using other modules' officially staged assets as dependencies, results are not officially staged. Triggered by an SVN change.

Continuous Integration (CI) Builds module's trunk and uses the artifacts of the latest successful CI build for each consumed module. Triggered by an SVN change. Causes all down stream modules' CI builds to run.

Smoke Tests Owned by module teams. Takes built artifacts from CS build and runs entire test suite.

Page 54: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.54

Build Types

Build Type Description

Continuous Stable Database (CSDB)

Builds CREATE and MIGRATION script based off the latest of that modules branch/trunk

Database Restore Utilities (QRDB/PRDB)

Stands up a Production/QA database backup to a database server. Triggered by forcing the build and selecting various parameters.

Documentation (DOC) Runs like a DSM except it does not publish built artifacts. Builds documentation using Sandcastle and publishes the documentation as defined in the various projects.

Sonar (SONAR) A suite of tests are run under the SONAR framework and results are published for subsequent analysis. Triggered on a nightly schedule but can also be forced.

Page 55: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.55

Demo

Page 56: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.56

Database Migrations

Built by CSG years ago• Similar in functionality to Database Projects or RoundhousE

Databases are versioned alongside code Standard folder layout (DbGhost) SQL Server Management Studio plugins Build to Build migrations (CSDB)

• Generates CREATE.sql and MIGRATION.sql• Validate consistency (RedGate SQL Compare)

CSGExecuteMigration• Inspects Version table• Applies subsequent migrations

Page 57: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.57

Database Migrations

Change Scripts go hereCreate Scripts go here

Page 58: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.58

SQL Server Management Studio

Page 59: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.59

Database Migrations

Page 60: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.60

Database Migrations

Page 61: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.61

Continuous Integration

Page 62: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.62

Code Reviews

Page 63: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.63

Crucible & Fisheye - Code Reviews

Web-based built by Atlassian On Premise or Hosted Source code browser - Fisheye Source code search engine – Fisheye Code review tool – Crucible Integrates with SVN and a few other source code control

systems

Page 64: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.64

Demo

Page 65: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.65

Code Reviews

Page 66: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.66

We made it!

Page 67: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.67

Questions?

Page 68: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.68

Extras

BMC BladeLogic – Automated Deployments Atlassian Confluence – wiki

• Designs WiX - Installers Configuration Migrations – CSG built (XSLT) Build History website – CSG built Sonar – Build Analysis Git/Stash/SourceTree – Distributed Version Control

• SubGit syncs with Subversion

Page 69: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.69

Thanks!

Page 70: Life Outside of TFS

Copyright © 2013 CSG Systems International, Inc. and/or its affiliates (“CSG International”). All rights reserved.70

Trunk Based Development

http://paulhammant.com/2013/04/05/what-is-trunk-based-development/