msdn live - ci using tfs11 & nuget

33
6/26/22 | SLIDE 1 www.realdolmen.co m CONTINUOUS INTEGRATION USING &

Upload: xavier-decoster

Post on 24-May-2015

2.280 views

Category:

Technology


1 download

DESCRIPTION

NuGet quickly became a very popular package management solution for .NET and has been around for some time now. The introduction of a central package repository and the integrated NuGet tooling suddenly made it a whole lot easier to improve certain ALM processes, proof of which can be found into the increasing rate at which many packages make it to the NuGet Gallery. At the same time, most businesses are struggling how to take optimal benefit from this while trying to avoid a situation commonly known as “dependency hell”. In addition, most are not anticipating or designing for failure by depending directly, which became painfully clear during a recent downtime of the NuGet Gallery. This session will provide you with guidance on how you can use both NuGet and TFS11 to take your development environment to the next level.

TRANSCRIPT

Page 1: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 1

www.realdolmen.com

CONTINUOUS INTEGRATION USING

&

Page 2: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 3

WHO AM I?

Xavier Decoster Antwerp, Belgium www.realdolmen.com Co-founder of MyGet.org Focus on ALM/Web http://www.xavierdecoster.com @xavierdecoster

Page 3: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 4

AGENDA

Continuous Integration Room for Improvement

Dealing with dependencies Versioning VCS issues Debugging

Package Management One step closer to Continuous Delivery?

1 + 1 = Optimize for Happiness

Page 4: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 5

CONTINUOUS INTEGRATION

Do you speak it?

Page 5: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 6

DISCLAIMER

Not saying “my way” must be “your way”

Non-optimal doesn’t mean wrong

Pointing out opportunities and alternatives

Page 6: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 7

CONTINUOUS INTEGRATION

Team members integrate their work frequently Each integration is verified by an automated

build (including tests)

Goal: Detect integration errors As quickly as possible!

Why? Reduce risks Deployable software at any time

Page 7: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 8

Developer

VCS

Build

Tests

Feedback

(OFTEN) NON-OPTIMAL SETUP

Most commonly encountered approach to CI

Automated Build triggered by VCS

All tests run every single time

Eventually someone looks at the CI outcome

Page 8: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 9

Developer

VCS

Build

Tests

Feedback

WHAT IF…

… compilation fails? Changes already in VCS! Entire team affected

… a test fails? Same story!

… no one noticed the CI failed? Kittens die!

Page 9: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 10

Developer

Build

Tests

Feedback

VCS

OPTIMIZE FOR HAPPINESS

Integrate first! Gated check-ins

Integration fails? Changeset rejected

Integration succeeds? Changeset committed

Every successful check-in is a reward for good work.

Page 10: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 11

Developer

Build

Tests

Feedback

VCS

OPTIMIZE FOR QUALITY

Code Analysis

Test Impact Analysis

Page 11: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 12

TFS11 – CI IMPROVEMENTS

Build Triggers

Page 12: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 13

TFS11 – CI IMPROVEMENTS

Supporting multiple test frameworks MSTest (built-in) xUnit (http://aka.ms/xunit-vs11) NUnit (http://aka.ms/nunit-vs11)

Visual Studio Unit Test Platform

MS-Test Manage

d

MS-Test-Native NUnit xUnit.n

et QUnit MORE!

Visual Studio Unit Test Explorer

Command Line Runner

TeamBuild Unit Test Activity

Page 13: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 14

VS11 – CI IMPROVEMENTS

Continuously Run Unit Tests

Separate Code Analysis Results window

Page 14: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 15

VS11 – CI IMPROVEMENTS

Tracking Builds

Page 15: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 16

VS11 – CI IMPROVEMENTS

Faster Feedback Dialog Prompt Auto-Reconciliation Toast notifications

Improved accessibility to builds Own recent builds overview Favorites! Filter definitions using search box

Page 16: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 17

TFS ONLINE (BETA)

Built upon Windows Azure “TFS in the Cloud”

Benefits Incremental feature upgrades Reduced timespan between major upgrades Setup & configuration by Microsoft Most of internal support & maintenance by Microsoft

Identity management Via Windows Azure ACS

Only Live ID at the moment Federation to come?

Page 17: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 18

DEALING WITH DEPENDENCIES

Page 18: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 19

DEPENDENCY HELL

“A term for the frustration of software users who have installed software packages which have dependencies on specific versions of other software packages.”

Page 19: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 20

REACTIONS

Reinventing the wheel We don’t need that dependency “If they can do it, we can do it, but better”

Marketing-driven versioning People are waiting for v2 to buy Let’s call it v7 Platform Update SP3 November Edition

KB2348063 RTW Refresh

What happened to reuse of components? We lost ownership of AssemblyVersion ?

Page 20: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 21

CAUSE AND EFFECT

Reference-by-source• “Needed for debugging”

syndrome• Found a bug and fixed it• Upgrade path: merges!

Reference-by-release• Use symbols for debugging• Report/Fix the bug and

submit a pull request• Clean upgrade path

Page 21: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 22

PACKAGEMANAGEMENT

Page 22: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 23

NUGET

NuGet Gallery 5000+ unique packages Within “2 clicks or 1 command” reach inside Visual

Studio

NuGet improved Discoverability Upgrade experience Reuse of software Reference-by-release + symbols for everyone

NuGet provides opportunities Dependency management Reach, discoverability & visibility of own packages

Page 23: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 24

VERSIONING

NuGet supports Semantic Versioning http://www.semver.org

Prerelease Tags: Alpha, Beta, RC, … (e.g. v1.0.0-RC) Note: precedence in alphabetic order!

Major Breaking changes

Minor Backwards compatible API additions/changes

Patch Bugfixes not affecting the API

Page 24: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 25

NUGET SUPPORTS SEMANTIC VERSIONING

But not entirely… NuGet doesn’t support 4th version number (build) for

prereleases 1.0.0-RC.32190

Caution: pick a scheme! Major.Minor.Patch[-Prerelease] Major.Minor.Patch[.Build]

Workaround: push CI packages to another feed, e.g. MyGet.org mark CI packages as prerelease when pushing to NuGet.org

– Remove Build number– Append Prerelease tag

Page 25: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 26

DEPENDENCIES VS VCS

In TFS terms: Source Control Today often contains

Documents Binaries Tools Scripts Sources

Struggling with binary diffs Merge conflicts

Repository size

Page 26: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 27

PACKAGE REPOSITORY

NuGet Package Repository Package Restore feature

Opportunity Get rid of binaries in VCS Decrease binary diff issues & merge conflicts Decrease VCS repository size Manage dependencies centrally Fine-grained packages = fine-grained dependencies

Page 27: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 28

IN OR OUT?

Your choice Have a strategy!

No-Commit? What if the package source goes down? What if a package got removed from the repository? Mirroring

Page 28: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 29

SOLUTION SETUP

Package RestorePackage & Symbols Publishing

Page 29: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 30

DEMO SUMMARY

Enable-PackageRestore

Install-Package NuSpec Install-NuSpec <project> -EnablePackageBuild Enable-PackagePush Set pkg src URL, symbols src URL, API-key

Easy package creation (IntelliSense) Automatic package building & versioning Automatic package & symbols pushing

Page 30: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 31

RESOURCES

Continuous Integration:http://martinfowler.com/articles/continuousIntegration.html

Team Foundation Service (Preview):http://tfspreview.com/ (ALM Rangers whitepaper)

Visual Studio 11 & TFS 11 (Beta):http://www.microsoft.com/visualstudio/11/en-us

NuGet: http://www.nuget.org

http://docs.nuget.org/docs/start-here/overview

MyGet: http://www.myget.org

SymbolSource: http://www.symbolsource.org

PM> Install-Package ProNuGet

Page 31: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 32

BONUS

http://bit.ly/mygetforfree

Page 32: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 33

Q&A

Page 33: MSDN Live - CI using TFS11 & NuGet

APRIL 12, 2023 | SLIDE 34

THANK YOU FOR JOINING

Xavier Decoster

http://about.me/xavierdecoster

http://www.xavierdecoster.com

@xavierdecoster