Life Outside of TFS

Post on 12-Jan-2015

335 views 2 download

description

 

transcript

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

Life Outside of TFSAndrew Ochsner

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

Life Outside of TFSAndrew Ochsner

DISCLAIMER

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

About CSG

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

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

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

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

Agile Transformation

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

Waterfall

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

Scrum

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

Scaled Agile Framework (SAFe)

http://scaledagileframework.com/

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

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

Core Principles

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

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

Development Lifecycle

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

Development Lifecycle

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

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

Development Lifecycle

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

Issue Tracker

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

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

Demo

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

Jira – Issue Tracker

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

Jira – Issue Tracker

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

Jira – Issue Tracker

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

Issue Tracker

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

Developer Tools

`

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

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

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

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

CSGCopyDeps – SCM\LibraryManifest.xml

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

CSGCopyDeps

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

CSGVerifySolution

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

Developer Tools

`

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

Package Repositories

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

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)

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

Package Repositories

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

Source Code Control

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

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

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

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

Demo

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

Source Code Control

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

Continuous Integration

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

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

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

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

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)

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)

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

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

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

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.

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.

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

Demo

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

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

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

SQL Server Management Studio

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

Database Migrations

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

Database Migrations

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

Continuous Integration

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

Code Reviews

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

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

Demo

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

Code Reviews

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

We made it!

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

Questions?

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

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

Thanks!

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/