An action that turns a GitHub Repository into an organized collection of post-mortems
"There is no better way to learn than to document what has broken in the past. History is about learning from everyone’s mistakes. Be thorough, be honest, but most of all, ask hard questions. Look for specific actions that might prevent such an outage from recurring, not just tactically, but also strategically. Ensure that everyone within the company can learn what you have learned by publishing and organizing postmortems."
~ From the "Emergency Response" Chapter in "Site Reliability Engineering: How Google Runs Production Systems"
Check out the example repository to see what it's like!
Morty is a GitHub Action that gives you an overview of your post-mortems. It parses your post-mortems written in markdown, and gives you some friendly advice on running good post-mortems on the way 📈
Install the action in a (new) repository. You can create one from a template repository if you'd like!
To install the action, add a new workflow file .github/workflows/morty.yml
. It should contain something like this:
name: Morty
on:
# Trigger the workflow on push or pull request,
# but only for the main branch
push:
branches:
- master
pull_request:
branches:
- master
jobs:
morty:
runs-on: ubuntu-latest
steps:
- name: Check that post mortems look good
uses: mentimeter/morty@master
if: ${{ github.event_name == 'pull_request' }}
with:
token: ${{ github.token }}
args: git check
- name: Check post mortems and commit statistics
uses: mentimeter/morty@master
if: ${{ github.event_name == 'push' }}
with:
token: ${{ github.token }}
args: git
The easiest way to make a new post-mortem is to make a copy of the template that morty makes for you post-mortems/template.md
.
There are also some more instructions there to help you get going.
You can add datadog reporting of your metrics by adding DD_API_KEY
and DD_APP_KEY
env variables to your job:
- name: Check post mortems and commit statistics and report metrics
uses: mentimeter/morty@master
if: ${{ github.event_name == 'push' }}
with:
token: ${{ github.token }}
args: git
env:
DD_APP_KEY: ${{ secrets.DD_APP_KEY }}
DD_API_KEY: ${{ secrets.DD_API_KEY }}
- An incident history you can analyse
- Zero-overhead organization
- Easy to do global search
- Easy to follow normal pull request flow & collaborate