Skip to content

Commit

Permalink
fix(index): handle error when posting new tags
Browse files Browse the repository at this point in the history
Previous behavior was based on the use of `Q.allSettled`, which does not
distinguish between a successful promise, or a rejected promise.
Therefore, even if `conventional-gitlab-releaser` failed to post a new
GitLab Release page, `conventional-gitlab-releaser` would still call the
callback without an error, thereby causing consumers to assume
everything succeeded.

New behavior is based on the use of `Q.all`, which will distinguish
between a fulfilled promise and a rejected promise. Therefore we can
register a `then` callback for success, and a `catch` callback to handle
the first promise that fails.

Concern: Because we make POST requests for new tags concurrently, some
tags, and their respective Release pages, may be successfully created on
GitLab, yet `conventional-gitlab-releaser` could still report failure if
even a single POST request fails. That could leave the process of
creating tags in an undesired state. Long-term, perhaps we should
cleanup all created tags if a single request fails so that we leave the
target project in a clean state. (Though we need to also consider that
tag creation may automatically trigger other downstream processes; such
as CI).

Fixes #3
  • Loading branch information
hutson committed Jun 25, 2017
1 parent 9a18c37 commit 7c1e4d9
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -100,9 +100,12 @@ function conventionalGithubReleaser(auth, changelogOpts, context, gitRawCommitsO

cb();
}, function() {
Q.allSettled(promises)
Q.all(promises)
.then(function(responses) {
setImmediate(userCb, null, responses);
userCb(null, responses);
})
.catch(function(err) {
userCb(err);
});
}));
})
Expand Down

0 comments on commit 7c1e4d9

Please sign in to comment.