CICD pipeline for your extensions with Visual Studio Team Services

Similar documents
DevOps Using VSTS and Azure

Index. Chaminda Chandrasekara 2017 C. Chandrasekara, Beginning Build and Release Management with TFS 2017 and VSTS, DOI /

Azure Developer Immersion Getting Started

FROM VSTS TO AZURE DEVOPS

Conventional Development. Manual Build process. Release Manager Testing Team. Developer Branch. Execute Manual /Automation tests.

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Time Machine Web Console Installation Guide

G, H I, J K, L. Git distributed version control system, 67 repository, 67 TFS, 68 GitFlow, 76 77

Sample Spark Web-App. Overview. Prerequisites

Roxen Content Provider

I keep hearing about DevOps What is it?

Visual Studio Team Services

How to Build an Appium Continuous Testing Pipeline

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

Hands-On Lab. Authoring and Running Automated GUI Tests using Microsoft Test Manager 2012 and froglogic Squish. Lab version: 1.0.5

Disclaimer This presentation may contain product features that are currently under development. This overview of new technology represents no commitme

Hands-On Lab. Getting Started with Git using Team Foundation Server Lab version: Last updated: 12/30/2013

Hands-On Lab. Agile Planning and Portfolio Management with Team Foundation Server Lab version: Last updated: 11/25/2013

Turbo boost your digital app test automation with Jenkins

Continuous Delivery at Liferay A fast lane for your software updates. Rubén Eduardo

Research Faculty Summit Systems Fueling future disruptions

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

How Can Testing Teams Play a Key Role in DevOps Adoption?

Azure Application Deployment and Management: Service Fabric Create and Manage a Local and Azure hosted Service Fabric Cluster and Application

LEVERAGING VISUAL STUDIO TEAM SYSTEM 2008 Course LTS08: Five days; Instructor-Led Course Syllabus

Introduction to Git and GitHub for Writers Workbook February 23, 2019 Peter Gruenbaum

Introduction to the Azure Portal

Modern Requirements4TFS 2018 Update 1 Release Notes

Lab 3. On-Premises Deployments (Optional)

Developer Cockpit. Introduction 1. Prerequisites 2. Application Lifecycle in MindSphere 3. User interfaces "Developer Cockpit" 4

Exercise 1. Bluemix and the Cloud Foundry command-line interface (CLI)

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Test Automation Strategies in Continuous Delivery. Nandan Shinde Test Automation Architect (Tech CoE) Cognizant Technology Solutions

Developing Intelligent Apps

JetBrains TeamCity Comparison

Strengthen and Scale security using DevSecOps

Index. Wouter de Kort 2016 W. de Kort, DevOps on the Microsoft Stack, DOI /

Oracle Solaris 11 Virtualization

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

LPF Training Handbook!

What s new in IBM Operational Decision Manager 8.9 Standard Edition

Getting Started with ESX Server 3i Installable Update 2 and later for ESX Server 3i version 3.5 Installable and VirtualCenter 2.5

WHITEPAPER. Database DevOps with the Redgate Deployment Suite for Oracle

Deep Dive on AWS CodeStar

Mendeley Help Guide. What is Mendeley? Mendeley is freemium software which is available

Lab 9: Global Configurations

Getting Started with ESX Server 3i Embedded ESX Server 3i version 3.5 Embedded and VirtualCenter 2.5

Tutorial: Modify UI 01 How to Load a UI Canvas Using Flow Graph

Web Sites in Production

Table of Contents HOL-1701-CHG-5

TECHNICAL WHITE PAPER AUGUST 2017 REVIEWER S GUIDE FOR VIEW IN VMWARE HORIZON 7: INSTALLATION AND CONFIGURATION. VMware Horizon 7 version 7.

OpenShift Roadmap Enterprise Kubernetes for Developers. Clayton Coleman, Architect, OpenShift

Table of Contents. Concepts

DevNet Workshop-Hands-on with CloudCenter and Jenkins

Integrating with Microsoft Visual Studio Team System. For Borland CaliberRM Users

Tasktop Sync - Cheat Sheet

Last Updated: FRC 2019 BETA

Continuous Integration (CI) with Jenkins

emam and Adobe Premiere Panel Guide

Participant Handbook

From development to production

Organize. Collaborate. Discover. All About Mendeley

