Powershell 使用动态名称访问Teamcity工件

Powershell 使用动态名称访问Teamcity工件,powershell,teamcity-9.0,Powershell,Teamcity 9.0,我想通过powershell下载TeamCity工件。它需要是特定分支的最后一次成功构建 我注意到访问工件的两个常见url路径。一个似乎是 /repository/download/BUILD\u TYPE\u EXT\u ID/。lastsucsuccessful/ARTIFACT\u PATH 问题是,最后的文件依赖于发布版本。在TeamCity中,有语法指定所有文件\*.msi。在尝试访问此url时,是否有任何方法指定以FileName-{version.number}.msi开头的工件

我想通过powershell下载TeamCity工件。它需要是特定分支的最后一次成功构建

我注意到访问工件的两个常见url路径。一个似乎是
/repository/download/BUILD\u TYPE\u EXT\u ID/。lastsucsuccessful/ARTIFACT\u PATH

问题是,最后的文件依赖于发布版本。在TeamCity中,有语法指定所有文件
\*.msi
。在尝试访问此url时,是否有任何方法指定以
FileName-{version.number}.msi
开头的工件


编辑:

我注意到的另一个url是RESTAPI

http://teamcity/guestAuth/app/rest/builds/branch:[BRANCH],buildType:[BUILD TYPE],status:SUCCESS,state:finished/artifacts/[BUILD PATH] 
问题是我不能从这里下载工件。如果我想下载工件,我必须使用当前的构建id。上面的url提供了以下url:
/guestAuth/app/rest/builds/id:[build id]/artifacts/content/[Artifact Path]
,以下载工件


我可以使用第一个REST url最终通过返回的xml获取第二个url,但我更喜欢一种更直接的方法。

不幸的是,由于TeamCity工件不可浏览,通常的解决方法(如wget递归下载或通配符)不适用

您可以尝试的一种解决方法是格式化作业中的链接,将链接保存到文本文件,并使用静态名称将其存储为工件。然后,您只需要下载该文本文件即可获得链接

我发现您可以通过以下操作格式化TeamCity作业中的工件URL:

%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/

在命令行步骤中。您可以通过执行以下操作将其写入文件:

echo%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/myMsi-1.2.3.4.msi>msiLink.txt“

现在您有了一个具有常量名称的工件,它指向具有更改名称的安装程序(或其他工件)

如果您使用artifact msiLink.txt,则不需要使用REST接口(它仍然是两个调用,都通过同一接口)

您可以通过以下方式从batch/cmd轻松下载最新版本:

wget/repository/download/BUILD\u TYPE\u EXT\u ID/.lastsucsuccessful/msiLink.txt---user\####

set/P msi_url=

不幸的是,由于TeamCity工件不可浏览,wget递归下载或通配符等常规解决方法不适用

您可以尝试的一种解决方法是格式化作业中的链接,将链接保存到文本文件,并将其存储为工件,使用静态名称。然后您只需下载该文本文件即可获得链接

我发现您可以通过以下操作格式化TeamCity作业中的工件URL:

%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/

在命令行步骤中。您可以通过执行以下操作将其写入文件:

echo%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/myMsi-1.2.3.4.msi>msiLink.txt“

现在您有了一个具有常量名称的工件,它指向具有更改名称的安装程序(或其他工件)

如果您使用artifact msiLink.txt,则不需要使用REST接口(它仍然是两个调用,都通过同一接口)

您可以通过以下方式从batch/cmd轻松下载最新版本:

wget/repository/download/BUILD\u TYPE\u EXT\u ID/.lastsucsuccessful/msiLink.txt---user\####

set/P msi_url=

不幸的是,由于TeamCity工件不可浏览,wget递归下载或通配符等常规解决方法不适用

您可以尝试的一种解决方法是格式化作业中的链接,将链接保存到文本文件,并使用静态名称将其存储为工件。然后,您只需要下载该文本文件即可获得链接

我发现您可以通过以下操作格式化TeamCity作业中的工件URL:

%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/

在命令行步骤中。您可以通过执行以下操作将其写入文件:

echo%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/myMsi-1.2.3.4.msi>msiLink.txt“

现在您有了一个具有常量名称的工件,它指向具有更改名称的安装程序(或其他工件)

如果您使用artifact msiLink.txt,则不需要使用REST接口(它仍然是两个调用,都通过同一接口)

您可以通过以下方式从batch/cmd轻松下载最新版本:

wget/repository/download/BUILD\u TYPE\u EXT\u ID/.lastsucsuccessful/msiLink.txt---user\####

set/P msi_url=

不幸的是,由于TeamCity工件不可浏览,wget递归下载或通配符等常规解决方法不适用

您可以尝试的一种解决方法是格式化作业中的链接,将链接保存到文本文件,并将其存储为工件,使用静态名称。然后您只需下载该文本文件即可获得链接

我发现您可以通过以下操作格式化TeamCity作业中的工件URL:

%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/

在命令行步骤中。您可以通过执行以下操作将其写入文件:

echo%teamcity.serverUrl%/repository/download/%system.teamcity.buildType.id%/%teamcity.build.id%:id/myMsi-1.2.3.4.msi>msiLink.txt“

现在您有了一个具有常量名称的工件,它指向具有更改名称的安装程序(或其他工件)

如果您使用artifact msiLink.txt,则不需要使用REST接口(它仍然是两个调用,都通过同一接口)

你可以放松下来