Skip to main content

Notifications

Announcements

No record found.

Release your Dynamics 365 for Finance and Operation packages to LCS with Azure DevOps Pipelines

Hi all,

The first automation task to close the continuous integration cycle in Dynamics 365 for Finance and Operations with Azure DevOps pipelines was released recently as described on the official announcement.

These are some high-level instructions to set it up while the official documentation is released:

Prerequisites

To keep things simple, these prerequisites should be prepared before starting this process:

001_2D00_devops_2D00_lcs_2D00_extension.png

Register an Application in AAD

In order to authorize DevOps Pipelines to connect to the new Lifecycle Services (LCS) API, an application must be created in the Azure Active Directory of the organization. Elevated permissions are required for this operation.

  • Go to portal.azure.com and search or navigate to Azure Active Directory.
  • Navigate to the menu Manage > App registrations > New registration.
  • Provide a name for the new application.
  • In the Redirect URI heading, select Public client (mobile & desktop), and then type the redirect URI for your application.
  • Use any value as Redirect URI (for example: http://localhost).

native.JPG45041.Capture.JPG

  • Open the newly created app and click Settings.
  • Save the Application ID value, we will need it on the next steps.
  • Navigate to API Permissions.
  • Click Select an API and search for Dynamics Lifecycle services API, then Select and Done.
  • Click Grant permissions (this is a critical step, be sure you get a “Successfully granted permissions for application XXX” message or integration will not work).
  • However, i faced an issue with allowing public clients. This can be done by updating the manifest variable "allowPublicClient" to "true".

api.JPGmanifest.JPG

More information about registering applications in AAD here:

And about permission consent here:

Create the Azure Release Pipeline

A release pipelines will be used to connect the Build output with the Asset Library in LCS. New build packages will be uploaded to LCS automatically through this pipeline.

  • Login to your organization’s Azure DevOps project and navigate to Pipelines > Releases.
  • Click New release pipeline (this is the only option if you don’t have any pipeline already created).
  • Select a template: Empty job.
  • Click on Artifacts > +Add an artifact (this will connect this release pipeline with our Build).

release1.JPG

  • Select Build as Source type, and select your Project, Source and Default version (use Latest if this release will be executed automatically) and finally click Add.
  • If you want this release is executed immediately after the build finish (so the build output is uploaded to LCS each time) enable the Continuous Integration flag by using the small icon highlighted in blue in the next screenshot (C.I.).
  • Click on the Stage 1 or Tasks links o open the details.
  • Select the Agent job node and validate that Agent pool parameter is set to Hosted VS2017.
  • Click the [+] button on the Agent Job node.
  • Search for the Dynamics Lifecycle Services (LCS) Asset Upload task (it should be already installed or can be installed at this point, click Refresh if the task does not appear in the list) and finally click Add to add the task to the pipeline.

8512.PNGrelease3.PNG

  • Fill these properties on the newly created Task:
    • LCS Connection: Select a connection or click [+New] if this is the first time
      • Connection name: use a descriptive name (in case you have multiple LCS projects).
      • Authentication Endpoint: let the default value
      • Lifecycle Services API Endpoint:
        • If your LCS URL is like: https://lcs.dynamics.com/V2, use the value https://lcsapi.lcs.dynamics.com (default).
        • If your LCS URL is like: https://eu.lcs.dynamics.com, use the value https://lcsapi.eu.lcs.dynamics.com.
      • Username and Password: use the credentials (fully qualified user name and password) from a user with enough permissions to upload files to your LCS project
      • Application (Client) ID: use the guid of the Application created in AAD on the first step.
  • LCS Project Id: this is the numeric value included in your LCS project URL
    • Example: for the URL https://lcs.dynamics.com/V2/ProjectOverview/1234567, your Project Id is 1234567.
  • Type of asset: Software Deployable Package
  • File to upload: click the […] button to select the AXDeployableRuntime_XXX_YYY file in the Packages folder of your Build artifacts.
    • This is the default configuration, you might want to select a different file if your build definition is customized, but it should be a deployable package and its name should include the build number.
    • Back in the Pipeline properties, replace the build number with the variable $(Build.BuildNumber)
      • Example, for the filename: $(System.DefaultWorkingDirectory)/_ Unified Operations platform – Build Main/Packages/AXDeployableRuntime_7.0.5126.35370_ 2019.1.29.1.zip
      • Use the property value: $(System.DefaultWorkingDirectory)/_ Unified Operations platform – Build Main/Packages/AXDeployableRuntime_7.0.5126.35370_$(Build.BuildNumber).zip
  • LCS Asset Name and LCS Asset Description: Use descriptive values to identify this package when uploaded to the LCS Asset Library. More information about Azure Pipeline variables on the docs here for the build and here for the release.
    • For example: $(Release.ReleaseName)_$(Build.BuildNumber)

release4.PNGrelease5.PNGrelease6.PNG

This is it, To test that the newly created release work, use the Create a release button to create a new release manually:

pastedimage1574603727644v1.pngrelease9.PNG

And you should have a new file in the Software deployable package folder of the LCS Asset Library.

pastedimage1574604112335v2.png

pastedimage1574604120147v3.png

 

Comments

*This post is locked for comments