White Paper(Draft) Continuous Integration/Delivery/Deployment in Next Generation Data Integration

APAR PO06620 Installation Instructions

SAS Model Manager 2.2. Tutorials

Release Notes August 2016

Netflix OSS Spinnaker on the AWS Cloud

DevOps Agility in the Evolving Cloud Services Landscape

User s Guide

Build the application using Rational Build Forge

Azure for On-Premises Administrators Practice Exercises

Version 6.1 Release Notes and Installation Guide

Tutorial: How to Load a UI Canvas from Lua

[ Getting Started with Analyzer, Interactive Reports, and Dashboards ] ]

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)

CONFIGURING SAFE V4.0 IN THE IBM COLLABORATIVE LIFECYCLE MANAGEMENT

CONTINUOUS DELIVERY IN THE ORACLE CLOUD

Working with the Remote Console for the Remote Support Platform

CST8152 Compilers Creating a C Language Console Project with Microsoft Visual Studio.Net 2005

Lab 2: Adding a Rhapsody Model to RMM

Handel-CodePipeline Documentation

AccuBridge for IntelliJ IDEA. User s Guide. Version March 2011

Lab 1: Adding a Rhapsody Model to RMM

Managing your content with the Adobe Experience Manager Template Editor. Gabriel Walt Product Manager twitter.com/gabrielwalt

CollabNet TeamForge 5.3 Evaluator s Guide

eb ProjectWise Connection Services

How to set up SQL Source Control The short guide for evaluators

Open Telekom Cloud Tutorial: Getting Started. Date published: Estimated reading time: 20 minutes Authors: Editorial Team

Using the vrealize Orchestrator Operations Client. vrealize Orchestrator 7.5

CloudHealth. AWS and Azure On-Boarding

Online Remote Repositories

Eclipse Plug-in for AccuRev User s Guide Version April 2012

Continuous Integration / Continuous Testing

Version Control for PL/SQL

Tutorial: Creating a Gem with code

NSP Release Information. News in NSP (from NSP )

IBM Rational SoDA Tutorial

Modern Requirements4TFS Installation Guide

CASE STUDY IT. Albumprinter Adopting Redgate DLM

BUYWAYS Shopping Created on 9/26/2014 4:22:00 PM

Transcription:

2017-10-11 8:11:00 AM - v2 rev2 CICD pipeline for your extensions with Visual Studio Team Services AUTHORS REVIEWERS TESTERS Willy Schaub Dave McKinstry, David Sanchez Aguilar, Derek Keeler, Hosam Kamel, Marcus Fernandez, Mikael Krief

Table of Contents Abstract... 2 Important advisory... 2 Objectives... 2 Prerequisites... 3 Exercise 1 (optional): Review pre-requisites... 4 Exercise 2: Initialize your Git repository... 6 Exercise 3: Create a publisher... 8 Exercise 4: Create a service endpoint to the Marketplace... 9 Exercise 5: Create a continuous integration (CI) build... 15 Exercise 6: Create a continuous delivery (CD) release... 24 Exercise 7: Trigger a change... 36 Exercise 8: (optional) Explore unit testing and code coverage... 40 DEPRECATED Exercise 6: Create a continuous delivery (CD) release using old editor... 41 Abstract A step by step tutorial to show you how to set up continuous integration and deployment pipeline for an extension using Visual Studio Team Services (VSTS). This lab is focused on the Ops in DevOps, not the development of extensions. Important advisory As the Visual Studio Team Services are updated regularly, based on a 3-week cadence, some of the screenshots are likely going to be out-of-date by the time you re working through the lab. Please use every screenshot for reference only and adapt your walk-through as needed. Objectives As a result of working through this hands-on lab, you will be better able to: Create a continuous integration and delivery pipeline for my extensions Understand how to automate my CI/CD pipeline Deliver continuous value to the marketplace 2

Prerequisites You should: Be interested in DevOps practices. Be familiar with Visual Studio Team Services (VSTS). Have a non-production VSTS account, with administrative privileges. Have a non-production and unverified Visual Studio Marketplace publisher account Don t worry if you don t have a VSTS account or a Visual Studio marketplace account we will help you create them. 3

