phillipsj / Cake.AzureStorage

Cake Addin for working with Azure Storage
Apache License 2.0
6 stars 10 forks source link
azure azure-storage cake-addin

Cake.AzureStorage

A Cake Addin for Azure Storage.

Build status Develop MyGet Build Status cakebuild.net Join in the discussion on the Cake repository

Functionality

Supports uploading Blobs to Azure Blob Storage as well as deleting them by prefix and by name. More features to be added in the future.

Usage

To use the addin just add it to Cake call the aliases and configure any settings you want.

#addin "Cake.AzureStorage"
...

// How to package with no settings
Task("PackageNoSettings")
    .Does(() => {
     var settings = new AzureStorageSettings();
     settings.AccountName = "AccountName";
     settings.Key = "API KEY";
     settings.ContainerName = "ContainerName";
     settings.BlobName = "BlobName";
       UploadFileToBlob(settings, GetFile("./path/to/file/to/upload"));
    });

// How to specify blob content type if necessary
Task("PackageSpecifyContentType")
    .Does(() => {
     var settings = new AzureStorageSettings();
     settings.AccountName = "AccountName";
     settings.Key = "API KEY";
     settings.ContainerName = "ContainerName";
     settings.BlobName = "BlobName";
     settings.ContentType = "image/jpeg";
       UploadFileToBlob(settings, GetFile("./path/to/file/to/upload"));
    });

Task("PackageAfterDelete")
    .Does(() => {
        var settings = new AzureStorageSettings();
        settings.AccountName = "AccountName";
        settings.Key = "API KEY";
        settings.ContainerName = "ContainerName";
        settings.BlobName = "NameToDelete";
        DeleteBlob(settings);

        settings.BlobName = "NameToUploadAs";
        var filePath = new FilePath("./location/of/file/to/upload");
        UploadFileToBlob(settings, filePath);
    });

Task("PackageAfterMultiDelete")
    .Does(() => {
        var settings = new AzureStorageSettings();
        settings.AccountName = "AccountName";
        settings.Key = "API KEY";
        settings.ContainerName = "ContainerName";
        settings.BlobName = "PrefixToSearchBy";

        var deletedLog = DeleteBlobsByPrefix(settings);
        foreach (var line in deletedLog){
            Information(line);
        }

        settings.BlobName = "NameToUploadAs";
        var filePath = new FilePath("./location/of/file/to/upload");
        UploadFileToBlob(settings, filePath);
    });

The Prefix used for deleting blobs is exactly like it sounds, a prefix of the file you want to delete. So if you have files named ABC-ImportantFile-1.0.0.1.exe, ABC-ImportantFile-1.0.0.2.exe, ABC-ImportantFile-1.0.0.3.exe, etc. You can delete these by specifying "ABC-ImportantFile-" as your blob name and it will get all files starting with that string.

That's it.

Hope you enjoy using.

Discussion

For questions and to discuss ideas & feature requests, use the GitHub discussions on the Cake GitHub repository, under the Extension Q&A category.

Join in the discussion on the Cake repository