briareus
Version:
Briareus assists with Feature Branch deploys to ECS
40 lines (35 loc) • 1.22 kB
JavaScript
const async = require('async');
const _ = require('lodash');
module.exports = function (client) {
return function (options, cb) {
function waitUntilProvisioned(variant, cb) {
if (['provisioned', 'deployed'].indexOf(variant.data.status) > -1) return cb(null, variant);
console.log('waiting for variant to be provisioned ...')
client.variant.get({ slug: variant.data.slug }, (err, variant) => {
if (variant.data.status === 'error') {
return cb(new Error('deployment failed'));
}
return setTimeout(() => waitUntilProvisioned(variant, cb), 5000);
});
}
async.waterfall([
// Create Variant if one doesn't already exist
(next) => {
client.variant.get({ slug: options.data.slug }, (err, variant) => {
if (variant) return next(null, variant);
if (err && err.code !== 404) return next(err);
client.variant.create(options, next);
});
},
waitUntilProvisioned,
(variant, next) => {
let params = {
data: options.data,
slug: options.data.slug
};
client.variant.deployment.create(params, next);
},
], cb);
}
}