mirror of
https://github.com/actions/publish-action.git
synced 2025-02-24 16:22:31 +00:00
Integrate Slack notifications
This commit is contained in:
parent
ead7541b7c
commit
4e15cde332
19
.github/workflows/release-new-action-version.yml
vendored
19
.github/workflows/release-new-action-version.yml
vendored
@ -31,21 +31,4 @@ jobs:
|
||||
uses: ./
|
||||
with:
|
||||
source-tag: ${{ env.TAG_NAME }}
|
||||
|
||||
- name: Send slack message
|
||||
if: failure()
|
||||
run: |
|
||||
curl `
|
||||
-X POST `
|
||||
-H 'Content-type: application/json' `
|
||||
--data '{\"text\":\"Failed to update a major tag for the ${{ github.repository }} action\"}' `
|
||||
${{ secrets.SLACK_WEBHOOK }}
|
||||
|
||||
- name: Send slack message
|
||||
if: success()
|
||||
run: |
|
||||
curl `
|
||||
-X POST `
|
||||
-H 'Content-type: application/json' `
|
||||
--data '{\"text\":\"The ${{ steps.update-major-tag.outputs.major-tag }} tag has been successfully updated for the ${{ github.repository }} action to include changes from the ${{ env.TAG_NAME }}\"}' `
|
||||
${{ secrets.SLACK_WEBHOOK }}
|
||||
slack-webhook: ${{ secrets.SLACK_WEBHOOK }}
|
@ -4,6 +4,8 @@ inputs:
|
||||
source-tag:
|
||||
description: 'Tag name that the major tag will point to. Examples: v1.2.3, 1.2.3'
|
||||
required: true
|
||||
slack-webhook:
|
||||
description: 'Slack Webhook URL to post a message'
|
||||
token:
|
||||
description: 'Token to get an authenticated Octokit'
|
||||
default: ${{ github.token }}
|
||||
|
20
dist/index.js
vendored
20
dist/index.js
vendored
@ -26,9 +26,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||
return result;
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
exports.updateTag = exports.validateIfReleaseIsPublished = void 0;
|
||||
exports.postMessageToSlack = exports.updateTag = exports.validateIfReleaseIsPublished = void 0;
|
||||
const core = __importStar(__nccwpck_require__(2186));
|
||||
const github_1 = __nccwpck_require__(5438);
|
||||
const http_client_1 = __nccwpck_require__(9925);
|
||||
async function findTag(tag, octokitClient) {
|
||||
try {
|
||||
const { data: foundTag } = await octokitClient.git.getRef({
|
||||
@ -96,6 +97,12 @@ async function updateTag(sourceTag, targetTag, octokitClient) {
|
||||
}
|
||||
}
|
||||
exports.updateTag = updateTag;
|
||||
async function postMessageToSlack(slackWebhook, message) {
|
||||
const jsonData = { text: message };
|
||||
const http = new http_client_1.HttpClient();
|
||||
await http.postJson(slackWebhook, jsonData);
|
||||
}
|
||||
exports.postMessageToSlack = postMessageToSlack;
|
||||
|
||||
|
||||
/***/ }),
|
||||
@ -127,6 +134,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
||||
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
||||
const core = __importStar(__nccwpck_require__(2186));
|
||||
const github = __importStar(__nccwpck_require__(5438));
|
||||
const github_1 = __nccwpck_require__(5438);
|
||||
const api_utils_1 = __nccwpck_require__(2430);
|
||||
const version_utils_1 = __nccwpck_require__(1534);
|
||||
async function run() {
|
||||
@ -140,12 +148,22 @@ async function run() {
|
||||
await api_utils_1.updateTag(sourceTagName, majorTag, octokitClient);
|
||||
core.setOutput('major-tag', majorTag);
|
||||
core.info(`The '${majorTag}' major tag now points to the '${sourceTagName}' tag`);
|
||||
const slackMessage = `The ${majorTag} tag has been successfully updated for the ${github_1.context.repo.repo} action to include changes from the ${sourceTagName}`;
|
||||
await reportStatusToSlack(slackMessage);
|
||||
}
|
||||
catch (error) {
|
||||
core.setFailed(error.message);
|
||||
const slackMessage = `Failed to update a major tag for the ${github_1.context.repo.repo} action`;
|
||||
await reportStatusToSlack(slackMessage);
|
||||
}
|
||||
}
|
||||
;
|
||||
async function reportStatusToSlack(message) {
|
||||
const slackWebhook = core.getInput('slack-webhook');
|
||||
if (slackWebhook) {
|
||||
await api_utils_1.postMessageToSlack(slackWebhook, message);
|
||||
}
|
||||
}
|
||||
run();
|
||||
|
||||
|
||||
|
@ -26,6 +26,7 @@
|
||||
"@actions/github": "^4.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@actions/http-client": "^1.0.11",
|
||||
"@types/jest": "^26.0.23",
|
||||
"@types/semver": "^7.3.6",
|
||||
"@vercel/ncc": "^0.28.5",
|
||||
|
@ -1,6 +1,7 @@
|
||||
import * as core from '@actions/core';
|
||||
import { context } from '@actions/github';
|
||||
import { GitHub } from '@actions/github/lib/utils';
|
||||
import { HttpClient } from '@actions/http-client';
|
||||
|
||||
interface GitRef {
|
||||
ref: string;
|
||||
@ -59,7 +60,7 @@ export async function validateIfReleaseIsPublished(
|
||||
tag,
|
||||
});
|
||||
|
||||
if (foundRelease.prerelease){
|
||||
if (foundRelease.prerelease) {
|
||||
throw new Error(
|
||||
`The '${foundRelease.name}' release is marked as pre-release. Updating tags for pre-release is not supported`
|
||||
);
|
||||
@ -104,4 +105,10 @@ export async function updateTag(
|
||||
sha: sourceTagSHA
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export async function postMessageToSlack(slackWebhook: string, message: string): Promise<void> {
|
||||
const jsonData = {text: message}
|
||||
const http = new HttpClient();
|
||||
await http.postJson(slackWebhook, jsonData);
|
||||
}
|
16
src/main.ts
16
src/main.ts
@ -1,6 +1,7 @@
|
||||
import * as core from '@actions/core';
|
||||
import * as github from '@actions/github';
|
||||
import { updateTag, validateIfReleaseIsPublished } from './api-utils';
|
||||
import { context } from '@actions/github';
|
||||
import { updateTag, validateIfReleaseIsPublished, postMessageToSlack } from './api-utils';
|
||||
import { validateSemverVersionFromTag, getMajorTagFromFullTag } from './version-utils';
|
||||
|
||||
async function run(): Promise<void> {
|
||||
@ -18,9 +19,22 @@ async function run(): Promise<void> {
|
||||
|
||||
core.setOutput('major-tag', majorTag);
|
||||
core.info(`The '${majorTag}' major tag now points to the '${sourceTagName}' tag`);
|
||||
|
||||
const slackMessage = `The ${majorTag} tag has been successfully updated for the ${context.repo.repo} action to include changes from the ${sourceTagName}`;
|
||||
await reportStatusToSlack(slackMessage);
|
||||
} catch (error) {
|
||||
core.setFailed(error.message);
|
||||
|
||||
const slackMessage = `Failed to update a major tag for the ${context.repo.repo} action`;
|
||||
await reportStatusToSlack(slackMessage);
|
||||
}
|
||||
};
|
||||
|
||||
async function reportStatusToSlack(message: string): Promise<void> {
|
||||
const slackWebhook = core.getInput('slack-webhook');
|
||||
if (slackWebhook) {
|
||||
await postMessageToSlack(slackWebhook, message);
|
||||
}
|
||||
}
|
||||
|
||||
run();
|
Loading…
Reference in New Issue
Block a user