heroku-releases-retry
Advanced tools
Comparing version 1.0.1 to 1.0.2
@@ -16,4 +16,4 @@ 'use strict' | ||
yield cli.action(`Retrying ${cli.color.green('v' + release.version)} on ${cli.color.app(context.app)}`, {success: false}, co(function * () { | ||
let retry = yield heroku.post(`/apps/${context.app}/releases`, { | ||
let retry = yield cli.action(`Retrying ${cli.color.green('v' + release.version)} on ${cli.color.app(context.app)}`, {success: false}, co(function * () { | ||
let r = yield heroku.post(`/apps/${context.app}/releases`, { | ||
body: { | ||
@@ -24,4 +24,24 @@ slug: release.slug.id, | ||
}) | ||
cli.action.done(`done, ${cli.color.green('v' + retry.version)}`) | ||
cli.action.done(`done, ${cli.color.green('v' + r.version)}`) | ||
return r | ||
})) | ||
if (retry.output_stream_url) { | ||
cli.log('Running release command...') | ||
yield new Promise(function (resolve, reject) { | ||
let stream = cli.got.stream(retry.output_stream_url) | ||
stream.on('error', reject) | ||
stream.on('end', resolve) | ||
let piped = stream.pipe(process.stdout) | ||
piped.on('error', reject) | ||
}).catch(err => { | ||
if (err.statusCode === 404) { | ||
cli.warn('Release command starting. Use `heroku releases:output` to view the log.') | ||
return | ||
} | ||
throw err | ||
}) | ||
} | ||
} | ||
@@ -28,0 +48,0 @@ |
{ | ||
"name": "heroku-releases-retry", | ||
"version": "1.0.1", | ||
"version": "1.0.2", | ||
"description": "Retry failed release-phase commands", | ||
@@ -21,11 +21,13 @@ "main": "index.js", | ||
"dependencies": { | ||
"heroku-cli-util": "6.0.16", | ||
"co": "4.6.0" | ||
"co": "4.6.0", | ||
"heroku-cli-util": "6.0.16" | ||
}, | ||
"devDependencies": { | ||
"chai": "^3.3.0", | ||
"mocha": "3.1.2", | ||
"nock": "9.0.2", | ||
"nyc": "8.4.0", | ||
"standard": "8.5.0" | ||
"standard": "8.5.0", | ||
"std-mocks": "1.0.1" | ||
} | ||
} |
@@ -7,2 +7,4 @@ 'use strict' | ||
const cmd = require('../..').commands.find(c => c.topic === 'releases' && c.command === 'retry') | ||
const expect = require('chai').expect | ||
const stdMocks = require('std-mocks') | ||
@@ -21,2 +23,39 @@ describe('releases:retry', function () { | ||
}) | ||
it('retries the release with output', function () { | ||
stdMocks.use() | ||
let busl = nock('https://busl.test:443') | ||
.get('/streams/release.log') | ||
.reply(200, 'Release Output Content') | ||
let api = nock('https://api.heroku.com:443') | ||
.get('/apps/myapp/releases') | ||
.reply(200, [{ 'slug': { id: 'slug_uuid' }, version: 40 }]) | ||
.post('/apps/myapp/releases', { slug: 'slug_uuid', description: 'Retrying v40' }) | ||
.reply(200, {output_stream_url: 'https://busl.test/streams/release.log'}) | ||
return cmd.run({app: 'myapp'}) | ||
.then(() => expect(stdMocks.flush().stdout.join('')).to.equal('Release Output Content')) | ||
.then(() => expect(cli.stderr).to.equal('')) | ||
.then(() => api.done()) | ||
.then(() => busl.done()) | ||
.then(() => stdMocks.restore()) | ||
.catch(() => stdMocks.restore()) | ||
}) | ||
it('retries the release with missing output', function () { | ||
let busl = nock('https://busl.test:443') | ||
.get('/streams/release.log') | ||
.reply(404, '') | ||
let api = nock('https://api.heroku.com:443') | ||
.get('/apps/myapp/releases') | ||
.reply(200, [{ 'slug': { id: 'slug_uuid' }, version: 40 }]) | ||
.post('/apps/myapp/releases', { slug: 'slug_uuid', description: 'Retrying v40' }) | ||
.reply(200, {version: 1, output_stream_url: 'https://busl.test/streams/release.log'}) | ||
return cmd.run({app: 'myapp'}) | ||
.then(() => expect(cli.stdout).to.equal('Running release command...\n')) | ||
.then(() => expect(cli.stderr).to.contain('Release command starting. Use `heroku releases:output` to view the log.\n')) | ||
.then(() => api.done()) | ||
.then(() => busl.done()) | ||
}) | ||
}) |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
6132
116
6