0

Visual Studio Online の REST API を使用しており、既存のビルド定義を更新しようとしています。

したがって、 https ://www.visualstudio.com/en-us/integrate/api/build/definitions#Updateabuilddefinition のドキュメントによると

既存のビルド定義を更新できると書かれています。

そこで、次の JSON を投稿にフィードします。

    { 
      id: 43,
      name: 'Test Build',
      revision: 10,
      variables: { 
        version: { value: '20', allowOverride: true } 
      },
      comment: 'New version added: 20' 
    }

したがって、id とリビジョンは既存のビルド定義と同じです。

次のエラーで失敗します。

    {
        "$id":"1",
        "innerException":null,
        "message":"Build definition Test Build already exists for project TestProject.",
        "typeName":"Microsoft.TeamFoundation.Build.WebApi.DefinitionExistsException, Microsoft.TeamFoundation.Build2.WebApi, Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a",
        "typeKey":"DefinitionExistsException",
        "errorCode":0,
        "eventId":3000
    }

私が間違っていることは何ですか?

4

2 に答える 2

1

「message=Build definition TestingBuild already exists for project MyProj.」というエラーが表示される場合。PowerShell に「-Method PUT」が必要な場所に「-Method Post」がある可能性があります。

于 2016-02-19T21:58:18.437 に答える
0

救助にフィドラー!

私がやろうとしていたのは、変数を使用してビルドをトリガーすることでした。これに関する以前の質問は、ビルド定義を更新することが唯一の方法であると指摘していました。

その必要はありません。ビルドをキューに入れると、ビルド定義の変数の値を送信できます。

したがって、 https ://www.visualstudio.com/en-us/integrate/api/build/builds#Queueabuild の API を使用して、ビルドをキューに入れます 。

投稿の本文に以下を送信します。

    { 
        queue: { id: 5 },
        definition: { id: 43 },
        project: { id: 'aaa12345-a1b2-1a23-123a-1234a56789ab' },
        parameters: '{"version":"20"}',
        reason: 1,
        demands: [] 
    }

次の点に注意してください。

  1. これは、変数ではなくパラメーターと呼ばれます。
  2. これは、json 要素ではなく、送信される文字列です。したがって、私のnodejsでは次のようにモックアップされています:

    parameters:"{\"version\":\"" + version + "\"}"
    

ビルドをキューに入れ、API を介して変数に値を提供できるようになりました

于 2016-02-05T13:22:58.183 に答える