Skip to content

Commit dfc8580

Browse files
committed
feat: add any fields from GitHub Actions
1 parent c4847b8 commit dfc8580

File tree

5 files changed

+63
-5
lines changed

5 files changed

+63
-5
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ You can customize the following parameters:
5656
|channel|optional|Use Slack Incoming Webhook configuration|Slack channel name|
5757
|commit|optional|false|If true, slack notification includes the latest commit message and author.|
5858
|token|case by case|N/A|This token is used to get commit data.<br>If commit parameter is true, this parameter is required.<br>${{ secrets.GITHUB_TOKEN }} is recommended.|
59+
|more_fields|optional|N/A|Any data fields, example: `{"key1": "value1", "key2": "value2"}`|
5960

6061
Please refer to [action.yml](./action.yml) for more details.
6162

action.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,12 @@ inputs:
3333
token:
3434
description: 'need to get commit data'
3535
required: false
36+
more_fields:
37+
description: 'any data fields'
38+
required: false
3639
runs:
3740
using: 'node12'
3841
main: 'dist/index.js'
3942
branding:
4043
icon: 'bell'
41-
color: 'green'
44+
color: 'green'

dist/index.js

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27921,6 +27921,8 @@ function run() {
2792127921
};
2792227922
const commitFlag = core.getInput('commit') === 'true';
2792327923
const token = core.getInput('token');
27924+
const moreFieldsString = core.getInput('more_fields');
27925+
const moreFields = JSON.parse(moreFieldsString);
2792427926
if (mention && !utils_1.isValidCondition(mentionCondition)) {
2792527927
mention = '';
2792627928
mentionCondition = '';
@@ -27936,7 +27938,7 @@ function run() {
2793627938
`);
2793727939
}
2793827940
const slack = new slack_1.Slack();
27939-
const payload = yield slack.generatePayload(jobName, status, mention, mentionCondition, commitFlag, token);
27941+
const payload = yield slack.generatePayload(jobName, status, mention, mentionCondition, commitFlag, token, moreFields);
2794027942
console.info(`Generated payload for slack: ${JSON.stringify(payload)}`);
2794127943
yield slack.notify(url, slackOptions, payload);
2794227944
console.info('Sent message to Slack');
@@ -28086,6 +28088,22 @@ class Block {
2808628088
return fields;
2808728089
});
2808828090
}
28091+
/**
28092+
* Get MakdwnElement fields including any data
28093+
* @param {object} fields
28094+
* @returns {Promise<MrkdwnElement[]>}
28095+
*/
28096+
getMoreFields(moreFields) {
28097+
const fields = [];
28098+
for (let key in moreFields) {
28099+
const val = moreFields[key];
28100+
fields.push({
28101+
type: 'mrkdwn',
28102+
text: `*${key}*\n${val}`
28103+
});
28104+
}
28105+
return fields;
28106+
}
2808928107
}
2809028108
class Slack {
2809128109
/**
@@ -28105,7 +28123,7 @@ class Slack {
2810528123
* @param {string} mentionCondition
2810628124
* @returns {IncomingWebhookSendArguments}
2810728125
*/
28108-
generatePayload(jobName, status, mention, mentionCondition, commitFlag, token) {
28126+
generatePayload(jobName, status, mention, mentionCondition, commitFlag, token, moreFields) {
2810928127
return __awaiter(this, void 0, void 0, function* () {
2811028128
const slackBlockUI = new Block();
2811128129
const notificationType = slackBlockUI[status];
@@ -28121,6 +28139,10 @@ class Slack {
2812128139
const commitFields = yield slackBlockUI.getCommitFields(token);
2812228140
Array.prototype.push.apply(baseBlock.fields, commitFields);
2812328141
}
28142+
if (moreFields) {
28143+
const anyDataFields = slackBlockUI.getMoreFields(moreFields);
28144+
Array.prototype.push.apply(baseBlock.fields, anyDataFields);
28145+
}
2812428146
const attachments = {
2812528147
color: notificationType.color,
2812628148
blocks: [baseBlock]

src/index.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ async function run() {
2121
const commitFlag: boolean = core.getInput('commit') === 'true';
2222
const token: string = core.getInput('token');
2323

24+
const moreFieldsString: string = core.getInput('more_fields');
25+
const moreFields: object = JSON.parse(moreFieldsString);
26+
2427
if (mention && !isValidCondition(mentionCondition)) {
2528
mention = '';
2629
mentionCondition = '';
@@ -44,7 +47,8 @@ async function run() {
4447
mention,
4548
mentionCondition,
4649
commitFlag,
47-
token
50+
token,
51+
moreFields
4852
);
4953
console.info(`Generated payload for slack: ${JSON.stringify(payload)}`);
5054

src/slack.ts

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,26 @@ class Block {
116116
}
117117
return fields;
118118
}
119+
120+
/**
121+
* Get MakdwnElement fields including any data
122+
* @param {object} fields
123+
* @returns {Promise<MrkdwnElement[]>}
124+
*/
125+
public getMoreFields(moreFields: object): MrkdwnElement[] {
126+
const fields: MrkdwnElement[] = [];
127+
128+
for (let key in moreFields) {
129+
const val: string = moreFields[key];
130+
131+
fields.push({
132+
type: 'mrkdwn',
133+
text: `*${key}*\n${val}`
134+
});
135+
}
136+
137+
return fields;
138+
}
119139
}
120140

121141
export class Slack {
@@ -143,7 +163,8 @@ export class Slack {
143163
mention: string,
144164
mentionCondition: string,
145165
commitFlag: boolean,
146-
token?: string
166+
token?: string,
167+
moreFields?: object
147168
): Promise<IncomingWebhookSendArguments> {
148169
const slackBlockUI = new Block();
149170
const notificationType: Accessory = slackBlockUI[status];
@@ -164,6 +185,13 @@ export class Slack {
164185
Array.prototype.push.apply(baseBlock.fields, commitFields);
165186
}
166187

188+
if (moreFields) {
189+
const anyDataFields: MrkdwnElement[] = slackBlockUI.getMoreFields(
190+
moreFields
191+
);
192+
Array.prototype.push.apply(baseBlock.fields, anyDataFields);
193+
}
194+
167195
const attachments: MessageAttachment = {
168196
color: notificationType.color,
169197
blocks: [baseBlock]

0 commit comments

Comments
 (0)