我有一个从工件 jenkins 插件派生的插件,它将工件部署到工件。几天前我遇到一个奇怪的问题时,它现在工作正常:我将我的工件部署到布局并且插件部署良好,但是在布局的叶级别而不是部署工件,它使它成为一个空文件夹。
我进入日志并看到以下内容:
(o.a.e.UploadServiceImpl:273) - MKDir request to 'yum-snapshot-local:rhel5/i386/packages//-1.12.13-d.34.i386.rpm'
2015-06-04 00:00:10,219 [http-bio-8081-exec-1339] [INFO ] (o.a.e.UploadServiceImpl:279) - Directory 'yum-snapshot-local:rhel5/i386/packages//-1.12.13-d.34.i386.rpm' was created successfully.
2015-06-04 00:00:11,326 [http-bio-8081-exec-1366] [INFO ] (o.a.r.r.c.BuildResource:286) - Adding build 'test #34'
2015-06-04 00:00:11,550 [http-bio-8081-exec-1366] [INFO ] (o.a.r.r.c.BuildResource:303) - Added build 'test #34'
正如您所看到的,由于某种原因,插件发出 mkdir 请求而不是部署,这就是为什么创建空目录的原因,但这只是 2.2.7 工件 jenkins 插件的一个分支。
我使用旧版本的插件,似乎部署得很好,日志显示:
2015-06-03 23:48:00,458 [http-bio-8081-exec-1339] [INFO ] (o.a.e.UploadServiceImpl:479) - Deploy to 'libs-snapshot-
local:djin/platforn/cande/FreeBSD/i386/packages/something/something-1.12.13-d.20.i386.rpm' Content-Length: 51
为什么它应该突然发出 mkdir rquest ?另外我在哪里可以找到这个“oaeUploadServiceImpl”文件?
编辑 1.0
非常感谢,看起来问题在这里:
private void adjustResponseAndUpload(ArtifactoryRequest request, ArtifactoryResponse response,
LocalRepo targetRepository) throws IOException {
if (processOriginatedExternally(response)) {
response = new DelayedHttpResponse((HttpArtifactoryResponse) response);
}
try {
if (request.isDirectoryRequest()) {
createDirectory(request, response);
} else if (request.isChecksum()) {
validateAndUploadChecksum(request, response, targetRepository);
} else if (NamingUtils.isMetadata(request.getPath())) {
response.sendError(SC_CONFLICT, "Old metadata notation is not supported anymore: " +
request.getRepoPath(), log);
} else {
uploadArtifact(request, response, targetRepository);
}
if (request.isDirectoryRequest()) 由于某种原因返回 true,因此将其作为文件夹处理,但有什么好的理由?