2017-06-25 45 views
0

我试图发送到tfs发布管理的发布路径,而不会触发构建(我触发了代码释放)。通过目录路径释放tfs 2017.1

我想给一个新的sourceBranch路径,甚至defaultworkingdirectory ...

什么是我需要传递给TFS,使其工作的变量?我应该在发行版中使用哪个变量?

感谢

+0

什么**不**工作? –

+0

我不知道如何复制我发送的路径中的工件 –

回答

0

如果要触发与特定的构建作为文物源的版本中,您只需要使用create release REST API指定相应的版本ID。

因此,在您的代码中,您可以尝试使用变量Build.BuildId先获取构建ID,然后使用create release REST API来触发发布。

POST http://win-ke1habi:8080/tfs/DefaultCollection/LCTFVCScrum/_apis/release/releases/?api-version=3.0-preview.2 

Content-Type: application/json 

{ 
    "definitionId": {release definition id}, 
    "description": "lctest 0627 07 07 ", 
    "artifacts": [ 
    { 
     "alias": "{build definition name-alias}", 
     "instanceReference": { 
     "id": "{build id}" 
     } 
    } 
    ] 
} 

如果设置了TFVC 在你的发布定义的文物来源,你只需要指定源版本(变更版本)来触发释放:

POST http://win-ke1habi:8080/tfs/DefaultCollection/LCTFVCScrum/_apis/release/releases/?api-version=3.0-preview.2 

Content-Type: application/json 

{ 
    "definitionId": 4, 
    "description": "test060727", 
    "artifacts": [ 
     { 
       "alias": "LCTFVCScrum", 
       "instanceReference": { 
         "name": "Changeset 38", 
         "id": "38", 
         "sourceBranch": "$/LCTFVCScrum" 
       } 
     }  
    ] 
} 

更新:

这是不可能的,如果你想使用变量没有TFS系统,根据你的描述,补丁系统是一个单独的系统,变量cann即使您设置了,也不能在发布过程中进行识别。

如果您想自动执行此操作,则必须使用TFS系统,例如:对于修补程序,创建创建CI构建,检入增量修补程序将触发构建定义以生成构件(构建编号将为修补程序编号),然后创建一个CD版本,将CI构建定义设置为工件源。

+0

我很抱歉,但我无法从您的答案中了解 - 假设我的构建ID为2。我将发送看起来是这样的json, “definitionid”:2,“description”:“bla bla”,我的发布将开始。我需要发送什么字段来使发布版本复制路径内容? –

+0

谢谢。如果我想复制一个不是来自tfs的文件夹,有可能吗? –

+0

@EladMotola您可以创建一个复制命令文件(cmd文件),签入cmd文件,然后在构建或发布定义中添加“批处理脚本”任务,然后使用批处理脚本任务运行cmd。复制文件夹命令示例:(XCOPY \\ server \ DirA \ 0626 \ * \\ server \ DirA \ 0628/s/i),请参阅https://ss64.com/nt/xcopy.html –