{"id":21958964,"url":"https://github.com/techpivot/streaming-slack-notify","last_synced_at":"2025-04-23T17:25:33.005Z","repository":{"id":40792284,"uuid":"259475540","full_name":"techpivot/streaming-slack-notify","owner":"techpivot","description":"The definitive service for streaming GitHub action workflow jobs to Slack.","archived":false,"fork":false,"pushed_at":"2022-12-14T05:02:02.000Z","size":3916,"stargazers_count":6,"open_issues_count":9,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-17T23:19:00.189Z","etag":null,"topics":["aws","github-actions","github-workflow","slack","typescript"],"latest_commit_sha":null,"homepage":"","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/techpivot.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-27T22:55:31.000Z","updated_at":"2025-02-20T16:44:37.000Z","dependencies_parsed_at":"2023-01-28T17:02:01.266Z","dependency_job_id":null,"html_url":"https://github.com/techpivot/streaming-slack-notify","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techpivot%2Fstreaming-slack-notify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techpivot%2Fstreaming-slack-notify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techpivot%2Fstreaming-slack-notify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/techpivot%2Fstreaming-slack-notify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/techpivot","download_url":"https://codeload.github.com/techpivot/streaming-slack-notify/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250479100,"owners_count":21437288,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","github-actions","github-workflow","slack","typescript"],"created_at":"2024-11-29T09:18:14.941Z","updated_at":"2025-04-23T17:25:32.986Z","avatar_url":"https://github.com/techpivot.png","language":"HTML","funding_links":["https://github.com/sponsors/techpivot"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./assets/techpivot-streaming-slack-notifier-logo.png\" alt=\"TechPivot Streaming Slack Notifier Logo\" /\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eStreaming Slack Notify\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003e\n  The definitive service for streaming GitHub action workflow jobs to Slack.\n\u003c/h4\u003e\n\u003ch6 align=\"center\"\u003e\n  Actively maintained by \u003ca href=\"https://www.techpivot.net\"\u003eTechPivot\u003c/a\u003e and the community.\n\u003c/h4\u003e\n\n\u003cp align=\"center\" color=\"red\"\u003e\n  \u003ca href=\"https://github.com/techpivot/streaming-slack-notify/actions/workflows/ci.yml\"\u003e\n    \u003cimg src=\"https://github.com/techpivot/streaming-slack-notify/actions/workflows/ci.yml/badge.svg\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://codeclimate.com/repos/5eb1cb1c668cc4318e007908/maintainability\"\u003e\n    \u003cimg src=\"https://api.codeclimate.com/v1/badges/0ffe5bd35f9e43f827b9/maintainability\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://join.slack.com/t/techpivot/shared_invite/zt-qu89fikk-lagR4dXfwqODi7tbc8~cRg\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/slack-techpivot-077ed3.svg?logo=slack\" alt=\"slack\" /\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/techpivot/streaming-slack-notify/stargazers\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/stars/techpivot/streaming-slack-notify.svg?style=social\u0026label=Stars\u0026cacheSeconds=900\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Live Slack Workflow\n\n![](./assets/screenshots/live-workflow.gif)\n\n## Screenshots\n\n| Workflow Queued                                                                                   | Workflow Running                                                                                  | Workflow Complete                                                                                     |\n| ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |\n| [![](./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) |\n\n## Motivation\n\nThe existing GitHub actions that post to Slack were only displayed at the conclusion of workflow runs, which results in\nambiguous job status for long-running workflows. Additionally, existing actions contained limited information and often\nprioritized the wrong data elements. This service attempts to solve those issues by registering the Streaming Slack\nNotify GitHub and Slack applications, linking them together, and polling workflow runs via a lightweight cloud-native\nand cost-optimized service.\n\n## Features\n\n- Fully open-source including entire AWS infrastructure, API endpoints, and server poller\n- Ability to display job step status from beginning of workflow to end\n- Single slack message that continuously updates the current job statuses\n- Support for **push**, **pull_request**, **schedule** events\n- Clean and consistent Slack UI\n- Lightweight, minimal dependencies, and pure TypeScript\n- Lean AWS cloud footprint that utilizes free tier services and cost-optimized services\n\n## Installation\n\n\u003e **Note**: You must register your Slack workspace first prior to installing this application as your Slack app ID token\n\u003e is required in the GitHub App Post-Install Configuration.\n\n### 1. [Slack App](https://slack.com/oauth/v2/authorize?client_id=3012618307.1089892585986\u0026scope=chat:write,chat:write.customize,chat:write.public\u0026user_scope=)\n\n1. First, install the Streaming Slack Notify application in your Slack workspace using the **Add to Slack** button.\n   \u003ca href=\"https://slack.com/oauth/v2/authorize?client_id=3012618307.1089892585986\u0026scope=chat:write,chat:write.customize,chat:write.public\u0026user_scope=\"\u003e\u003cimg alt=\"Add to Slack\" height=\"40\" width=\"139\" src=\"https://platform.slack-edge.com/img/add_to_slack.png\" srcSet=\"https://platform.slack-edge.com/img/add_to_slack.png 1x, https://platform.slack-edge.com/img/add_to_slack@2x.png 2x\" /\u003e\u003c/a\u003e\n\n1. Copy the **Streaming Slack App ID** displayed in the green box _(Required in GitHub Post-Install Configuration)_\n\n### 2. [GitHub App](https://github.com/apps/streaming-slack-notify)\n\n1. Navigate to the [Streaming Slack Notify GitHub application](https://github.com/apps/streaming-slack-notify)\n1. Click **Install** in the upper right corner\n1. Select the organization or user account to install the app\n1. Select which repositories you want to configure streaming Slack notifications for - Either all or a defined list\n1. Click **Install**\n\n#### Post-Install Configuration\n\n1. On the GitHub post-install configuration page, paste the token generated in the Slack app registration into the\n   **Streaming Slack App ID**\n\n   ![](./assets/screenshots/github-post-install-configuration.png)\n\n1. Specify the **Slack Channel** for which live workflow notifiations should be displayed\n1. Optionally, you can override the default Slack Bot Username that posts the messages in the channel. _(Default =\n   GitHub Actions)_\n1. Click **Update** to save and link your settings\n\n## Infrastructure Notes\n\nThe current infrastructure is deployed in a dedicated AWS account that is actively managed by TechPivot. In order to\nprovide a public service such as this, various parts of the infrastrucure are cost-optimized including:\n\n- Utilizing EC2 Spot instances in a fleet with capability to handle interruption\n- Minimizing the number of EC2 metrics\n- Graviton arm64 instances yielding further cost savings\n- Custom reduced EBS root volume sizes (4GB instead of 30GB)\n- Utilizing various AWS free tier services including DynamoDB, Lambda, and API Gateway\n\n## Support\n\nWe greatly appreciate donations to help fund our AWS infrastructure costs. Additionally, we ♥ GitHub stargazers and\nmembers in our Slack community.\n\n- [Star our GitHub Project](https://github.com/techpivot/streaming-slack-notify/stargazers) :star:\n- [Donate](https://github.com/sponsors/techpivot)\n- [TechPivot Slack Community](https://join.slack.com/t/techpivot/shared_invite/zt-qu89fikk-lagR4dXfwqODi7tbc8~cRg)\n\n## License\n\n[MIT](./LICENSE) © 2021 TechPivot\n\n---\n\n\u003e **[TechPivot](https://www.techpivot.net)**\u0026nbsp;\u0026nbsp;\u0026middot;\u0026nbsp;\u0026nbsp;GitHub\n\u003e [@techpivot](https://github.com/techpivot)\u0026nbsp;\u0026nbsp;\u0026middot;\u0026nbsp;\u0026nbsp;LinkedIn\n\u003e [techpivot](https://www.linkedin.com/company/techpivot/)\u0026nbsp;\u0026nbsp;\u0026middot;\u0026nbsp;\u0026nbsp;Twitter\n\u003e [@techpivot](https://twitter.com/techpivot)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechpivot%2Fstreaming-slack-notify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftechpivot%2Fstreaming-slack-notify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftechpivot%2Fstreaming-slack-notify/lists"}