在JenkinsFile中,我试图从url: https://github.com/pact-foundation/pact-ruby-standalone/releases/download/v1.91.0/pact-1.91.0-linux-x86_64.tar.gz恢复gzip压缩文件。
使用
命令sh 'curl -LOhttps://github.com/pact-foundation/pact-ruby-standalone/releases/download/v1.91.0/pact-1.91.0-linux-x86_64.tar.gz '
的东西工作整齐,我可以解压缩文件等。然而,我需要使这个http请求通过http_request插件从詹金斯(doc在这里:https://plugins.jenkins.io/http_request)
我的代码遵循Jenkins文档:
def response = httpRequest url: "https://github.com/pact-foundation/pact-ruby-standalone/releases/download/v1.91.0/pact-1.91.0-linux-x86_64.tar.gz",
httpMode: 'GET'
writeFile file: 'pact-1.91.0-linux-x86_64.tar.gz', text: response.content
问题是它不识别文件为gzip压缩数据,所以我不能通过命令tar xzf pact-1.91.0-linux-x86_64.tar.gz
真正解压缩它。
为了检查文件格式,我在JenkinsFile中运行以下命令:
sh 'file pact-1.91.0-linux-x86_64.tar.gz'
输出:pact-1.91.0-linux-x86_64.tar.gz:数据
期望输出:pact-1.91.0-linux-x86_64.tar.gz:gzip压缩数据
我试着看看是否可以通过linux命令获得原始文件并更改其格式,但不确定这是否可能。也许有一种方法,无论是从詹金斯或从Linux转换这个文件到gzip格式?
最后,我通过使用Jenkins插件提供的outputFile参数找到了另一个解决方案,如下所示:
httpRequest url: "https://github.com/pact-foundation/pact-ruby-standalone/releases/download/v1.91.0/pact-1.91.0-linux-x86_64.tar.gz",
httpMode: 'GET',
validResponseCodes: "200"
outputFile: 'pact-1.91.0-linux-x86_64.tar.gz'