Description

Azure DevOps (formerly Microsoft Team Foundation Server (TFS) or Microsoft TFS) provides services to manage end-to-end flow of a development project. It contains services to share code, track work, and ship software.

Quick Info

Product
HCL Accelerate
Type
plugin
Compatibility
HCL Accelerate version 2.0 or later
Created by
HCL Software
Updated Date
December 3, 2021
Version Name Modified date Action

2.0.14

ucv-ext-azure:2.0.14.tar 03-May-2021 13:26

2.0.17

ucv-ext-azure:2.0.17.tar 23-Jun-2021 05:58

2.0.4

ucv-ext-azure:2.0.4.tar 08-Feb-2021 07:31

3.0.1

ucv-ext-azure:3.0.1.tar 02-Jul-2021 14:14

4.0.1

ucv-ext-azure:4.0.1.tar 29-Jul-2021 11:25

4.0.15

ucv-ext-azure:4.0.15.tar 01-Dec-2021 16:18

4.0.16

ucv-ext-azure:4.0.16.tar 03-Dec-2021 13:10

4.0.3

ucv-ext-azure:4.0.3.tar 30-Sep-2021 05:32

ucv-ext-azure:2.0.14.tar

2.0.14


ucv-ext-azure:2.0.17.tar

2.0.17


ucv-ext-azure:2.0.4.tar

2.0.4


ucv-ext-azure:3.0.1.tar

3.0.1


ucv-ext-azure:4.0.1.tar

4.0.1


ucv-ext-azure:4.0.15.tar

4.0.15


ucv-ext-azure:4.0.16.tar

4.0.16


ucv-ext-azure:4.0.3.tar

4.0.3


Summary

The Azure DevOps plugin provides for integration with an Azure DevOps server.

This plugin imports work items, commits, pull requests, builds and deployment data from an Azure DevOps server and saves them as HCL Accelerate issues. Data between the Azure DevOps server and the HCL Accelerate server is synchronized every five minutes.

The plugin can also orchestrate the deployments in Azure Devops from HCL Accelerate.

Compatibility

This plugin requires HCL Accelerate version 2.0 or later.

History

The following table describes the changes made in each plugin version.

Plugin history details
Version Description
2.0.17 Performance Improvement
2.0.4 Minor enhancements
3.0.1 Added release pipeline orchestration support
4.0.1 Added orchestration support for Azure yaml pipelines
4.0.3 ReSync support added. Applies to HCL Accelerate version 2.4.4 or later

Usage

To use the Azure DevOps plugin, the plugin must be loaded and an instance created before you can configure the plugin integration. You define configuration properties in the user interface or in a JSON file.

Integration type

The Azure DevOps plugin supports scheduled events integration which are listed in the following table.

Scheduled events
Name Description
SyncAzureIssuesEvent Queries the Query Azure DevOps server for new or updated pull requests and commits.
SyncAzureGitDataEvent Queries the Azure DevOps server for new or updated work items.
SyncAzureBuildsEvent Queries the Query Azure DevOps server for build data.
SyncAzurePipelines Queries the Azure DevOps server for deployment data.

Integration

There are two methods to integrate the plugin:

  • Using the user interface
  • Using a JSON file

Using the user interface

  1. From the Plugins page, click Settings > Integrations > Plugins.
  2. Under the Action column for the plugin, click Add Integration.
  3. On the Add Integration page enter values for the fields used to configure the integration and define communication.
  4. Click Save.

Using a JSON file

The JSON file contains the information for creating a value stream and integrating with the Azure DevOps server. The following table describes the information for the creating a HCL Accelerate value stream map.

  1. From a value stream page, download the value stream map. The value stream map is a JSON file used to define integrations.
  2. Edit the JSON file to include the plugin configuration properties.
  3. Save and upload the JSON file. This replaces the current JSON file with the new content.
  4. View the new integration on the Integrations page.

Minimum permission to integrate with Azure Devops

The Azure Devops Account used to generate the token must have the below permission:

1) Build – Read Permission
2) Code – Read Permission
3) Project and Team – Read Permission
4) Release – Read Permission
5) Work Items – Read Permission

Configuration Properties

The following tables describe the properties used to configure the integration. Each table contains the field name when using the user interface and the property name when using a JSON file.

  • The General Configuration Properties table describes configuration properties used by all plugin integrations.
  • The Azure DevOps Properties table describes the Azure DevOps configuration properties are unique to the Azure DevOps plugin and define the connection and communication to the Azure DevOps server. When using the JSON method to integrate the plugin these properties are coded within the properties configuration property.

Not all configuration properties are initially displayed in the user interface, to see all properties enable the Hidden field.

General Configuration properties
Name Description Required Property Name
NA The version of the plugin that you want to use. To view available versions, click the Version History tab. If a value is not specified, the version named latest is used. No image
Integration Name An assigned name to the value stream. Yes name
Logging Level The level of Log4j messages to display in the log file. Valid values are: all, debug, info, warn, error, fatal, off, and trace. No loggingLevel
NA List of plugin configuration properties used to connect and communicate with the Azure DevOps server. Enclose the properties within braces. Yes properties
The name of the tenant. Yes tenant_id
NA Unique identifier assigned to the plugin. The value for the Azure DevOps plugin is ucv-ext-azure Yes type
Azure DevOps Properties
Name Type Description Required Property Name
Access Token Secure The access token to authenticate with the Azure DevOps server. You can use either this property or the Password property to authenticate with the server. No accessToken
Organization String The name of the Azure organization in which the specified project exists. Yes organization
Password Secure The password used to authenticate with the Azure server. Use either this or an access token. No password
Project String The name of the Azure DevOps project from which to pull data. Yes project
Branch Name String The branch to pull commits from. No branchName
Proxy Password Secure The password used to authenticate with the proxy server. No proxyPassword
Proxy Server String The URL of the proxy server including the port number. No proxyServer
Proxy User Name String The user name used to authenticate with the proxy server. No proxyUsername
Repositories Array A list of repositories from which to import pull request, commit, and build data. No repositories
URL String The URL of the Azure DevOps server. Yes baseUrl
User Name String The user name to authenticate with the Azure DevOps server. No username
HCL Accelerate User Access Key Secure The user access key to authenticate with the HCL Accelerate server. No ucvAccessKey

