|
| 1 | +--- |
| 2 | +title: Integration of Azure DevTest Labs and DevOps | Microsoft Docs |
| 3 | +description: Learn how to use labs of Azure DevTest Labs within a continuous integration (CI)/ continuous delivery (CD) pipelines in an enterprise environment. |
| 4 | +services: devtest-lab |
| 5 | +documentationcenter: na |
| 6 | +author: spelluru |
| 7 | +manager: |
| 8 | +editor: '' |
| 9 | + |
| 10 | +ms.service: devtest-lab |
| 11 | +ms.workload: na |
| 12 | +ms.tgt_pltfrm: na |
| 13 | +ms.devlang: na |
| 14 | +ms.topic: article |
| 15 | +ms.date: 06/10/2019 |
| 16 | +ms.author: spelluru |
| 17 | + |
| 18 | +--- |
| 19 | + |
| 20 | +# Integration of Azure DevTest Labs and Azure DevOps |
| 21 | +DevOps is a software development methodology that integrates software development (Dev) with operations (Ops) for a system. This system may deliver new features, updates, and fixes in alignment with business goals. This methodology encompasses everything from designing new features based on goals, usage patterns, and customer feedback; to fixing, recovering and hardening the system when issues occur. An easily identified component of this methodology is the continuous integration (CI)/ continuous delivery (CD) pipeline. A CI/CD pipeline takes information, code, and resources from a commit through a series of steps that include building, testing, and deployment, to produce the system. This article focuses on different ways to effectively use labs within a pipeline in an enterprise environment. |
| 22 | + |
| 23 | +## Benefits of using labs in DevOps workflow |
| 24 | + |
| 25 | +### Focused access |
| 26 | +Using a lab as a component allows a specific ecosystem to associate with a limited group of people. Usually, a team or group that is working in a common area or a specific feature will have a lab assigned to them. |
| 27 | + |
| 28 | +### Infrastructure replication in the cloud |
| 29 | +A developer can quickly set up a development ecosystem that includes a dev box with source code and tools. The developer can also create an environment that's nearly identical to the production configuration. It helps with the faster inner loop development. |
| 30 | + |
| 31 | +### Pre-production |
| 32 | +Having a lab in the CI/CD pipeline makes it easier to have multiple different pre-production environments or machines running at the same time for asynchronous testing. Different support infrastructures such as build agents can be deployed and managed within a lab. |
| 33 | + |
| 34 | +## DevOps with DevTest Labs |
| 35 | + |
| 36 | +### Development / Operation |
| 37 | +A lab should be focused on a team that is working in a feature area. This common focus allows for sharing of area-specific resources, like tools, scripts, or Resource Manager templates. It allows faster changes while limiting the negative effects to a smaller group. These shared resources allow the developer to create development VMs with all the necessary code, tools, and configuration. They can be created either dynamically or have a system that creates base images with the customizations. Not only can the developer create VMs, but also they can create DevTest Labs environments based on the necessary templates to create the appropriate Azure resources in the lab. Any changes or destructive work can be done against the lab environment without affecting anyone else. Consider the scenario where the product is a standalone system installed on the customer's machine. In this scenario, DevTest Labs has improved VM creation that includes installing additional software using artifacts and pre-building customer configurations for quicker inner loop testing of the code. |
| 38 | + |
| 39 | +## CI/CD pipeline |
| 40 | +The CI/CD pipeline is one of the critical components in DevOps that move code from a pull request of the developer, integrates it with the existing code, and deploys it to the production ecosystem. All resources don't need to be within a lab. For example, a Jenkins host could be set up outside of lab as a more persistent resource. Here are some specific examples of integrating labs into the pipeline. |
| 41 | + |
| 42 | +### Build |
| 43 | +The build pipeline is focused on creating a package of components that will be tested together to be handed off to the release pipeline. Labs can be part of the build pipeline as the location for build agents and other support resources. Having the ability to dynamically build the infrastructure allows for greater control. With the ability to have multiple environments in a lab, each build can be run asynchronously while using the build ID as part of the environment information to uniquely identify the resources to the specific build. |
| 44 | + |
| 45 | +For build agents, the lab’s ability to restrict access increases the security and reduces the possibility of accidental corruptions. |
| 46 | + |
| 47 | +### Test |
| 48 | +DevTest Labs allows a CI/CD pipeline to automate the creation of Azure Resource (VMs, environments) that can be used to for automated and manual testing. The VMs would be created using artifacts or formulas that use information from the build process to create the different custom configurations necessary for testing. |
| 49 | + |
| 50 | +### Release |
| 51 | +DevTest Labs is commonly used for verification in the release section before the code is deployed. It's similar to testing in the Build section. Production resources shouldn't be deployed within DevTest Labs. |
| 52 | + |
| 53 | +### Customization |
| 54 | +In Azure DevOps, there are existing tasks that allow manipulation of VMs and environments within specific labs. While Azure DevOps Services are one way to manage the CI/CD pipeline, you can integrate the lab into any system that supports the ability to call REST APIs, execute PowerShell scripts, or use Azure CLI. |
| 55 | + |
| 56 | +While some CI/CD pipeline managers have existing open-source plugins that can manage resources within Azure and DevTest Labs. You may need to use some custom scripting to fit the specific needs of the pipeline. With that in mind, when executing a task, a service principal is used with the appropriate role to gain access to the lab. The service principal usually needs the contributor role access to the lab. For more information, see [Integrate Azure DevTests Labs into your Azure DevOps continuous integration and delivery pipeline](devtest-lab-integrate-ci-cd-vsts.md). |
| 57 | + |
0 commit comments