如何使用wget下载文件名版本动态变化的Jenkins artifact构件
解决方案
方法1:直接使用wget通配符匹配(最简单,适合目录下仅有一个符合规则的dmg文件的场景)
将原路径里的固定版本号替换为通配符*,同时使用--content-disposition参数让wget自动沿用服务器返回的原始文件名保存,无需手动指定输出文件名:
wget "https://test.com/job/testreport/job/${{parameters.test_buildjob}}/lastSuccessfulBuild/artifact/directrs/srww_*.dmg" \ --no-check-certificate \ --http-user=$(USERNAME) \ --http-password=$(PASSWORD) \ --auth-no-challenge \ --no-verbose \ --content-disposition
如果后续操作需要用到下载的文件名,可以在下载完成后用变量捕获:
# 按修改时间排序,取最新的srww开头dmg文件的文件名 DMG_NAME=$(ls -t srww_*.dmg | head -1)
方法2:先获取真实文件名再下载(适合目录下有多个版本文件、需要精准匹配的场景)
先请求文件存储目录的列表页,匹配出实际的dmg文件名后再执行下载,完全避免硬编码:
# 定义基础目录地址 BASE_URL="https://test.com/job/testreport/job/${{parameters.test_buildjob}}/lastSuccessfulBuild/artifact/directrs/" # 拉取目录列表,提取出符合规则的dmg文件名 DMG_NAME=$(wget -qO- --no-check-certificate --http-user=$(USERNAME) --http-password=$(PASSWORD) $BASE_URL | grep -oE 'srww_[0-9.]+\.dmg' | head -1) # 拼接完整链接执行下载 wget "${BASE_URL}${DMG_NAME}" \ --no-check-certificate \ --http-user=$(USERNAME) \ --http-password=$(PASSWORD) \ --auth-no-challenge \ --no-verbose \ -O ${DMG_NAME}
内容的提问来源于stack exchange,提问作者nrs
相关产品推荐
相关产品推荐

