Coder Social home page Coder Social logo

ewingjm / development-hub Goto Github PK

View Code? Open in Web Editor NEW
35.0 5.0 8.0 5.06 MB

A continuous integration solution for Power Apps.

License: MIT License

C# 94.72% PowerShell 1.64% TypeScript 2.24% Gherkin 1.29% JavaScript 0.10%
powerapps powerapps-solutions powerplatform dynamics dynamics-crm dynamics365 dynamics-365 dynamics-crm-online common-data-service cds

development-hub's Introduction

Development Hub logo

A model-driven app that provides an enhanced development workflow for teams building Power Apps in a shared development environment. Enables continuous integration by automatically creating pull requests or commits for individual developer's changes.

For more context, read this introductory blog post.

Table of contents

Prerequisites

  • At least two Dataverse environments
  • An Azure DevOps organisation

One Dataverse environment acts as the development environment. The other environment(s) are referred to as 'master' environments. For more information on the purpose of a master environment, refer to the Solution Lifecycle Management document published by Microsoft. The relevant information can be found in the environment topologies for development approaches table.

Installation

Create flow connections

You will need to create two flow connections in your development environment. Within the Maker Portal, go to your environment and navigate to Data -> Connections. Create a new Approvals connection and a new Azure DevOps connection. Ensure the Azure DevOps connection is signed in as a user with access to the Azure DevOps project(s) used for source control.

Open the connections and note the connection names by taking them from the URLs, which will be in the format 'environments/environmentid/connections/apiname/connectionname/details'.

Deploy the package

Download the package files from the Releases tab and follow Microsoft's guide to using the Package Deployer here.

You must provide several runtime settings. Refer to the helper PowerShell script below:

$settings = [PSCustomObject]@{
  'ConnRef:devhub_sharedapprovals_6d3fc' = '<the connection name of the Approvals connection>'
  'ConnRef:devhub_sharedvisualstudioteamservices_d7fcb' = '<the connection name of the Azure DevOps connection>'
  'AzureDevOpsOrganisation' = '<the name of the Azure DevOps organisation>'
  'SolutionPublisherPrefix' = '<the prefix of the publisher (without leading underscore)>'
}
$settingsArray = $settings.PSObject.Properties | ForEach-Object { "$($_.Name)=$($_.Value)" }
$runtimePackageSettings = [string]::Join("|", $settingsArray)

Import-CrmPackage -PackageInformation $packages[0] -CrmConnection $conn -RuntimePackageSettings $runtimePackageSettings

Configuration

Register an Azure DevOps project

Register an Azure DevOps project by creating a new Project record.

Project

The name is the name of your Azure DevOps project. The name can't be updated after the record is created and must match the project name on Azure DevOps.

Register a Git repository

Register a Git repository within a project by creating a new Repository record.

Repository

The name must match the repository name on Azure DevOps and it must exist in the chosen project. The target branch is the branch you would like to either push to or create pull requests into (determined by the source control strategy).

To get the extract build definition ID, copy the scripts folder and azure-pipelines-extract.yml file into your repository and create a pipeline for the YAML file. The ID of the resulting build definition can then be used to populate this field.

The sample build script assumes that your repository structure includes a src folder at the root containing a solutions folder - which then contains folders that match your solutions' unique names.

You also need to ensure that permissions are configured correctly for this repository on Azure DevOps. Navigate to Project Settings -> Repositories in your Azure DevOps project. Select the relevant repository and assign the following privileges to the project Build Service user:

  • Contribute
  • Contribute to pull requests
  • Create branch

Register a master environment

Register a master environment by creating a new Environment record.

Environment

Enter a URL and name (this can be anything) for the environment as well as details about the app registration used to authenticate. Application users with the System Administrator role must be created in the development and master environments for the app registration. Follow Microsoft's guide here.

Register a solution

Register a solution within a repository by creating a new Solution record.

Solution

Manually create (or import) your unmanaged solutions in the master environment. Update the version numbers to match the solution in the master environment if you are migrating to the Development Hub with an existing solution.

Usage

Create an issue

Issue records must be created to begin working on a new feature or bug fix.

Issue

These records are instead used to group related development and aid in applying semantic versioning to solutions. The Development Hub does not replace a conventional issue tracker (e.g Azure Boards).

Set the Work Item ID field (in the Azure DevOps tab) and the commit or pull request will be linked to the work item.

Develop a solution

An issue with a To Do status will have a Develop button in the ribbon. Clicking this will create a development solution and transition the issue to In Progress. The Development tab will show details about the development solutions and solution merge history.

Development

The developer must add any new components or components to be modified into their development solution. Development solutions should contain just the components created or updated for that issue and no more. Adding all assets to a development solution will add all assets to the target solution when merged.

Only one developer should make changes to a component at a time. If a component appears in more than one development solution, it could result in either incomplete work being merged or solution merges failing due to missing dependencies. A warning will shown when approving a solution merge if there are potential conflicts with other development solutions.

Merge a solution

A Solution Merge record should be created when development is complete on an issue. This will transition the issue status reason to Developed.

Solution Merge

The solution merge is created in an Awaiting Review status. Comments can be as notes and the solution merge either approved or rejected.

An approved development solution will be merged into the target solution. If multiple solution merges have been approved, they will be queued. This means that an Approved solution merge will transition to either a Merging or Queued status. A Merged status will be reached when the solution merge has been committed to the target branch with a matching Solution-merge-id Git trailer in the commit message (this is automatically added).

When using the Pull request source control strategy, a pull request will be created automatically and the solution merge will transition to a status of Awaiting PR Merge.

A Feature issue will increment the minor version and a Bug issue will increment the patch version. Major version increments must be done manually.

Merge source code

If the solution to be merged has associated source code (e.g. you have made changes to plugin assemblies, web resources, tests or deployment logic) then you must provide the branch to be merged in the Source Branch field.

If your repository uses a Push source control strategy, ensure that you perform any manual Git merging required on your source branch before creating the solution merge or you may get merge conflicts that prevent the solution merge being committed. It is recommended to use a Pull request strategy for this reason.

Perform manual merge activities

Enabling the Manual Merge Activities field on the solution merge record will cause the merging process to pause before extracting and committing to source control. This is useful where you are merging changes by hand (e.g. where you need to delete components from the solution).

When the merging process is in a state where manual merge activities can begin, the solution merge will transition to an Awaiting Manual Merge Activities status. To notify the flow that the manual merge activities are complete, navigate to Action items -> Approvals within Power Automate and set the approval status to merged.

Handle a failed merge

If the merging process failed (e.g. due to missing dependencies) then the solution merge will transition to a Failed status. A note will be attached with a link to the failed flow run which can be used to diagnose the failure reason. A Retry button is available to retry the merge after the necessary steps have been taken.

In the example below, a dependency was missing from the target environment:

Failed Merge

Resources

Contributing

Refer to the contributing guide.

development-hub's People

Contributors

bancey avatar ewingjm avatar mjahlv avatar realekhor avatar tdashworth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

development-hub's Issues

Timeouts within merging workflow when staging environment is cold

Solution merges are occasionally timing out when the staging environment has not been recently used. They generally succeed on the second attempt. Migrating the merging process to Power Automate should alleviate this somewhat, as retries are built-in to the actions.

Setup should be simplified

Is your feature request related to a problem? Please describe.
The setup at the moment is a little bit more complicated than it needs to be. For example, it demands that repositories are structured (or perhaps restructured) in a certain way to conform to the Development Hub's expectations. Having to manually maintain the extract pipelines and scripts per repository is also time consuming.

Describe the solution you'd like
Solution extract directory could be configured on the solution records within the Development Hub. It may be possible for a single extract pipeline to be configured per project which then uses external build steps (e.g. from GitHub).

