Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/thedaviddias/publish-release-info-action
Sends release information to Slack keeping your team up-to-date with the latest releases
https://github.com/thedaviddias/publish-release-info-action
actions github-actions slack workflow
Last synced: 3 months ago
JSON representation
Sends release information to Slack keeping your team up-to-date with the latest releases
- Host: GitHub
- URL: https://github.com/thedaviddias/publish-release-info-action
- Owner: thedaviddias
- License: mit
- Created: 2023-07-27T14:25:02.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-16T14:08:00.000Z (11 months ago)
- Last Synced: 2024-10-14T08:04:07.707Z (3 months ago)
- Topics: actions, github-actions, slack, workflow
- Language: TypeScript
- Homepage:
- Size: 1.46 MB
- Stars: 12
- Watchers: 2
- Forks: 3
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/funding.yml
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
- jimsghstars - thedaviddias/publish-release-info-action - Sends release information to Slack keeping your team up-to-date with the latest releases (TypeScript)
README
# Publish Release Info (Action)
[![Check dist/](https://github.com/thedaviddias/publish-release-info-action/actions/workflows/check-dist.yml/badge.svg)](https://github.com/thedaviddias/publish-release-info-action/actions/workflows/check-dist.yml)
[![Build tests](https://github.com/thedaviddias/publish-release-info-action/actions/workflows/build-test.yml/badge.svg)](https://github.com/thedaviddias/publish-release-info-action/actions/workflows/build-test.yml)A GitHub Action that sends release notifications to Slack, integrating with JIRA, Sentry, and Grafana.
## Usage
### Screenshot of the Slack notification
![Screenshot of the Slack notification](./screenshots/demo-1.jpg)
### Create WorkflowTo use this GitHub Action, you need to create a workflow file (e.g., ``.github/workflows/deploy.yml``) in your repository. Here's an example workflow that runs when a tag matching the pattern `v[0-9]+.[0-9]+.[0-9]+` is pushed:
```yaml
name: Deploy to productionon:
push:
# Push/tags only work if you manually created the tag/release using Github GUI
tags:
- "v[0-9]+.[0-9]+.[0-9]+"jobs:
release:
permissions:
contents: read
pull-requests: writeruns-on: ubuntu-latest
steps:
- name: Release Notification
uses: thedaviddias/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
slack_webhook_urls: https://hooks.slack.com/services/XXXXXX/XXXXX/XXXXXXX
jira_ticket_prefix: ABC
jira_instance_url: https://your-jira-instance.com
sentry_project_name: MyProject
sentry_project_id: "1234"
grafana_dashboard_link: https://grafana.com/dashboards/XXXX
contributor_replace_regex: "-"
contributor_replace_char: "."
time_zone_offset: "-4" # Toronto (Canada - Ontario)
locale: "fr-FR"
fail_on_slack_error: "true"
```#### Inputs
| Name | Required | Default | Description |
| --------------------------- | -------- | ------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| `github_token` | yes | | Token to use to authorize label changes. Typically the GITHUB_TOKEN secret |
| `repo` | no | | Name of the repo (e.g. owner/repo) if not the current one |
| `tag_regex` | no | ^v[0-9]+\.[0-9]+\.[0-9]+$ | Regex to accommodate varying tag formatting. |
| `time_zone_offset` | no | 0 | Timezone offset in minutes from UTC. |
| `locale` | no | en-US | Preferred locale for date formatting, adhering to the BCP 47 language tag standard (e.g., 'en-US' for American English) |
| `contributor_replace_regex` | no | | Regular expression (regex) pattern to identify characters in the `contributor` name that will be replaced |
| `contributor_replace_char` | no | | The character that will replace specific characters in the `contributor` name |
| `slack_webhook_urls` | no | | Slack webhook URL to receive release notifications |
| `jira_ticket_prefix` | no | | Prefix for JIRA ticket references in PR titles (e.g. ABC) |
| `jira_instance_url` | no | | URL for your JIRA instance to generate JIRA ticket links (e.g. https://your-jira-instance.com) |
| `sentry_project_name` | no | | ID of the Sentry project for error tracking |
| `sentry_project_name` | no | | Name of the Sentry project for error tracking |
| `grafana_dashboard_link` | no | | Link to the Grafana dashboard for monitoring |
| `fail_on_slack_error` | no | true | Allow you to fail or not your current workflow depending on the success of posting on Slack |### Outputs
The is the list of the outputs. You can use another action and format the way you want.
```json
{
"repo": "",
"repoLink": "",
"releaseVersion": "",
"releaseLink": "",
"currentTagCommit": {
"url": "",
"author": {
"name": "",
"email": "",
"date": ""
}
},
"prList": [
{
"contributor": "",
"prTitle": "",
"prUrl": "",
"prNumber": 0
}
]
}
```## Examples
### Example Workflow (Minimum Configuration)
```yaml
name: Deploy to productionon:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"jobs:
release:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Release Notification
uses: thedaviddias/[email protected]
with:
github_token: ${{ secrets.GITHUB_TOKEN }}```
### Example Workflow with Custom Slack template
We can use the output from `publish-relase-info-action` and use in combinaison with other actions like [slack-send](https://github.com/marketplace/actions/slack-send) in case you want to use a custom notification template.
```yaml
name: Deploy to productionon:
push:
tags:
- "v[0-9]+.[0-9]+.[0-9]+"jobs:
release:
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Release Notification
uses: thedaviddias/[email protected]
id: release
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
time_zone_offset: "+5"- name: Post to a Slack channel
uses: slackapi/[email protected]
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
with:
channel-id: 'CHANNEL_ID'
payload: |
{
"text": "New release!",
"blocks": [
{
"type": "section",
"fields": [
{
"type": "mrkdwn",
"text": "*Project:*\n<${{ steps.release.outputs.repoLink }}|${{ steps.release.outputs.repo}}>",
},
{
"type": "mrkdwn",
"text": "*Version:*\n<${{ steps.release.outputs.releaseLink }}|${{ steps.release.outputs.releaseVersion }}>",
}
]
}
]
}```
## Contributors
## Licence
This GitHub Action is licensed under the [MIT License](./LICENSE).