Exercise 1 (optional): Review pre-requisites 1.1 DevOps and Pipelines Complete this optional exercise if you re unfamiliar with DevOps, Continuous Integration (CI), Continuous Delivery (CD), CICD Pipelines, or VSTS Extensions. 1. Open your favorite browser 2. DevOps 3. Pipelines 4. Extensions 1.2 VSTS Account Go to aka.ms/whatisdevops Explore What Is DevOps Explore What is Continuous Integration Explore What is Continuous Delivery Go to aka.ms/cicdpipelines Explore Set up a CI/CD pipeline with unit testing and code coverage for your Team Services extension, which forms the basis of this hands-on lab Go to docs.microsoft.com/en-us/vsts/extend Explore the How-to-guides section, including the Packaging and publishing section Complete this exercise if you do not have a VSTS account to use for this hands-on lab. Do NOT use a production account for this hands-on lab. 1. Getting started for free with Visual Studio Go to www.visualstudio.com and sign in Click on Get started for free under Visual Studio Team Services Click on Create new account 4

Pick a memorable and unique name, for example TECH-DEV-HOL201- youralias, select Git, and optionally change your Project Name, process, and hosting region Click on Continue and wait for your new account to be created Congratulations, you re done with the pre-requisites. Let s get some code to explore, build, and release. 5

Exercise 2: Initialize your Git repository Use the new VSTS account and team project you created during exercise 1, for example MyFirstProject, or a new team project in your own (non-production) account. 1. Import a sample repository Click on import a repository on the Get started with your new project home page Click on Import 6

Set the Clone UR to https://github.com/alm-rangers/countdown-widget- Extension and click on Import Wait for import to complete Optionally explore the extension code Congratulations, you have a copy of the Countdown Widget Extension in your Git repository. Let s create a marketplace publisher. 7

Exercise 3: Create a publisher Every item on the Visual Studio Marketplace, including extensions, belong to a publisher. You need a publisher to publish the extension we imported in the precious exercise to the marketplace. If you already have a publisher, proceed to exercise 4. Do NOT use a production or verified publisher for this hands-on lab. 1. Create a publisher Open a new browser tab Go to https://docs.microsoft.com/en-us/vsts/extend/publish/overview Follow the instructions and create a new publisher Congratulations, you now have a marketplace publisher. Let s create a service endpoint to connect the marketplace. 8

Exercise 4: Create a service endpoint to the Marketplace We need to create a service endpoint that connects your Team Project with your Marketplace publisher. 1. Create personal access token Open a new browser tab Go to https://docs.microsoft.com/en-us/vsts/extend/publish/command-line Follow the instructions and acquire a personal access token Copy your generated personal access token. We ll need it for the next exercise. 9

2. Install VSTS Developer Tools Click on icon ❶, then click on Account settings ❷ Click on Extensions Click on Browse Marketplace Search for VSTS Developer Tools Click on VSTS Developer Tools 10

Click Install Select your VSTS account ❶ and click Continue ❷ Wait for validation to succeed and click Confirm 11

Click on Proceed to the account 3. Create service endpoint Click on your team project, for example MyFirstProject Click on icon ❶, then click on Services ❷ 12

Click on New Service Endpoint ❶ and select VSTS Marketplace ❷ Specify a Connection name ❶, paste your personal access token ❷ you created at the beginning of this exercise, and click OK ❸ 13

Click on your team project, for example MyFirstProject, and click on MyFirstProject Home Congratulations, you now have completed the mind numbing setup of the infrastructure. It s a once-off setup and you ll be able to re-use the infrastructure for all your CI/CD pipelines in your Team Project of your VSTS account. Looking for ways to automate the setup of this infrastructure? Explore https://github.com/darquewarrior/generator-team 14

Exercise 5: Create a continuous integration (CI) build We need to create a build that is triggered with every check-in, starting with a build and package of our extension. 1. Create empty process build Click on Set up Build Choose an empty process 2. Configure continuous integration (CI) Click on Triggers ❶ and Enable ❷the trigger. 15

Click on Tasks ❶ and select the Hosted ❷ agent queue. Note that the default queue location is now inside the Tasks tab itself. Click on Options ❶ and configure the Build format number ❷ as 1.0$(rev:.r). NOTE A missing dot can result in an invalid version number and break your build. You can specify the format in two ways: 1.0$(rev:.r) 1.0.$(rev:r) 3. Create build variables Click on Variables ❶ Change system.debug ❷ variable to true to enable verbose logging Add new variable BuildConfiguration ❸ and set it to release Add new variable BuildPlatform ❹ and set top any cpu 16

