从teamcity下载最后完成的构建

时间:2013-12-03 15:56:46

标签: perl teamcity

我使用Perl的File :: Fetch从Teamcity中最后完成的构建中下载文件。这是正常工作,除了文件版本,但我没有得到版本号。

sub GetTeamcityFiles {
    my $latest_version = "C:/dowloads"
    my $uri = "http://<teamcity>/guestAuth/repository/download/bt11/.lastFinished/MyApp.{build.number}.zip";

    # fetch the uri to extract directory 
    my $ff = File::Fetch->new(uri => "$uri");
    my $where = $ff->fetch( to => "$latest_version" );

这给了我一个文件: C:\下载\ MyApp的{build.number}的.zip

但是,下载的文件名称在名称中包含内部版本号。不幸的是,zip中没有版本文件,所以这是我告诉我已经下载了什么文件的唯一方法。有没有办法获得这个版本号? C:\下载\ MyApp.12345.zip

1 个答案:

答案 0 :(得分:0)

使用构建配置修改

如果您能够在TeamCity中修改构建配置,则可以轻松地将构建号嵌入到zip文件中。

  • 创建新的构建步骤 - 选择命令行
  • 对于脚本,请执行以下操作:echo %build.number% > version.txt
  • 这会将version.txt放在TeamCity中构建文件夹的根目录下,您可以在以后创建它时将其包含在zip中。
  • 您可以稍后阅读该文件。

我现在无法访问我的服务器,因此我没有参数的确切名称,但输入%build会提取一个TeamCity参数列表供您选择,并且我认为你所追求的是%build.number%。


没有构建配置修改

如果你无法修改配置,你将需要像egrep这样的东西:

$ echo MyApp.12.3.4.zip | egrep -o '([0-9]+.){2}[0-9]+'
> 12.3.4

$ echo MyApp.1234.zip | egrep -o '[0-9]+'
> 1234

看起来你在Windows上运行;在这些情况下,我使用UnxUtils & UnxUpdates来访问这样的实用程序。它们非常轻量级,不会安装到注册表中,只需将它们添加到系统路径中即可。