Thanks for your help!

I finally got around to this and created an issue for it with 2 PRs 
containing my implemented solution:
Add option for artifacts to be available through Azure Content Delivery 
Network (CDN) URL instead of through Azure Storage Account blob URL · Issue 
#84 · jenkinsci/azure-artifact-manager-plugin (github.com) 
<https://github.com/jenkinsci/azure-artifact-manager-plugin/issues/84>
Add support for Azure CDN endpoint URL by Minreaux · Pull Request #280 · 
jenkinsci/azure-storage-plugin (github.com) 
<https://github.com/jenkinsci/azure-storage-plugin/pull/280>
Add support for Azure CDN endpoint URL by Minreaux · Pull Request #85 · 
jenkinsci/azure-artifact-manager-plugin (github.com) 
<https://github.com/jenkinsci/azure-artifact-manager-plugin/pull/85>

On Friday, August 12, 2022 at 1:03:39 AM UTC-7 [email protected] wrote:

> I think you want to change either:
>
> https://github.com/jenkinsci/azure-artifact-manager-plugin/blob/master/src/main/java/com/microsoft/jenkins/artifactmanager/AzureBlobVirtualFile.java#L178-L185
>
> or
>
>
> https://github.com/jenkinsci/azure-artifact-manager-plugin/blob/7989b9c6a1c504f52ef80a80a5f2c89bccb78c61/src/main/java/com/microsoft/jenkins/artifactmanager/AzureBlobVirtualFile.java#L197
>
> It would help if you sent a branch with that you've tried or at least a 
> diff.
>
> On Fri, 12 Aug 2022 at 00:38, 'Ian Boudreaux' via Jenkins Developers <
> [email protected]> wrote:
>
>> Hi all,
>>
>> I am trying to update the Azure Artifact manager plugin 
>> <https://plugins.jenkins.io/azure-artifact-manager/> to be capable of 
>> using an Azure content delivery network (CDN) link for the produced 
>> artifacts available through Jenkins instead of the direct Azure blob 
>> storage links. The reason I am doing this is because downloads from the 
>> blob storage directly are throttled and downloads from the CDN are 
>> considerably faster, especially for geographically distributed users.
>>
>> This is also my first time trying to modify a Jenkins plugin, so I do 
>> acknowledge a lack of knowledge in general Jenkins plugin development. That 
>> being said, I've been investigating the Azure Artifact Manager source code 
>> for a couple days and I've determined this:
>>
>>    1. toExternalURL in the AzureBlobVirtualFile class 
>>    
>> <https://github.com/jenkinsci/azure-artifact-manager-plugin/blob/master/src/main/java/com/microsoft/jenkins/artifactmanager/AzureBlobVirtualFile.java#L189>,
>>  
>>    seems to be what determines the final link that users would see in 
>> Jenkins 
>>    to click upon that would download the blob artifact from the CDN. I 
>> removed 
>>    the "sas" variable from this URL and confirmed that the generated URL in 
>>    Jenkins that a user sees was missing the shared access signature and thus 
>>    inaccessible, so this confirmed it for me.
>>    2. I also know that, eventually, I would need to update the Azure 
>>    storage plugin <https://plugins.jenkins.io/windows-azure-storage/> to 
>>    take in a CDN URL through the Jenkins Azure Storage credential, do 
>>    validation on that URL, and then pass that URL into the Azure Artifact 
>>    Manager plugin
>>
>> That being said, the first problem I am having is finding a way to 
>> manually change the external URL in the Azure Artifact Manager so that it 
>> uses the CDN URL instead of the blob storage URL to prove this is possible 
>> before I dive deeper into the Azure storage plugin and passing the 
>> credential around.
>>
>> I've tried modifying the toExternalUrl method in the AzureBlobVirtualFile 
>> class by replacing the blob storage endpoint URL string with a manually 
>> input string of my CDN endpoint URL, but no matter what I try (except 
>> removing the '"sas" variable) I get a NullPointerException when trying to 
>> change the external URL string to anything other than a string that points 
>> to the blob storage endpoint URL:
>>
>>    - java.lang.NullPointerException
>>       - at 
>>       
>> com.microsoftopentechnologies.windowsazurestorage.helper.AzureStorageAccount.convertToStorageAccountInfo(AzureStorageAccount.java:254)
>>       - at 
>>       
>> com.microsoft.jenkins.artifactmanager.Utils.getStorageAccount(Utils.java:90)
>>       - at 
>>       
>> com.microsoft.jenkins.artifactmanager.AzureArtifactManager.archive(AzureArtifactManager.java:123)
>>       - at 
>>       hudson.tasks.ArtifactArchiver.perform(ArtifactArchiver.java:258)
>>    
>> Does anyone have any ideas on where to go from here? All I really need to 
>> do is swap the endpoint URL link at the very end of the artifact archiving 
>> process so that the artifact link that shows in Jenkins points to the CDN 
>> URL instead of the blob storage URL.
>>
>> Thanks!
>> Ian
>>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Jenkins Developers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected].
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/jenkinsci-dev/432a78bf-c750-455b-aa5c-d1d01c09f3b9n%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/jenkinsci-dev/432a78bf-c750-455b-aa5c-d1d01c09f3b9n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-dev/37a674a8-53cd-411e-abeb-c635052c7ca4n%40googlegroups.com.

Reply via email to