A Grunt plugin for for uploading files to Azure Blob Storage. Wraps a vanilla node package https://github.com/bestander/deploy-azure-cdn. It is perfect for deploying compiled assets to Microsoft Azure CDN as a last step in a Continuous Integration setup.
npm install grunt-azure-cdn-deploy
grunt.loadNpmTasks('grunt-azure-cdn-deploy');
grunt.initConfig({
'azure-cdn-deploy': {
app: {
options: {
containerName: 'test', // container name in blob
serviceOptions: ['blobstoragename', '/OwQ/MyLongSecretStringFromAzureConfigPanel'], // custom arguments to azure.createBlobService
folder: '1.2.35-b27', // path within container
zip: true, // gzip files if they become smaller after zipping, content-encoding header will change if file is zipped
deleteExistingBlobs: true, // true means recursively deleting anything under folder
concurrentUploadThreads: 10, // number of concurrent uploads, choose best for your network condition
metadata: {
cacheControl: 'public, max-age=31530000', // cache in browser
cacheControlHeader: 'public, max-age=31530000' // cache in azure CDN. As this data does not change, we set it to 1 year
},
testRun: false // test run - means no blobs will be actually deleted or uploaded, see log messages for details
},
src: [
'src/*.{js,json}',
'*.md',
'.gitignore'
],
cwd: './node_modules/deploy-azure-cdn'
}
}
});
run
grunt azure-cdn-deploy --debug
To see the log of deleted and uploaded files
deployOptions
- azure cdn and upload configs
serviceOptions
: [] - custom arguments to azure.createBlobService, or you can use Azure SDK environment variables AZURE_STORAGE_ACCOUNT and AZURE_STORAGE_ACCESS_KEYcontainerName
: null - container name, requiredcontainerOptions
: {publicAccessLevel: "blob"} - container optionsfolder
: '', // path within container. Default is root directory of containerdeleteExistingBlobs
: true, // set it to false to skip recursive deleting blobs in folderconcurrentUploadThreads
: 10, // number of concurrent uploads, choose best for your network conditionzip
: false, // true if want to gzip the files before uploading. File will be zipped only if compressed file is smaller than originalmetadata
: {cacheControl: 'public, max-age=31556926'} // metadata for each uploaded filetestRun
: false, // set to true if you just want to check connectivity and see deployment logs. No blobs will be removed or uplaoded.