4. Add build tasks Click on Tasks Click on Add Task NOTE - This build is based on the Countdown Widget sample extension and serves to showcase a few build task examples. It s important you plan your build to meet the requirements for your extension, which in most cases will be simpler than this example scenario. Bookmark aka.ms/cicdpipeline for a few walk-throughs of various extension pipelines we re using in production. 5. Install NPM packages Click on Add Task 17

Search for npm ❶ and click on Add ❷ to add the npm tasks. Click on the npm install task ❶. Select Version 1.* ❷ and configure the working folder ❸, containing the package.json configuration file, as shown 6. Build the extension Click on Add Task Search for npm ❶ and click on Add ❷ to add the npm tasks. 18

Click on the second npm task ❶. 7. Package the extension Select Version 1.* ❷. Set the display name to npm run build ❸. Select the custom command ❹. Configure the working folder, containing the package.json configuration file, as shown ❺. Set the Command and arguments to build ❻. Click on Add Task Search for Package Extension ❶ and click on Add ❷ to add the task. NOTE - This is where the magic of this pipeline starts! The Package Extension task allows us to override the extension manifest, allowing is to reconfigure the extension during build, and later for each release environment. 19

Click on Package Extension ❶ to configure the build task Root manifest folder ❷ set to the CountdownWidget/CountdownWidget, which contains the vssextension.json manifest file. Manifest file ❸ set to vss-extension.json Package output file ❹ set to drop\output.vsix Output Variable ❺ defaults to Extension.OutputPath 20

Configure Overrides manifest settings to override values in the manifest file 8. Publish artifact Publisher ID ❶ set to the marketplace publisher you created in Exercise 3. Extension ID ❷ set to unique ID, for example CountDownSample Extension Tag ❸ set to Alpha Extension name ❹ set to Count Down Sample Extension version ❺ set to $(Build.BuildNumber) Override tasks version ❻ is checked Extension visibility ❼ set to Private Extension pricing ❽ set to Free Click on Add Task 21

Search for Publish Build Artifacts ❶ and click on Add ❷ to add the task Click on Publish Artifact ❶ to configure the task Path to Publish ❷ set to $(Extension.OutputPath) variable, which was configured during the Package Extension task Artifact Name ❸ set to drop folder Artifact Type ❹ set to Server 9. It s time to validate the build Click on Save & Queue drop-down ❶ and click on Save & queue ❷ 22

Click in Queue 10. Observe the console output of the build 11. Verify that we have no errors Congratulations, you ve created and tested your continuous integration build. You ve completed the most complex part of our pipeline, which now looks as follows: 23

Exercise 6: Create a continuous delivery (CD) release To complete the CI CD pipeline we need to create a release that is triggered by the build artifact. We ll use the Publish Extension Task of the VSTS Developer Tools Build Tasks we used to package the extension during the build. This updates the VSIX package file by unzipping the content, updating the configuration values and zipping all the files. The task then deploys it to the configured Marketplace publisher account and deploy the extension to distinct DEV BETA PROD environments. This exercise is based on the new release editor. You can enable the new editor by selecting in your profile. 1. Create empty release You can get started with your release definition in two ways: Click on Release in your build summary and click the Yes button when promoted to create a new release definition. -or- 1. Click on Releases ❶ and then on New Definition ❷ 24

Select the Empty process. Click on the Artifact trigger ❶ and verify that the Continuous deployment trigger ❷ is enabled. Click on the Build artifacts ❶and verify that your Artifact ❷ defaults as shown. 25

Click on the environment ❶ and change the name to DEV ❷. Change the release name to Countdown Sample. Click on pre-deployment conditions ❶ and review the Approvals which are set to Automatic by default ❷. 26

2. Configure DEV environment Click on 1 phase(s) 0 task(s). Click on + (add a task to the phase). Search for Publish Extension ❶ and Add ❷ to the agent phase. Click on Publish Extension task to configure the settings that need attention. 27

