1

我使用文档创建了一个自定义任务,但是它适用于 Azure DevOps Services,但在服务器上却给出了错误

An error occurred while loading the YAML build pipeline. Value cannot be null. Parameter name: key

我的第一个想法是“缺少什么参数?” 所以我填写了所有可用和可能的参数,但仍然继续出错。

之后,我转到运行 Azure DevOps Server 的机器中的事件查看器并收到此错误:

Detailed Message: The subscriber Pipelines Check Run: build completed event listener raised an exception while being notified of event Microsoft.TeamFoundation.Build2.Server.BuildCompletedEvent.
Exception Message: Value cannot be null.
Parameter name: definition and repository (type ArgumentNullException)
Exception Stack Trace:    at Microsoft.TeamFoundation.Pipelines.Server.Providers.TfsGitProvider.TfsGitConnectionCreator.IsProviderDefinition(IVssRequestContext requestContext, BuildDefinition definition)
   at Microsoft.TeamFoundation.Pipelines.Server.Extensions.BuildCompletedEventListener2.HandleCompletedEvent(IVssRequestContext requestContext, IReadOnlyBuildData build, BuildDefinition definition)
   at Microsoft.TeamFoundation.Pipelines.Server.Extensions.BuildCompletedEventListener.ProcessEvent(IVssRequestContext requestContext, NotificationType notificationType, Object notificationEvent, Int32& statusCode, String& statusMessage, ExceptionPropertyCollection& properties)
   at Microsoft.TeamFoundation.Framework.Server.TeamFoundationEventService.SubscriptionList.Notify(IVssRequestContext requestContext, NotificationType notificationType, Object notificationEventArgs, String& statusMessage, ExceptionPropertyCollection& properties, Exception& exception)

任务.json:

{
    "id": "25156245-9317-48e2-bcf4-7dab4c130a3e",
    "name": "ping-pong-build-trigger",
    "friendlyName": "Ping Pong Build Trigger",
    "description": "Randomly trigger builds to find a sequenced build order",
    "helpMarkDown": "https://github.com/brunomartinspro/Ping-Pong-Build-Trigger-AzureDevOps",
    "category": "Build",
    "author": "Bruno Martins (brunomartins.pro)",
    "version": {
        "Major": 1,
        "Minor": 0,
        "Patch": 0
    },
    "instanceNameFormat": "Ping Pong Build Trigger",
    "properties": {
        "mode": {
            "type": "string",
            "description": "Mode to be used",
            "label": "Mode",
            "required": "true"
        },
        "apiKey": {
            "type": "string",
            "label": "PAT",
            "defaultValue": "",
            "description": "Personal Access Token.",
            "required": "true"
        },
        "source": {
            "type": "string",
            "label": "AzureDevOps Project URI",
            "defaultValue": "http://kamina.azuredevops.local/DefaultCollection/Kamina",
            "description": "AzureDevOps Project URI.",
            "required": "true"
        },
        "projectName": {
            "type": "string",
            "label": "AzureDevOps Project Name",
            "defaultValue": "Kamina",
            "description": "AzureDevOps Project Name.",
            "required": "true"
        },
        "sourceBranch": {
            "type": "string",
            "label": "Git Source Branch",
            "defaultValue": "develop",
            "description": "The branch the builds will trigger",
            "required": "true"
        },
        "lastKnownFile": {
            "type": "string",
            "label": "Sequence Location",
            "defaultValue": "",
            "description": "The location of the Build Order.",
            "required": "true"
        },
        "maxErrorCycles": {
            "type": "int",
            "label": "Maximum Error Cycles",
            "defaultValue": 10,
            "description": "The number of fails allowed.",
            "required": "true"
        },
        "infiniteCycles": {
            "type": "string",
            "label": "Infinite Cycles",
            "defaultValue": "false",
            "description": "Infinite Cycles - only ends until everything succeeds.",
            "required": "true"
        }
    },
    "inputs": [{
            "name": "mode",
            "type": "string",
            "label": "Mode",
            "defaultValue": "AzureDevOps",
            "helpMarkDown": "Mode to be used.",
            "required": "true"
        },
        {
            "name": "apiKey",
            "type": "string",
            "label": "PAT",
            "defaultValue": "",
            "helpMarkDown": "Personal Access Token.",
            "required": "true"
        },
        {
            "name": "source",
            "type": "string",
            "label": "AzureDevOps Project URI",
            "defaultValue": "http://kamina.azuredevops.local/DefaultCollection/Kamina",
            "helpMarkDown": "AzureDevOps Project URI.",
            "required": "true"
        },
        {
            "name": "projectName",
            "type": "string",
            "label": "AzureDevOps Project Name",
            "defaultValue": "Kamina",
            "helpMarkDown": "AzureDevOps Project Name.",
            "required": "true"
        },
        {
            "name": "sourceBranch",
            "type": "string",
            "label": "Git Source Branch",
            "defaultValue": "develop",
            "helpMarkDown": "The branch the builds will trigger",
            "required": "true"
        },
        {
            "name": "lastKnownFile",
            "type": "string",
            "label": "Sequence Location",
            "defaultValue": "",
            "helpMarkDown": "The location of the Build Order.",
            "required": "true"
        },
        {
            "name": "maxErrorCycles",
            "type": "int",
            "label": "Maximum Error Cycles",
            "defaultValue": 10,
            "helpMarkDown": "The number of fails allowed.",
            "required": "true"
        },
        {
            "name": "infiniteCycles",
            "type": "string",
            "label": "Infinite Cycles",
            "defaultValue": "false",
            "helpMarkDown": "Infinite Cycles - only ends until everything succeeds.",
            "required": "true"
        }
    ],
    "execution": {
        "PowerShell": {
            "target": "ping-pong-build-trigger.ps1",
            "argumentFormat": ""
        }
    }
}

vss-extension.json

{
    "manifestVersion": 1,
    "id": "ping-pong-build-trigger-task",
    "name": "Ping Pong Build Trigger",
    "version": "1.0.0",
    "publisher": "BrunoMartinsPro",
    "targets": [{
        "id": "Microsoft.VisualStudio.Services"
    }],
    "description": "Randomly trigger builds to find a sequenced build order",
    "categories": [
        "Azure Pipelines"
    ],
    "icons": {
        "default": "extensionIcon.png"
    },
    "files": [{
        "path": "task"
    }],
    "contributions": [{
        "id": "ping-pong-build-trigger",
        "type": "ms.vss-distributed-task.task",
        "targets": [
            "ms.vss-distributed-task.tasks"
        ],
        "properties": {
            "name": "task"
        }
    }]
}

如何在服务和服务器中使用自定义任务?

.vsix 可以在 Github 存储库的发布页面下载:https ://github.com/brunomartinspro/Ping-Pong-Build-Trigger-AzureDevOps

开发者社区:https ://developercommunity.visualstudio.com/content/problem/715570/server-and-services-have-different-behavior.html

4

1 回答 1

0

所以看起来扩展中有某种缓存机制,我需要 3 个 azure devops 服务器版本来调试。第一个用于开发,第二个也用于开发,但卸载并重新安装,第三个用于测试公共版本。如果根本没有缓存,我找不到缓存存储位置的物理目录。

于 2019-08-29T13:00:34.583 回答