TypeScript does not build as part of PrepareDevelopmentEnvironment task

Description
TypeScript does not build as part of PrepareDevelopmentEnvironment task. If you clone the repository fresh (or delete the dist folder) then you will get a mapping error when running the PrepareDevelopmentEnvironment task. It makes sense to build the TypeScript before this task runs.

This would likely be missed by anyone doing active development as they are likely to have built the TypeScript at least once. This problem is most likely to impact new contributors.

Steps to reproduce
Steps to reproduce the behaviour:

  1. Clone the repository (or delete the src\solutions\devhub_DevelopmentHub_Develop\WebResources\Scripts\dist folder for the devhub_DevelopmentHub_Develop solution).
  2. Run through the standard configuration steps to get Dev Hub deploying to a new environment.
  3. Run the PrepareDevelopmentEnvironment task and select the devhub_DevelopmentHub_Develop solution.
  4. JS Mapping file error.

Expected behaviour
The devhub_DevelopmentHub_Develop solution should be deployed to the target successfully without any JS Mapping file errors.

Screenshots
image

**Environment: **

  • Browser: Chrome
  • Browser version: 92.0.4515.107
  • Power Apps environment version: 9.2.21071.00142

Cloning into folders which have spaces in the path

Description
If you clone and use based on a folder path with spaces in it you get an error building solutions

Steps to reproduce
Clone solution into folder with spaces in the path

Expected behavior
solutions to build

Additional context
replace line:
<Exec Command="dotnet build %(SolutionProjectsToBuild.FullPath) --configuration $(Configuration)" />
with
<Exec Command="dotnet build &quot;%(SolutionProjectsToBuild.FullPath)&quot; --configuration $(Configuration)" />

in the file DevelopmentHub.Deployment.csproj

Add a pull request for c# code changes

It would be ideal to have a smart way to detect when code changes are made. For standard customisations e.g. dynamics customisations the current process is great. The challenge is when you have C# and typescript changes, do we want to automatically merge it to master?

Solution merge stuck on 'Merging' when the source branch has conflicts with the target branch

Description
If the source branch specified on your solution merge has conflicts with the target branch, the solution merge will be stuck on a status of 'Merging' indefinitely.

Steps to reproduce

  1. Create a branch from the target branch
  2. Update a line in a file on the target branch
  3. Update the same line in the branch created from the target branch
  4. Create a solution merge and provide the branch created in step 1 as the source branch
  5. Approve the solution merge
  6. Observe that the solution merge is stuck in a status of 'Merging' indefinitely

Expected behaviour
The fact that there are merge conflicts with the target branch should be fed back to the solution merge.

Additional context
This is an issue in the Merge-SolutionMerge.ps1 script.

Ribbon button to open the development solution

Is your feature request related to a problem? Please describe.
I know it's something small but it would be nice to have a quick link to the development solution from the Solution Merge and Issue. This would save needing to navigate to the Maker Portal and finding the solution.

Yeah, yeah. I'm lazy....

Describe the solution you'd like
I ribbon button would work nicely here or just a link on the form. I don't think it will be hard to get the solution id but the environment id might be tricky or not possible?

Large development solutions that timeout on import need to be retried manually

The import of a development solution is automatically retried if it times out. However, this is usually because the solution import is still in progress. As a result, the first retry will come back with the following failure:

Cannot start another [Import] because there is a previous [Import] running at this moment. Use Solution History for more details. -- The solution installation or removal failed due to the installation or removal of another solution at the same time. Please try again later.

When this happens, the solution merge needs to be manually retried in order to succeed. It would be better to catch this error and poll for the import job's progress.

Flow will never start..

Hi guys,

I just encountered a problem. There is a Flow called "When a solution merge is 'Merged' -> Delete the development solution." that executes only when "statuscode eq 353400001" on table "Solution Merge"