Set the VSTS Marketplace connection to the service endpoint ❶ you created in exercise 4, and select VSIX file ❷. Configure the remainder of the Publish Extension task. VSIX file ❶ set to the $(System.DefaultWorkingDirectory)/MyFirstProject-CI/drop/output.vsix file, which was created by the build. Publisher ID ❷ set to the marketplace publisher, which you created in Exercise 3. Extension ID ❸ set to unique ID, for example CountdownSample. 28

Extension Tag ❹ set to DEV to match the DEV environment. Extension name ❺ set to Count Down Sample DEV. NOTE If you deploy your extension to the same publisher and/or the same VSTS accounts, we recommend that you change the extension name to include the extension tag, for example CountdownSampleBETA. It makes it much easier to distinguish which extension is which by just looking at the name. Override tasks version ❻ is checked. Extension visibility ❼ set to Private. Extension pricing ❽ set to Free. Share with ❾ set to our VSTS account, whereby you can configure other accounts as well to share your DEV extension. Save the release configuration. 29

3. Configure BETA environment Select the DEV environment ❶, click on Add ❷ and select Clone selected environment ❸. Change the environment name to BETA. 30

Click on pre-deployment conditions ❶ and review the trigger ❷. Select Specific users ❸ for approval type and add your account to the list of approvers. Update the configuration of the cloned Publish Extension task. Extension Tag ❶ set to BETA to match the DEV environment 31

Extension name ❷ set to Count Down Sample BETA Share with ❸ set to our VSTS account, whereby you d deploy to a different environment (ring) in a production environment 4. Save the release definition 5. It s time to validate the release Click on + Release and select Create Release Review the Artifacts, which refer to our latest build, the Automated deployments, and click Queue. 32

Click on new release that s been created to observe the deployment Click on Logs and verify that the DEV release is successful and notice that the BETA release waits for manual approval, as configured Click on the Approvers ❶ icon and click on Approve ❷ to approve the release to the BETA environment 33

Verify that the BETA release completes successfully as well Open a new browser tab and go to https://marketplace.visualstudio.com/manage/publishers Verify your publisher is selected and that the Countdown Sample DEV and BETA extension have been publisher successfully. IMPORTANT - We re intentionally NOT implementing the PROD environment, which publishes a public version of the extension. It s important we do not duplicate features on the marketplace, and review the extension product documentation before we flip the public switch. There are scenarios in which you cannot undo, for example uninstall, a public extension publication. 34

Congratulations, you ve created and tested your continuous delivery for your extension. At this stage your pipeline looks as follows: But, does it work? Let s move to exercise 7 and find out. 35

Exercise 7: Trigger a change Let s validate that we have a fully automated CI/CD pipeline by making a minor change to the code base. 1. Make code change Click on Code and click on Files Click on the README.md file NOTE We re editing the root README.md file, which is not the same file as the Overview.md file that defines what the user sees on the marketplace. Click on Edit to modify the file 36

Make a simple change, for example add an exclamation mark after the heading, and click Commit icon Optionally add a commit Comment and click Commit The is committed to the repo 2. Observe the pipeline Click on Build & Release, select Build, and notice that a new build has been triggered by the README.md update 37

Click on Build & Release, select Release, and notice that a new release has been triggered when the build completed 3. Validate the extension was published Click on icon and select Account settings Click on Extensions You ll notice that we have the two extensions shared with our account, as expected 38

When you click on one of the shared extensions, you can review the extension on the publisher and find the DEV or BETA suffix, as highlighted Thank you for exploring this hands-on lab with us. We hope you have enjoyed the tour and look forward to your feedback. You can reach us on aka.ms./vsar and @almrangers. 39

Exercise 8: (optional) Explore unit testing and code coverage We have covered the core steps of creating a CI/CD pipeline for your extension. To fully embrace DevOps practices, we need to implement testing, metrics (such as code coverage), and application insights telemetry. We ll leave you with a list of useful references to explore as an optional exercise: Extension pipelines Setup a CI/CD pipeline with package management for your Visual Studio Team Services extension Set up a CI/CD pipeline with unit testing and code coverage for your Visual Studio Team Services extension Set up a CI/CD pipeline for your Visual Studio Team Services extension Setup a CI/CD pipeline with build & release tasks for your Visual Studio Team Services extension coming soon Extension development Yeoman generator-vsts-extension VSTS Extension Project Template Other pipelines Set up a CI/CD pipeline to run automated tests efficiently Set up a CI/CD pipeline for your Yeoman generator package Thank you for exploring this hands-on lab with us. We hope you have enjoyed the tour and look forward to your feedback. You can reach us on aka.ms./vsar and @almrangers. 40

