Closed Erifirin closed 2 years ago
interesting thanks for the report
I managed to find a solution to this. I can't do a PR, as I did this work on behalf of my company, and we haven't set up an official GitHub channel for creating PRs and such (this is my personal account). The solution was to modify the deleteWithPrefix method in AzureArtifactManager.java.
private int deleteWithPrefix(String prefix) throws IOException, URISyntaxException, InterruptedException {
BlobContainerClient container = getContainer();
ListBlobsOptions listBlobsOptions = new ListBlobsOptions().setPrefix(prefix);
PagedIterable<BlobItem> listBlobItems = container.listBlobs(listBlobsOptions, null);
return deleteBlobs(container, listBlobItems);
}
This modification is needed as the current method was only gathering an incomplete blob name by only gathering the top directory using the prefix, and not the child blobs. As an example, as you had the following blob setup:
foo/file1.txt foo/file2.txt
If the Prefix passed in was "foo" then it would only get the blob name "foo". With the new method, it would get ["foo/file1.txt", "foo/file2.txt"] as expected. Hope this helps!
Seems to work fine I've applied the suggestion in https://github.com/jenkinsci/azure-artifact-manager-plugin/pull/34
All versions of Azure Artifact Manager after v86.va2aa4b1038c7 have the same issue. Any attempt to delete previously completed jobs with artifacts leads to unhandled exception in jenkins:
It also happens when embedded build discarder tries to remove old jobs and artifacts. But the blob definitely exists in Azure Storage and AAM v86.va2aa4b1038c7 removes it correctly.
In addition, the new AAM gives unexpected long names for downloaded files. Maybe this has something to do with the issue. AAM v86.va2aa4b1038c7: mini-market-1.2.1.291.apk AAM v97.v074e1332e88d: master_Mini-Market_mini-market-android_291artifacts.artifacts_mini-market-1.2.1.291.apk
Path in Azure Storage blob container: master/Mini-Market/mini-market-android/291/artifacts/.artifacts/mini-market-1.2.1.291.apk Jenking job url: https://****.cloudapp.azure.com/job/Mini-Market/job/mini-market-android/291/
Versions report:
Jenkins v2.319.1 Folders Plugin v6.16 Pipeline v2.6 Azure Artifact Manager v97.v074e1332e88d Azure Credentials v198.vf9c2fdfde55c Azure SDK API Plugin v70.v63f6a95999a7 Azure Storage plugin v365.vf41653c43b01
Full log: