Introduce incident workflow to GitLab Slack App
<!-- This issue template can be used as a great starting point for feature requests. The section "Release notes" can be used as a summary of the feature and is also required if you want to have your release post blog MR auto generated using the release post item generator: https://about.gitlab.com/handbook/marketing/blog/release-posts/#release-post-item-generator. The remaining sections are the backbone for every feature in GitLab. The goal of this template is brevity for quick/smaller iterations. For a more thorough list of considerations for larger features or feature sets, you can leverage the detailed [feature proposal](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Feature%20proposal%20-%20detailed.md). --> ### Release notes <!-- What is the problem and solution you're proposing? This content sets the overall vision for the feature and serves as the release notes that will populate in various places, including the [release post blog](https://about.gitlab.com/releases/categories/releases/) and [Gitlab project releases](https://gitlab.com/gitlab-org/gitlab/-/releases). " --> ### Background <!-- What is the user problem you are trying to solve with this issue? --> In https://gitlab.com/gitlab-org/gitlab/-/issues/364422+, we investigated some initial ideas for porting over some of the existing Woodhouse Slack app functionality into the newly updated GitLab Slack App. The goal of this would be to enable a more robust Slack-to-GitLab integration for incident responders. As part of this work, we plan to introduce the following: 1. A place to define Slack notification settings for incidents 1. A way to declare an incident from Slack, and include options to * Add relevant information to the incident from Slack at the time of incident creation (following Woodhouse). * Add appropriate additional resources to the incident at the time of incident creation (zoom link and Slack channel, again following Woodhouse). * Post a notification of incident creation in the appropriate Slack channel, with links to the relevant resources (following Woodhouse). * Post relevant resources that have been added to the incident issue (following Woodhouse). 1. A way to keep content synced up between Slack and GitLab Our goal would be to build on the improved GitLab Slack app the Ecosystem is building. However, if the [notifications haven't yet been ported](https://gitlab.com/gitlab-org/gitlab/-/issues/335673) over to the GitLab Slack app yet, we may need to build on the current GitLab Slack notification integration. More details in [this thread](https://gitlab.com/gitlab-org/gitlab/-/issues/364422#note_1001577223). ### Proposal <!-- Use this section to explain the feature and how it will work. It can be helpful to add technical details, design proposals, and links to related epics or issues. --> As part of the discovery issue, we created rough sketches for how introducing these features could look: | Create a space to define incident notification settings | Allow people to create an incident from Slack | Allow for adding data to incidents at the time of incident creation | Post a notification linking to relevant resources in Slack when an incident has been created | Add relevant details from Slack directly to the incident | Find a way to send updates to Slack from GitLab | Refine process for adding Slack comments to incidents | Introduce a way to add items to the timeline from Slack | | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ![Settings_page](/uploads/7324b9352ffbff0e0c18d3fb20851c3b/Settings_page.png) |![Slack](/uploads/6e4dd15c467ba7d90f13429b975753f5/Slack.png) | ![Slack-4](/uploads/454440672f8757a58c86cb098d04d4e2/Slack-4.png) | ![Slack-1](/uploads/db1d30c865c24c873242352d86c212fd/Slack-1.png) | ![Incident](/uploads/f72f264e1998425d103287f01e20e302/Incident.png) | ![Incident-1](/uploads/3415367e72fc03a429b630f7c148fbc8/Incident-1.png) | ![Slack-2](/uploads/9c8a38121d011ddfb62004a209713d21/Slack-2.png) | ![Slack-3](/uploads/2589fbf5e75c1c0449c60206044f0455/Slack-3.png) | **MVC Designs** Through [discussion](https://gitlab.com/gitlab-org/monitor/respond/-/issues/143#note_1091749009) on the technical spike, we've narrowed down the original scope to a MVC. As much as possible, we're aiming to fit within the existing infrastructure, both in GitLab and in Slack. For all designs showing Slack, we should be following the current patterns within the GitLab Slack app. | Introduce incident-specific item to notification settings | New slash command for creating an incident | Slack modal for adding context to incident at the time of incident creation | New incident notification | Incident automatically populated with the content added from Slack | Allow people to send specific comments to Slack from GitLab | Example comment sent to Slack | Make commenting on incidents from Slack easier | Allow people to add to the timeline from Slack | Success/failure message examples | | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | ------ | | ![Settings_updates](/uploads/133e2f8e75a437b96a57239e6fbe88ae/Settings_updates.png) | ![New_slash_command](/uploads/7faeff317d27ecb8865d87328f83adbb/New_slash_command.png)| ![Modal](/uploads/cbacbfff81b933d9b79734d9a2e75425/Modal.png)|![New_incident_notification](/uploads/6a665ae368fc6a445752c6bcb303a06a/New_incident_notification.png)|![Auto-populated_incident](/uploads/fc2109f75eb636399c5dcfe1a35d8c1d/Auto-populated_incident.png)|![GitLab_slash_command](/uploads/5c39cdbb0414041131c2ae322804a599/GitLab_slash_command.png)| ![Comment_notification](/uploads/27894b80724160d305dcdf2077dbbca5/Comment_notification.png)|![Comment_from_Slack_to_GitLab](/uploads/cf77d7e0aeebbe3a91c8106f35770531/Comment_from_Slack_to_GitLab.png) |![Integrate_Slack_with_Timeline](/uploads/e165a825f6496cde57d877a5a4b6687e/Integrate_Slack_with_Timeline.png)| ![failure_messages](/uploads/0ec9510f0fe0e854270b1704b9f5b739/failure_messages.png)| [Click through the designs](https://www.figma.com/proto/yhZmsrVMFJUC390YOKWqUT/Slack-integration-for-incidents-gitlab-com%26364422?node-id=1586%3A36736&scaling=scale-down&page-id=1585%3A36735&starting-point-node-id=1586%3A36736) [Figma file](https://www.figma.com/file/yhZmsrVMFJUC390YOKWqUT/Slack-integration-for-incidents-gitlab-com%26364422?node-id=1585%3A36735) (MVC design tab) [Slack Block Kit Builder](https://app.slack.com/block-kit-builder/) Longer-term, we hope to add more functionality to the incident creation modal, including adding labels and assignees in dropdowns, and adding the ability to create a dedicated Slack channel at the time of incident creation. More details about how that could look are shown [here](https://www.figma.com/file/yhZmsrVMFJUC390YOKWqUT/Slack-integration-for-incidents-gitlab-com%26364422?node-id=1385%3A42269). <!-- ### Intended users --> <!-- Who will use this feature? If known, include any of the following: types of users (e.g. Developer), personas, or specific company roles (e.g. Release Manager). It's okay to write "Unknown" and fill this field in later. Personas are described at https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/ * [Cameron (Compliance Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#cameron-compliance-manager) * [Parker (Product Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#parker-product-manager) * [Delaney (Development Team Lead)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#delaney-development-team-lead) * [Presley (Product Designer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#presley-product-designer) * [Sasha (Software Developer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sasha-software-developer) * [Priyanka (Platform Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#priyanka-platform-engineer) * [Sidney (Systems Administrator)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sidney-systems-administrator) * [Sam (Security Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#sam-security-analyst) * [Rachel (Release Manager)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#rachel-release-manager) * [Alex (Security Operations Engineer)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#alex-security-operations-engineer) * [Simone (Software Engineer in Test)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#simone-software-engineer-in-test) * [Allison (Application Ops)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#allison-application-ops) * [Ingrid (Infrastructure Operator)](https://about.gitlab.com/handbook/product/personas/#ingrid-infrastructure-operator) * [Dakota (Application Development Director)](https://about.gitlab.com/handbook/product/personas/#dakota-application-development-director) * [Dana (Data Analyst)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#dana-data-analyst) * [Eddie (Content Editor)](https://about.gitlab.com/handbook/marketing/product-marketing/roles-personas/#eddie-content-editor) --> <!-- ### Feature Usage Metrics --> <!-- How are you going to track usage of this feature? Think about user behavior and their interaction with the product. What indicates someone is getting value from it? Create tracking issue using the Snowplow event tracking template. See https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab/issue_templates/Snowplow%20event%20tracking.md --> <!-- Label reminders Use the following resources to find the appropriate labels: - https://gitlab.com/gitlab-org/gitlab/-/labels - https://about.gitlab.com/handbook/product/categories/features/ --> ### Epic organization & prioritization Issues linked in this epic are named with `Phase <#>`. Within each child epic, items in each phase can be completed in parallel. Between each child epic, blocking issues are accurate. - *Any unblocked* `Phase 1` issue is ready to be worked on & can be done in parallel to any other issue. - If any blocking `Phase 1` issues are completed *within a child epic*, move on to unblocked `Phase 2` issues in that epic, and so on. **Issue dependencies:** | &8805+ | &8806+ | &8808+ | | ------ | ------ | ------ | | ![Slack incident creation workflow](/uploads/b487f563e6b4f628137d38f2841e2699/Screen_Shot_2022-09-22_at_1.05.33_PM.png) | ![Slack incident updates workflow](/uploads/cad9c154a619f792430296ff24b346b2/Screen_Shot_2022-09-22_at_1.02.02_PM.png) |![Slack incident channel workflow](/uploads/6c3907d1c141bbe9b84020d247314a06/Screen_Shot_2022-09-22_at_12.49.02_PM.png) | [Flowcharts source](/uploads/02a8633ae50de2116174266bbe193ced/Slack_App.drawio) --- <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION --> *This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.* <!-- triage-serverless v3 PLEASE DO NOT REMOVE THIS SECTION -->
epic