DEPRECATED Exercise 6: Create a continuous delivery (CD) release using old editor To complete the CI CD pipeline we need to create a release that is triggered by the build artifact. We ll use the Publish Extension Task of the VSTS Developer Tools Build Tasks we used to package the extension during the build. This updates the VSIX package file by unzipping the content, updating the configuration values and zipping all the files. The task then deploys it to the configured Marketplace publisher account and deploy the extension to distinct DEV BETA PROD environments. This exercise is based on the classic release editor. See Exercise 6b: Create a continuous delivery (CD) release with new editor for the new editor experience. 1. Create empty release You can get started with your release definition in two ways: 2. Click on Release in your build summary and click the Yes button when promoted to create a new release definition. -or- 3. Click on Releases ❶ and then on New Definition ❷ 41

Select the Empty release template and click Next 42

Verify that the project is set to your project ❶, the build to your CD build ❷ created in exercise 5, check Continuous Deployment ❸, and click Create Change the environment name to DEV 43

Change the release name to Countdown Sample Click on General ❶and set the Release name format ❷ to Countdown Sample-$(rev:r) 2. Configure DEV environment Click on Environments to return to the environments tab Click on, select Assign approvers, review the Approvals which are set to Automatic by default, and click Cancel to return to the release Click on Add Tasks 44

Look for Publish Extension in the list of Deploy ❶ tasks, click on Add ❷to add the task, and Close ❸ to return to the configuration Set the VSTS Marketplace connection to the service endpoint ❶ you created in exercise 4, and select VSIX file ❷. 45

Click on the Publish Extension task to configure VSIX file ❶ set to the $(System.DefaultWorkingDirectory)/MyFirstProject-CI/drop/output.vsix file, which was created by the build. Publisher ID ❷ set to the marketplace publisher, which you created in Exercise 3. Extension ID ❸ set to unique ID, for example CountDownSample Extension Tag ❹ set to DEV to match the DEV environment Extension name ❺ set to Count Down Sample DEV 46

NOTE If you deploy your extension to the same publisher and/or the same VSTS accounts, we recommend that you change the extension name to include the extension tag, for example CountdownSampleBETA. It makes it much easier to distinguish which extension is which by just looking at the name. Override tasks version ❻ is checked Extension visibility ❼ set to Private Extension pricing ❽ set to Free Share with ❾ set to our VSTS account, whereby you can configure other accounts as well to share your DEV extension 3. Configure BETA environment Click on of the DEV environment and select Clone environment 47

Select Specific users ❶ for the Pre-deployment approval, add your account, ensure the Trigger ❷ is checked, and click Create Rename the new environment to BETA 48

Click on the Publish Extension task to configure Extension Tag ❶ set to BETA to match the DEV environment Extension name ❷ set to Count Down Sample BETA Share with ❸ set to our VSTS account, whereby you d deploy to a different environment (ring) in a production environment Save the release definition 49

4. It s time to validate the release Click on + Release and select Create Release Review the Artifacts, which refer to our latest build, the Automated deployments, and click Create. Click on new release that s been created to observe the deployment 50

Click on Logs and verify that the DEV release is successful and notice that the BETA release waits for manual approval, as configured Click on the Approvers ❶ icon and click on Approve ❷ to approve the release to the BETA environment 51

Verify that the BETA release completes successfully as well Open a new browser tab and go to https://marketplace.visualstudio.com/manage/publishers Verify your publisher is selected and that the Countdown Sample DEV and BETA extension have been publisher successfully. IMPORTANT - We re intentionally NOT implementing the PROD environment, which publishes a public version of the extension. It s important we do not duplicate features on the marketplace, and review the extension product documentation before we flip the public switch. There are scenarios in which you cannot undo, for example uninstall, a public extension publication. 52

Congratulations, you ve created and tested your continuous delivery for your extension. At this stage your pipeline looks as follows: Using the new release editor, you ll be able to visualize and configure your pipeline with a similar visual view: But, does it work? Let s move to exercise 7 and find out. 53

54 CICD Pipeline for your extensions with Visual Studio Team Services