我使用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
答案 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来访问这样的实用程序。它们非常轻量级,不会安装到注册表中,只需将它们添加到系统路径中即可。