/morty

A GitHub action that organizes your post-mortems

Primary LanguageGoApache License 2.0Apache-2.0

logo

Morty

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 📈

morty-example

Getting started

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.

Reporting

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 }}

Why morty / post mortems as a repository?

  • An incident history you can analyse
  • Zero-overhead organization
  • Easy to do global search
  • Easy to follow normal pull request flow & collaborate