在Jenkins中执行wget时如何通配符文件名

在Jenkins中执行wget时如何通配符文件名,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我已经阅读了之前所有关于这个的帖子,尝试了答案,但没有一个对我有用 这项工作: ssh myuser@mynode.mydomain.com 'sudo wget --auth-no-challenge --http-password=xyz123 --http-user=jenkins -O /srv/tomcat/webapps/ROOT.war http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild

我已经阅读了之前所有关于这个的帖子,尝试了答案,但没有一个对我有用

这项工作:

 ssh myuser@mynode.mydomain.com 'sudo wget --auth-no-challenge --http-password=xyz123 --http-user=jenkins -O /srv/tomcat/webapps/ROOT.war http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild/artifact/target/mywebsite-1.13.5.0.war'
这并不是:

 ssh myuser@mynode.mydomain.com 'sudo wget --auth-no-challenge --http-password=xyz123 --http-user=jenkins -A.war -l2 -O /srv/tomcat/webapps/ROOT.war http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild/artifact/target/'
我也试过-一个“.war”,它也不起作用,还有其他变体


有人成功地做过这个通配符吗?

你的问题本身与詹金斯或
ssh
无关,而是关于
wget
的问题

正如手册中所述,
wget
不知道web服务器上有哪些文件,它也不能通过http
ls-a
(出于各种原因,这不是一个好主意)。wget所能做的就是获取一个页面,阅读它,找到其中的任何链接,并用链接的材料做一些事情。例如,它可以打开链接页面并阅读它们。这被称为“爬行”

wget
可以做的一件事是跳过指向某些文件的任何链接,下载并保存某些其他文件。如果您想要完全抓取网站,但只关注网站上的
.jpg
图像,这将非常有用。因此,您可以告诉
wget
完全爬网站点(读取和分析任何
.html
文件),但只将
.jpg
文件保存到磁盘

wget
不做您想做的事情的原因是,可能没有一个页面包含指向所有工件的普通旧html链接。也许是javascript,或者别的什么


您可以查看
rsync--include='*.war'--exclude=“*”
或隐藏/取消隐藏Jenkins功能。

Jenkins使用JavaScript填充工件列表,这就是wget的递归下载无法工作的原因;没有可提取的直接链接

我将使用API调用获取感兴趣的工件列表,然后提取名称并用于后续调用,即:

actual_file_name=$(curl -s -ujenkins:xyz123 http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild/api/json | jq -r '[.artifacts[] | select(.fileName | endswith(".war")) | .relativePath] | first')
curl -s -ujenkins:xyz123 -o /srv/tomcat/webapps/ROOT.war http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild/artifact/$actual_file_name
编辑:

wget
相同:

actual_file_name=$(wget -q --auth-no-challenge --user jenkins --password xyz123 -O - http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild/api/json | jq -r '[.artifacts[] | select(.fileName | endswith(".war")) | .relativePath] | first')
wget --auth-no-challenge --user jenkins --password xyz123 -O /srv/tomcat/webapps/ROOT.war http://jenkins.mydomain.com/job/mywebsite/job/master/lastSuccessfulBuild/artifact/$actual_file_name