从 Azure DevOps 任务在 Nexus 上上传文件失败 "cURL"
File upload fail on Nexus from Azure DevOps task "cURL"
我正在尝试使用 "cURL" 任务从 Azure DevOps 管道上传文件 txt 或 .nupkg。但文件未上传并显示 1 条警告消息。
我的配置-
当前输出-
预期结果-
在 Nexus 服务器上上传文件。
请指出我缺少的内容!
正如您从日志中看到的错误消息:Multiple request required
,这是由 API 此任务生成的 Nexus 不正确引起的。其实在log的第一行可以看到它的API this cUrl task generated:
您可以在您的本地命令中测试它,并且会看到它失败并出现相同的错误“400 Bad request
”。此任务无法用于实现上传文件到 Nexus。参考其source code file :
curlRunner.arg('-T')
// arrayify the arg so vsts-task-lib does not try to break args at space
// this is required for any file input that could potentially contain spaces
curlRunner.arg([uploadFiles]);
curlRunner.arg(url);
if (redirectStderr) {
curlRunner.arg('--stderr');
curlRunner.arg('-');
}
if (options) {
curlRunner.line(options);
}
if (username || password) {
var userPassCombo = "";
if (username) {
userPassCombo += username;
}
userPassCombo += ":";
if (password) {
userPassCombo += password;
}
curlRunner.arg('-u');
curlRunner.arg(userPassCombo);
}
这是 API 任务生成的 uri。 但是 根据 Nexus 官方文档,正确的 cUrl
API 应该是这样的:
curl -v -F r={repostory} -F e={extension} -F g={group id} -F a={artifact id} -F v={version} -F p={packaging} -F file={file path} -u {username}:{password} http://localhost:8081/repository/{repostory}/
对比这个正确的Uri,可以看到生成和使用的任务没有完成。这就是您收到警告消息的原因:400 Bad request - cUrl API body does not completed, it required more multiple requests.
要将文件上传到 Nexus,您可以使用带有 cUrl API 脚本的命令行任务将文件上传到 Nexus 存储库管理器。
我正在尝试使用 "cURL" 任务从 Azure DevOps 管道上传文件 txt 或 .nupkg。但文件未上传并显示 1 条警告消息。
我的配置-
当前输出-
预期结果- 在 Nexus 服务器上上传文件。
请指出我缺少的内容!
正如您从日志中看到的错误消息:Multiple request required
,这是由 API 此任务生成的 Nexus 不正确引起的。其实在log的第一行可以看到它的API this cUrl task generated:
您可以在您的本地命令中测试它,并且会看到它失败并出现相同的错误“400 Bad request
”。此任务无法用于实现上传文件到 Nexus。参考其source code file :
curlRunner.arg('-T')
// arrayify the arg so vsts-task-lib does not try to break args at space
// this is required for any file input that could potentially contain spaces
curlRunner.arg([uploadFiles]);
curlRunner.arg(url);
if (redirectStderr) {
curlRunner.arg('--stderr');
curlRunner.arg('-');
}
if (options) {
curlRunner.line(options);
}
if (username || password) {
var userPassCombo = "";
if (username) {
userPassCombo += username;
}
userPassCombo += ":";
if (password) {
userPassCombo += password;
}
curlRunner.arg('-u');
curlRunner.arg(userPassCombo);
}
这是 API 任务生成的 uri。 但是 根据 Nexus 官方文档,正确的 cUrl
API 应该是这样的:
curl -v -F r={repostory} -F e={extension} -F g={group id} -F a={artifact id} -F v={version} -F p={packaging} -F file={file path} -u {username}:{password} http://localhost:8081/repository/{repostory}/
对比这个正确的Uri,可以看到生成和使用的任务没有完成。这就是您收到警告消息的原因:400 Bad request - cUrl API body does not completed, it required more multiple requests.
要将文件上传到 Nexus,您可以使用带有 cUrl API 脚本的命令行任务将文件上传到 Nexus 存储库管理器。