Skip to content

Commit e06dc51

Browse files
committed
dist
1 parent 630f524 commit e06dc51

File tree

3 files changed

+137
-0
lines changed

3 files changed

+137
-0
lines changed

dist/helpers/discord.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });
3+
const XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest;
4+
function executeWebhook(payload, webhookURL) {
5+
let stringifiedPayload = JSON.stringify(payload);
6+
var xhr = new XMLHttpRequest();
7+
xhr.open('POST', webhookURL, true);
8+
xhr.setRequestHeader('Content-Type', 'application/json');
9+
xhr.send(stringifiedPayload);
10+
}
11+
exports.default = executeWebhook;

dist/helpers/discordTypes.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
"use strict";
2+
Object.defineProperty(exports, "__esModule", { value: true });

dist/index.js

Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
"use strict";
2+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3+
if (k2 === undefined) k2 = k;
4+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5+
}) : (function(o, m, k, k2) {
6+
if (k2 === undefined) k2 = k;
7+
o[k2] = m[k];
8+
}));
9+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10+
Object.defineProperty(o, "default", { enumerable: true, value: v });
11+
}) : function(o, v) {
12+
o["default"] = v;
13+
});
14+
var __importStar = (this && this.__importStar) || function (mod) {
15+
if (mod && mod.__esModule) return mod;
16+
var result = {};
17+
if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18+
__setModuleDefault(result, mod);
19+
return result;
20+
};
21+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
22+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
23+
return new (P || (P = Promise))(function (resolve, reject) {
24+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
25+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
26+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
27+
step((generator = generator.apply(thisArg, _arguments || [])).next());
28+
});
29+
};
30+
var __importDefault = (this && this.__importDefault) || function (mod) {
31+
return (mod && mod.__esModule) ? mod : { "default": mod };
32+
};
33+
Object.defineProperty(exports, "__esModule", { value: true });
34+
const core = __importStar(require("@actions/core"));
35+
const GitHub = __importStar(require("@actions/github"));
36+
const discord_1 = __importDefault(require("./helpers/discord"));
37+
const { GITHUB_RUN_ID, GITHUB_WORKFLOW } = process.env;
38+
function wordToUpperCase(word) {
39+
return word[0].toUpperCase() + word.substring(1, word.length).toLowerCase();
40+
}
41+
function workflowStatusFromJobs(jobs) {
42+
let statuses = jobs.map(j => j.status);
43+
if (statuses.includes('cancelled')) {
44+
return 'Cancelled';
45+
}
46+
if (statuses.includes('failure')) {
47+
return 'Failure';
48+
}
49+
return 'Success';
50+
}
51+
function run() {
52+
return __awaiter(this, void 0, void 0, function* () {
53+
try {
54+
if (GITHUB_RUN_ID == undefined) {
55+
core.setFailed('Unable to locate the current run id... Something is very wrong');
56+
}
57+
else {
58+
const githubToken = core.getInput('github-token', { required: true });
59+
const discordWebhook = core.getInput('discord-webhook', { required: true });
60+
const username = core.getInput('username');
61+
const avatarURL = core.getInput('avatar-url');
62+
const includeDetails = core.getInput('include-details').trim().toLowerCase() === 'true' || false;
63+
const colorSuccess = parseInt(core.getInput('color-success').trim().replace(/^#/g, ''), 16);
64+
const colorFailure = parseInt(core.getInput('color-failure').trim().replace(/^#/g, ''), 16);
65+
const colorCancelled = parseInt(core.getInput('color-cancelled').trim().replace(/^#/g, ''), 16);
66+
const inputTitle = core.getInput('title');
67+
const inputDescription = core.getInput('description');
68+
core.setSecret(githubToken);
69+
core.setSecret(discordWebhook);
70+
const octokit = GitHub.getOctokit(githubToken);
71+
const context = GitHub.context;
72+
octokit.actions.listJobsForWorkflowRun({
73+
owner: context.repo.owner,
74+
repo: context.repo.repo,
75+
run_id: parseInt(GITHUB_RUN_ID, 10)
76+
})
77+
.then(response => {
78+
let workflowJobs = response.data.jobs;
79+
let jobData = workflowJobs
80+
.filter(j => j.status === 'completed')
81+
.map(j => ({ name: j.name, status: j.conclusion, url: j.html_url }));
82+
let workflowStatus = workflowStatusFromJobs(jobData);
83+
let color = workflowStatus === 'Success' ? colorSuccess : (workflowStatus === 'Failure' ? colorFailure : colorCancelled);
84+
let payload = {
85+
username: username,
86+
avatar_url: avatarURL,
87+
embeds: [
88+
{
89+
author: {
90+
name: context.actor,
91+
url: `https://github.com/${context.actor}`,
92+
icon_url: `https://github.com/${context.actor}.png`
93+
},
94+
title: inputTitle.replace('{{STATUS}}', workflowStatus) || `[${context.repo.owner}/${context.repo.repo}] ${GITHUB_WORKFLOW}: ${workflowStatus}`,
95+
url: `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${GITHUB_RUN_ID}`,
96+
description: inputDescription.replace('{{STATUS}}', workflowStatus) || undefined,
97+
color: color
98+
}
99+
]
100+
};
101+
if (includeDetails) {
102+
let fields = [];
103+
jobData.forEach(jd => {
104+
fields.push({
105+
name: jd.name,
106+
value: `[\`${jd.status}\`](${jd.url})`,
107+
inline: true
108+
});
109+
});
110+
payload.embeds[0].fields = fields;
111+
}
112+
discord_1.default(payload, discordWebhook);
113+
})
114+
.catch(error => {
115+
core.setFailed(error.message);
116+
});
117+
}
118+
}
119+
catch (error) {
120+
core.setFailed(error.message);
121+
}
122+
});
123+
}
124+
run();

0 commit comments

Comments
 (0)