But when I check the option list "Status Reason" on the table "Solution Merge" there is no value "353400001"

Looks like a bug to me and I was trying to figure out why the last part of your product didn't work and found this.

Greetings Edwin Hebbink

Extract Pipeline sometimes fails to link work item

Description
Occasionally, the merge pipeline fails to link the related work item. This is not a massive issue as the commit is already made and the link can be made manually. I'm not sure why this is occurring as I don't know what changes happen in between what timeframe.

Linking pull request to work item 31796
Invoke-RestMethod : {"$id":"1","innerException":null,"message":"TF26071: This work item has been changed by someone 
else since you opened it.  You will need to refresh it and discard your 
changes.","typeName":"Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemRevisionMismatchException, Microsoft.Tea
mFoundation.WorkItemTracking.Server","typeKey":"WorkItemRevisionMismatchException","errorCode":600122,"eventId":3200}
At D:\a\1\s\pipelines\scripts\Merge-SolutionMerge.ps1:211 char:17
+       $result = Invoke-RestMethod `
+                 ~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-RestMethod], WebExc 
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeRestMethodCommand

Steps to reproduce
Follow the standard process for approving a merge. This merge did have manual activities and we are using the PR process.

Expected behaviour
The work item to be linked and for no error to occur.

Allow Solution Merge Approver to confirm Manual Steps are complete

Is your feature request related to a problem? Please describe.
On our project, the user approving the Solution Merge will often also carry out the manual steps (documented in a Note). The problem is that only the creator of the Solution Merge Request can confirm these have been done via an Approval.

Describe the solution you'd like
I would like both the creator and approver to be added to the Approvers list where either one of them can confirm it.

Work item ID requirement should be configurable

Is your feature request related to a problem? Please describe.
By default the Azure DevOps work item ID is optional. Internally, we will always expect this to be set.

Describe the solution you'd like
This should be configurable to be required (without introducing unmanaged changes on the solution components).

Failed to create solution merge commit flow

Description
When adding a new repository with a name with 29 characters the Flow When a repository is created or updated - Create an associated solution merge commit flow reports a Status Reason of Failed to link repository. Looking at the Flow run, which doesn't show as failed, the action Add new Flow fails with the message:

A validation error occurred. The length of the 'name' attribute of the 'workflow' entity exceeded the maximum allowed length of '100'..

Steps to reproduce
Steps to reproduce the behaviour:

  1. Open 'Development Hub' App
  2. Go to 'Repositories'
  3. Click on 'Add'
  4. Create a new repository with a name of length 27 characters or greater
  5. Click 'Save'

Expected behaviour
The solution merge flow is created with a name less than or equal to 100. The repository name could be truncated or the template name could be shortened. I guess the repository name field could have a length limit but that isn't the best experience for the user just because of the Flow name. It would also be nice to have seen the flow FAILED rather that succeeded.

Environment (please complete the following information):

  • Browser: Edge
  • Browser version: 89.0.774.45 (Official build) (64-bit)
  • Power Apps environment version: 9.2.21023.00131
  • Solution versions:
    image

Conflicts reported when two development solutions contain an entity as a container only

Description

When two development solutions contain the same entity as a container only (i.e. metadata not included), approving a solution merge for one of these development solutions will show a potential warning conflict for the other solution.

Steps to reproduce
Steps to reproduce the behaviour:

  1. Create two issues and progress them to an in progress status
  2. Add the same entity to both development solutions excluding metadata
  3. Create a solution merge for one of the issues
  4. Click the approve button
  5. Observe a conflict is reported

Expected behaviour
No conflict should be reported.

Additional context
The only possible conflict that can arise from this scenario would be if one of the solutions has made ribbon changes to the entity. Ribbon changes don't require entity metadata to be added in order to be included in the solution. Ribbon changes are made far more infrequently than changes to entity sub-components, however, so it is probably preferable to avoid lots of false positives in favour of a few false negatives (that should be picked up on the pull request anyway).

Sample extract build can result in merge conflicts committed to master

The sample extract build does not check for the result of:

  git merge origin/$SourceBranch --squash --no-commit;

This means that the extract will push even if the merge failed. We need to either prevent the merging of a solution merge that has merge conflicts with master or update the solution merge status to 'Merged' or 'Failed' dependent on the outcome of the extract build.

Discard unmerged changes in the development instance

Is your feature request related to a problem? Please describe.
It would be useful to have the ability to discard changes made for a particular solution e.g. when the changes are experimental.

Describe the solution you'd like
Essentially the opposite to a solution merge:

  • a solution (which mirrors the current development solution) could be created in the master instance
  • the above solution is then exported and imported into the development instance
  • any components which are only in the development solution could be deleted

This would then bring the components in that development solution in line with what is currently in source control.

Signing in to Azure DevOps across tenants

This is more of an FYI to share my experience while setting up Development Hub.

The Problem

To set the scene, I have a work account that I use to access our Azure DevOps project while I have a development account that I use to access the dev/extract/CI environments. Development Hub is installed in the Dev environment which requires a Connection to the Azure DevOps organisation.

The problem I faced was when creating the Azure DevOps Connection, it would automatically sign me in with my development account, not let me select or sign-in to a different account. No matter how many times clicked "Switch Account", it always completes the sign-in without any user input.

The Solution

To resolve this, specifically for Azure DevOps, I found that if you sign in to https://visualstudio.microsoft.com/ with the correct account then the automatic sign-in during the creation of the Connection will pick up that account instead.

If you ensure you are not signed in to https://visualstudio.microsoft.com/, the Connection should ask for your details rather than automatically signing in but I've found this inconsistent.

A further problem I faced was that my work account has access to serval tenants and the organisation that I needed access to was not within the default selected tenant. The hierarchy is as follows:

  • Tenant
    • Organisation
      • Project

To change the tenant, navigate to https://app.vsaex.visualstudio.com/me and use the dropdown on the left to change the tenant. This will trigger a new sign-in for this tenant and should be done before you create the Azure DevOps Connection.

On a final note, I originally tried a different approach where I signed in to the Azure DevOps project (https://dev.azure.com/{organisation}) but this didn't change anything. The visual studio approach seems more consistent to me.

Master environment per solution merge

Is your feature request related to a problem? Please describe.

We have a relatively long pull request validation pipeline that runs for each solution merge pull request. This means that, due to the current blocking nature of solution merges, a problematic pull request can prevent completely unrelated solution merges (which may have only minor changes) from getting through. As the team grows, so does this issue.

Describe the solution you'd like

The option to either adopt a sequential merge strategy (i.e. what is currently implemented) or a parallel merge strategy for a given solution. The parallel merge strategy should provision a master environment for a given solution merge that exists until it is merged.

Additional context

Adopting a parallel merge strategy would likely mean:

  • Locking the source control strategy down to 'Pull request'
  • Locking the solution version down (setting the solution versions would need to be a CI pipeline activity)
  • Needing a connection running as a user with greater privileges than system administrator (hence the option should still be there to use static environments)

Flow failures authenticating with master instance

Description
The merging process is failing outside of the CI test instance as the Button -> Get Access Token flow has the OAuth resource hard-coded to the URL used for testing.

Steps to reproduce
Approve a solution merge.

Expected behaviour
Solution merge is merged with the target solution.

Screenshots
image

Environment (please complete the following information):
N/A

Additional context
User's can work around this temporarily by updating the flow to have the correct URL as the resource.

Yeoman generator missing

Hi Max,

I'm currently trying to get the Alpha up and running. My progress is good so far, I can not find the Yeoman generator though. I did search yeoman.io and "yo" for "Common Data Service", is that correct?

Regards

Sven

Specify a Solution Package mapping file to exclude mapped components

Is your feature request related to a problem? Please describe.
The sample extract currently doesn't support specifying a mapping file as part of the extract.

Describe the solution you'd like
Perhaps search for a MappingFile.xml or ExtractMappingFile.xml in the same folder as the extract folder.

Prevent multiple developers from modifying the same components

It is possible for multiple developers to modify the same components. This can result in incomplete changes being merged or development solutions failing to merge due to missing dependencies. There should be a mechanism by which developers check-out/check-in components into and from their development solutions.

Extract pipeline occasionally stuck on exporting solution

Description
Solution merges occasionally stuck on 'Merging' indefinitely. Looking at the extract pipeline logs reveals it to be stuck at "Exporting solution as unmanaged."

Steps to reproduce
Difficult to reproduce. If you put enough solution merges through you'll likely see it.

Expected behaviour
Extract pipeline shouldn't get stuck

Additional context
Seems to be related to this issue - WaelHamze/dyn365-ce-vsts-tasks#183

Probably needs a similar fix to use the ExportSolutionAsync endpoint.

Solution merge views are not filtered correctly

Several of the views for the solution merge entity appear to be filtered incorrectly e.g. the awaiting review view. The default view for solution merges should also probably be the 'Active Solution Merges' view.

Pull requests created with merge conflicts when source branch is provided

Description
When a source branch is provided for a solution merge, it's possible to run into merge conflicts in the automatically created pull request (if merging into a solution using the pull request strategy).

Steps to reproduce
Steps to reproduce the behaviour:

  1. Create a branch that is at least one solution merge commit behind the target branch
  2. Create a solution merge and populate the source branch with the branch in the previous step
  3. Approve the solution mereg
  4. Observe a merge conflict with the solution.xml

Expected behaviour
Rather than extracting the solutions into the source branch, we should always be creating a fresh branch from master and extracting into that. We then squash the source branch into this branch.

Source branch is not merged

When a source branch is specified on a solution merge record it should be merged at the same time as the extracted solution components. It appears that the sourcebranch build variable is not being set in the "When a solution is merged -> Commit changes to source control" flow.

Shared development and master environment between teams

It's possible to configure multiple target solutions but only a single Azure DevOps project and extract build definition. This prevents you being able to use a shared development and master environment for solution that may sit in different repositories or different projects.

A more flexible alternative would be to capture the Azure DevOps project and and extract build definition ID on the solution records configured within the Development Hub app.

Static analysis of development solutions

Some aspect of solution merge reviews could be automated. For example:

  • Development solution includes all assets for an out-of-the-box entity
  • Development solution contains plug-in assembly but no source branch

It might be possible to reuse existing Microsoft components for this (see Solution Health Hub).

Support for Azure DevOps Server

We use an on-premise Azure DevOps Server instance to manager our code ande pipelines and would like to use it with the development-hub. I've seen in your code you only allow support for the cloud version of AzureDevOps.

We would like to request support for Azure DevOps Server.

Development solution imports that fail after 2 minutes needlessly retry for an hour

Description

If a development solution fails to import and and import has taken longer than 2 minutes, it will continue to retry for an hour until finally failing due to flow timeout.

Steps to reproduce

Difficult to reproduce as it's not always easy to guarantee a solution import failure after 2 minutes. Happens occasionally.

Expected behaviour

The merging flow should not be relying solely on the progress of the importjob to tell it when the import has finished - it also needs to check the result. At the moment, it retries until progress is at 100.

Screenshots

image

Solution Merge: Awaiting Changes status

Is your feature request related to a problem? Please describe.
My project has multiple reviewers with many merges going back with comments. It would be nice to add some statuses to aid others visibility of the Solution Merge.

Describe the solution you'd like
I think an "Awaiting Changes" status would help reviewers know that this has been reviewed by someone but changes have been requested. Once the changes are complete then it can go back to "Awaiting Review".

Also, a "Reviewing" or "In Review" status would stop multiple people from reviewing the same solution unintentionally. This status could be bypassed straight to "Approved" to avoid extra steps when it's not necessary and when in this status you should be able to revert back to "Awaiting Review" if you are unable to complete the review.

Extract Pipeline can't be ran due to validation errors

Description
Flow can no longer call the Extract pipeline because of:

{
  "status": 400,
  "message": "Could not queue the build because there were validation errors or warnings.\r\nAzure DevOps ActivityId: c6248c04-b903-4623-91d3-d22c10d86df1\r\nDetails: {\"ClassName\":\"Microsoft.TeamFoundation.Build.WebApi.BuildRequestValidationFailedException\",\"Message\":\"Could not queue the build because there were validation errors or warnings.\",\"Data\":null,\"InnerException\":null,\"HelpURL\":null,\"StackTraceString\":null,\"RemoteStackTraceString\":null,\"RemoteStackIndex\":0,\"ExceptionMethod\":null,\"HResult\":-2146232832,\"Source\":null,\"WatsonBuckets\":null,\"m_logException\":false,\"m_reportException\":false,\"m_errorCode\":0,\"m_logLevel\":\"warning\",\"m_eventId\":3000,\"ValidationResults\":[{\"result\":\"error\",\"message\":\"An error occurred while loading the YAML build pipeline. The repository Dynamics-Astro-FieldServices in project 98e11077-9170-4fcb-ac04-035a46bcbfa2 could not be retrieved. Verify the name and credentials being used.\"}]}\r\nclientRequestId: a3332d40-3706-4517-8d09-7cc846312509",
  "error": {
    "message": "Could not queue the build because there were validation errors or warnings.\r\nAzure DevOps ActivityId: c6248c04-b903-4623-91d3-d22c10d86df1\r\nDetails: {\"ClassName\":\"Microsoft.TeamFoundation.Build.WebApi.BuildRequestValidationFailedException\",\"Message\":\"Could not queue the build because there were validation errors or warnings.\",\"Data\":null,\"InnerException\":null,\"HelpURL\":null,\"StackTraceString\":null,\"RemoteStackTraceString\":null,\"RemoteStackIndex\":0,\"ExceptionMethod\":null,\"HResult\":-2146232832,\"Source\":null,\"WatsonBuckets\":null,\"m_logException\":false,\"m_reportException\":false,\"m_errorCode\":0,\"m_logLevel\":\"warning\",\"m_eventId\":3000,\"ValidationResults\":[{\"result\":\"error\",\"message\":\"An error occurred while loading the YAML build pipeline. The repository Dynamics-Astro-FieldServices in project 98e11077-9170-4fcb-ac04-035a46bcbfa2 could not be retrieved. Verify the name and credentials being used.\"}]}"
  },
  "source": "vsts-uks.azconn-uks-01.p.azurewebsites.net"
}

When trying to run the pipeline manually, I see the following:
image

Steps to reproduce
Steps to reproduce the behaviour:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behaviour
The extract pipeline should be able to run and called by the Flow.

Environment (please complete the following information):
image

Additional context
Extract pipeline YAML:

name: 'Solution Merge'
pool:
  vmImage: windows-latest
trigger: none
steps:
  - checkout: self
    persistCredentials: true
  - task: PowerShell@2
    inputs:
      workingDirectory: $(Build.SourcesDirectory)
      filePath: 'pipelines/scripts/Merge-SolutionMerge.ps1'
      arguments: '-ClientId "$(clientId)" -TenantId "$(tenantId)" -ClientSecret (ConvertTo-SecureString "$(clientSecret)" -AsPlainText -Force) -SolutionMergeId "$(solutionMergeId)" -DevEnvironmentUrl "$(devEnvironmentUrl)"'
    displayName: Extract and commit
    env:
      SYSTEM_ACCESSTOKEN: $(System.AccessToken)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.