Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/techpivot/streaming-slack-notify
The definitive service for streaming GitHub action workflow jobs to Slack.
https://github.com/techpivot/streaming-slack-notify
aws github-actions github-workflow slack typescript
Last synced: 26 days ago
JSON representation
The definitive service for streaming GitHub action workflow jobs to Slack.
- Host: GitHub
- URL: https://github.com/techpivot/streaming-slack-notify
- Owner: techpivot
- License: mit
- Created: 2020-04-27T22:55:31.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2022-12-14T05:02:02.000Z (about 2 years ago)
- Last Synced: 2024-05-01T11:28:38.127Z (8 months ago)
- Topics: aws, github-actions, github-workflow, slack, typescript
- Language: HTML
- Homepage:
- Size: 3.73 MB
- Stars: 5
- Watchers: 1
- Forks: 2
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
Streaming Slack Notify
The definitive service for streaming GitHub action workflow jobs to Slack.
Actively maintained by TechPivot and the community.## Live Slack Workflow
![](./assets/screenshots/live-workflow.gif)
## Screenshots
| Workflow Queued | Workflow Running | Workflow Complete |
| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
| [![](./assets/screenshots/workflow-run-queued.png)](./assets/screenshots/workflow-run-queued.png) | [![](./assets/screenshots/workflow-run-active.png)](./assets/screenshots/workflow-run-active.png) | [![](./assets/screenshots/workflow-run-complete.png)](./assets/screenshots/workflow-run-complete.png) |## Motivation
The existing GitHub actions that post to Slack were only displayed at the conclusion of workflow runs, which results in
ambiguous job status for long-running workflows. Additionally, existing actions contained limited information and often
prioritized the wrong data elements. This service attempts to solve those issues by registering the Streaming Slack
Notify GitHub and Slack applications, linking them together, and polling workflow runs via a lightweight cloud-native
and cost-optimized service.## Features
- Fully open-source including entire AWS infrastructure, API endpoints, and server poller
- Ability to display job step status from beginning of workflow to end
- Single slack message that continuously updates the current job statuses
- Support for **push**, **pull_request**, **schedule** events
- Clean and consistent Slack UI
- Lightweight, minimal dependencies, and pure TypeScript
- Lean AWS cloud footprint that utilizes free tier services and cost-optimized services## Installation
> **Note**: You must register your Slack workspace first prior to installing this application as your Slack app ID token
> is required in the GitHub App Post-Install Configuration.### 1. [Slack App](https://slack.com/oauth/v2/authorize?client_id=3012618307.1089892585986&scope=chat:write,chat:write.customize,chat:write.public&user_scope=)
1. First, install the Streaming Slack Notify application in your Slack workspace using the **Add to Slack** button.
1. Copy the **Streaming Slack App ID** displayed in the green box _(Required in GitHub Post-Install Configuration)_
### 2. [GitHub App](https://github.com/apps/streaming-slack-notify)
1. Navigate to the [Streaming Slack Notify GitHub application](https://github.com/apps/streaming-slack-notify)
1. Click **Install** in the upper right corner
1. Select the organization or user account to install the app
1. Select which repositories you want to configure streaming Slack notifications for - Either all or a defined list
1. Click **Install**#### Post-Install Configuration
1. On the GitHub post-install configuration page, paste the token generated in the Slack app registration into the
**Streaming Slack App ID**![](./assets/screenshots/github-post-install-configuration.png)
1. Specify the **Slack Channel** for which live workflow notifiations should be displayed
1. Optionally, you can override the default Slack Bot Username that posts the messages in the channel. _(Default =
GitHub Actions)_
1. Click **Update** to save and link your settings## Infrastructure Notes
The current infrastructure is deployed in a dedicated AWS account that is actively managed by TechPivot. In order to
provide a public service such as this, various parts of the infrastrucure are cost-optimized including:- Utilizing EC2 Spot instances in a fleet with capability to handle interruption
- Minimizing the number of EC2 metrics
- Graviton arm64 instances yielding further cost savings
- Custom reduced EBS root volume sizes (4GB instead of 30GB)
- Utilizing various AWS free tier services including DynamoDB, Lambda, and API Gateway## Support
We greatly appreciate donations to help fund our AWS infrastructure costs. Additionally, we ♥ GitHub stargazers and
members in our Slack community.- [Star our GitHub Project](https://github.com/techpivot/streaming-slack-notify/stargazers) :star:
- [Donate](https://github.com/sponsors/techpivot)
- [TechPivot Slack Community](https://join.slack.com/t/techpivot/shared_invite/zt-qu89fikk-lagR4dXfwqODi7tbc8~cRg)## License
[MIT](./LICENSE) © 2021 TechPivot
---
> **[TechPivot](https://www.techpivot.net)** · GitHub
> [@techpivot](https://github.com/techpivot) · LinkedIn
> [techpivot](https://www.linkedin.com/company/techpivot/) · Twitter
> [@techpivot](https://twitter.com/techpivot)