Skip to content

Notify Slack channel about upcoming releases #10

Notify Slack channel about upcoming releases

Notify Slack channel about upcoming releases #10

Workflow file for this run

# This workflow notifies Slack channel about upcoming releases.
name: Notify Slack channel about upcoming release
on:
pull_request:
# branches:
# - release
jobs:
notify:
runs-on: [ ubuntu-latest ]
steps:
- uses: actions/github-script@v6
id: commitlist
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
retries: 5
result-encoding: string
script: |
// Slack Message layout is created with https://app.slack.com/block-kit-builder
const urlForPr = function (prNumber) {
return `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/pull/${prNumber}`
}
const linkify = function (text) {
return text.replace(/#(\d+)/g, (match, prNumber) => { return `<${urlForPr(prNumber)}|#${prNumber}>` })
}
const { data: pullRequest } = await github.rest.pulls.get({
owner: context.repo.owner,
repo: context.repo.repo,
// pull_number: context.payload.number,
// TODO: revert back
pull_number: 5202
});
const header = `"${pullRequest.title}" is coming :tada:`
const { data: commits } = await github.rest.pulls.listCommits({
owner: context.repo.owner,
repo: context.repo.repo,
// pull_number: context.payload.number,
// TODO: revert back
pull_number: 5202
});
const blocks = []
blocks.push({
type: "header",
text: {
type: "plain_text",
text: header,
},
},
{
type: "context",
elements: [
{
type: "mrkdwn",
// text: `Release PR: <${urlForPr(context.payload.number)}|${urlForPr(context.payload.number)}>`,
// TODO: revert back
text: `Release PR: <${urlForPr(5202)}|${urlForPr(5202)}>`,
},
],
})
for (const commit of commits) {
const message = commit.commit.message.replace(/\r\n/g, "\n")
const title = message.split("\n\n", 1)[0]
const commitSha = commit.sha
const htmlUrl = commit.html_url
blocks.push({
type: "section",
text: {
type: "mrkdwn",
text: `- ${linkify(title)}`,
},
},
{
type: "context",
elements: [
{
type: "mrkdwn",
text: `<${htmlUrl}|${commitSha}>`,
},
],
})
}
const slackMessage = {
text: header,
blocks,
}
// TODO: Remove debug logging
console.log(JSON.stringify(slackMessage, null, 2))
return JSON.stringify(slackMessage)
- uses: slackapi/slack-github-action@v1
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
with:
channel-id: "C05QQ9J1BRC" # #test-release-notifications
payload: ${{ steps.commitlist.outputs.result }}