-
Notifications
You must be signed in to change notification settings - Fork 481
/
deployments.js
55 lines (51 loc) · 1.58 KB
/
deployments.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
const slack = require('../../slack/client');
const { get, set } = require('./../../storage');
const { DeploymentStatus } = require('./../../slack/renderer/deployment-status');
async function deploymentStatus(context) {
// @todo need to paginate this properly
const branches = (await context.github.repos.getBranches({
owner: context.payload.repository.owner.login,
repo: context.payload.repository.name,
per_page: 100,
})).data;
const deploymentStatusMessage = new DeploymentStatus({
deploymentStatus: context.payload.deployment_status,
deployment: context.payload.deployment,
repository: context.payload.repository,
branches,
});
const id = context.payload.deployment.id;
let exists = true;
let storedMetaData;
try {
storedMetaData = await get(`deployment-${id}`);
} catch (error) {
// new deployment status
exists = false;
}
if (exists) {
slack.web.chat.update(storedMetaData.ts, storedMetaData.channel, '', deploymentStatusMessage.getRenderedMessage(), (err, res) => {
if (err) {
console.log('Error:', err);
} else {
console.log('Message sent: ', res);
}
});
} else {
slack.web.chat.postMessage('#general', '', deploymentStatusMessage.getRenderedMessage(), (err, res) => {
if (err) {
console.log('Error:', err);
} else {
console.log('Message sent: ', res);
const messageMetaData = {
channel: res.channel,
ts: res.ts,
};
set(`deployment-${id}`, messageMetaData);
}
});
}
}
module.exports = {
deploymentStatus,
};