Release orchestration

This plugin can be used to orchestrate releases in Azure Devops.

Compatibility

  • HCL Accelerate version 2.4.0 and later is required to support release orchestration in Azure Devops.
  • Azure Devops plugin version 3.0.1 and later supports release orchestration of Azure Devops release pipelines.
  • Azure Devops plugin version 4.0.1 and later supports release orchestration using Azure Devops yaml pipelines.

Orchestrating Azure release pipelines from Accelerate

The plugin syncs repositories, builds, pipelines, releases definitions, environments, pipeline runs and release executions every five minutes with Accelerate. A repository in Azure can be mapped as an application in Accelerate pipeline. The build that is created after mapping the application appears as version in the Input column of the Accelerate pipeline.

In the following graphic,

  • Parts Unlimited is the Azure Project and my-new-repo is one of the repositories in the Parts Unlimited project.
  • Parts Unlimited/my-new-repo is mapped as the application.
  • 20210729.02 is the latest build created in Azure Devops for this repository.

 

The release definitions can be mapped as processes in the Accelerate pipeline. For example, Demo-success is the release definition which is deploying to QA environment as shown in the following graphic. The graphic also shows that Demo-success is mapped as the process for Accelerate QA environment.

QA-my-new-repo is the release environment in Azure Devops for the above release definition. The following graphic shows the mapping the Azure Devops environment in the Accelerate pipeline.

To orchestrate the deployment from Accelerate, select the version using the deploy option as show in the below picture.

 

A new release is created in Azure Devops. The deployed version is synced with Accelerate within 5 minutes of deployment as show in the below picture.

Notes

In order to orchestrate the release in Azure using this plugin, there should be separate release pipelines defined for each stage.

 

Orchestrating Azure yaml pipelines from Accelerate

In order to orchestrate the Azure yaml pipeline using this plugin, the yaml pipeline has to be exploded in such a way that an Azure pipeline deploys to a single environment in Azure.

In the below example, ‘pipelines-javascript-new’ is the project name as well as the repo name. The Azure yaml pipeline is exploded into two pipelines, ‘pipelines-javascript-new-CI’ and ‘pipelines-javascript-new-CD’. ‘pipelines-javascript-new-CI’  contains the build and test jobs and also the ‘PublishBuildArtifacts@1’ task which uploads the artifact to a  to a staging directory. ‘pipelines-javascript-new-CD’ downloads the artifact created in ‘piplines-javascript-new-CI’ and performs the deployment.

The following picture shows the yaml script for ‘pipeline-javascript-new-CI’.

 

The following picture shows the yaml script for ‘pipelines-javascript-new-CD’. The pipeline script downloads the artifact created by the ‘pipelines-javascript-new-CI’ pipeline and then deploys the artifact. A variable ‘version‘ defines the  ‘pipelineId‘  (line number 15 in the yaml script) which is the version of the artifact to be downloaded. The version will be passed to the pipeline when the pipeline is run from Accelerate.

The below picture shows the ‘pipelines-javascript-new’ repo defined as an application in Accelerate and the ‘pipelines-javascript-new-CD’ pipeline being mapped as a process in Accelerate.

The below picture shows the environment being mapped.

The deployment can be started by clicking on the deploy button in the drop down for the environment as show in the below picture.

The version to be deployed can be selected as follows.

When the deploy button is clicked, plugin will run the mapped Azure pipeline (pipelines-javascript-new-CD). The selected version number will be set as the value for the ‘version‘ variable in ‘pipelines-javascript-new-CD’ pipeline. The artifact with the above selected version will be downloaded and deployed to the Dev environment.

The below picture shows successful deployment.

 

In short, the following are the needed in order to orchestrate the yaml release pipeline from Azure.

  • There should be a separate pipeline for build and / or test and separate pipelines for deployment to each environment.
  • Each deployment pipeline must have an initial step to download the artifact. The download artifact step will download the artifact created in the CI pipeline. The download artifact step can specify the pipelineId using a variable named ‘version‘. (pipelineId: $(version)). The value of the ‘version‘ will be passed to the pipeline when it is run from Accelerate.
Notes
Plugin supports the release orchestration of:
  • Scripted yaml pipeline for build and deployment
  • Scripted yaml pipeline for build and release pipeline for deployment
  • Designer UI yaml pipeline for build and deployment
  • Designer UI yaml pipeline for build and Release pipeline for deployment
Plugin does not support release orchestration if the source code is not in Azure, i.e, if the source code is in GitHub or BitBucket, release orchestration from Accelerate is not possible.

Automation Tasks

The following automation tasks are available in the ServiceNow plugin:

DeployApp

Use this step to deploy an Azure Devops application.

This step has no input properties.

Adding automation tasks to a release

After the plugin is integrated automated tasks are available to add as a task within a release.

  1. Verify that the Azure Devops server is connected to the HCL Accelerate.
  2. On the Create Task page, select the automation task from the Type field drop-down list.
  3. Complete the properties required for the task.
  4. Click Save.