我正在尝试获取jenkins从上一次构建和最新构建更新并存储在perl数组中的文件列表。
现在我有源代码中的文件和文件夹列表,在XXXX \ yyy / 。,XXX / TTTT / FFF.txt,...等文件中被视为敏感文件和文件夹.TXT
我希望该脚本应该告诉我这些敏感文件是否属于我更改的文件,如果是,请列出其名称,以便我们可以在开发构建之前与开发团队进行双重检查。
我应该如何实现这一目标,以及如何比较一个路径下的多个文件形成已更改的路径文件。
写在下面的脚本---在jenkins里面调用%workspace @作为参数
这不会给出任何匹配结果。
use warnings;
use Array::Utils qw(:all);
$url = `curl -s "http://localhost:8080/job/Rev-number/lastStableBuild/" | findstr "started by"`;
$url =~ /([0-9]+)/;
system("cd $ARGV[1]");
@difffiles = `svn diff -r $1:HEAD --summarize`;
chomp @difffiles;
foreach $f (@difffiles) {
$f = substr( $f, 8 );
$f = "$f\n";
}
open FILE, '/path/to/file'
or die "Can't open file: $!\n";
@array = <FILE>;
@isect = intersect( @difffiles, @array );
print @isect;
答案 0 :(得分:0)
我已经设法使用下面的perl脚本解决了这个问题 -
sub Verifysensitivefileschanges()
{
$count1=0;
@isect = intersect(@difffiles,@sensitive);
#print "ISECT=@isect\n";
foreach $t (@isect)
{
if (@isect) {print "Matching element found -- $t\n"; $count1=1;}
}
return $count1;
}
sub Verifysensitivedirschanges()
{
$count2=0;
foreach $g (@difffiles)
{
$dirs = dirname($g);
$filename = basename($g);
#print "$dirs\n";
foreach $j (@array)
{
if( "$j" =~ /\Q$dirs/)
{print "Sensitive path files changed under path $j and file name is $filename\n";$count2=1;}
}
}
return $count2;
}