ghep

Ghep event pusher

Ghep er en Github App som pusher Github events for teams til Slack. Det som skiller Ghep fra en haug av andre lignende tjenester er at den automagisk henter repoer basert på Github teamet ditt, og pusher forskjellige events til forskjellige kanaler!

Hvordan ser det ut?

Commits

Commits er kanskje den mest aktive hendelsen for et team. For hver push blir det sendt en hendelse som blir postet til Slack. Ghep vil prøve å lenke til Co-Authors så godt som mulig.

Hvis en push trigger en workflow så vil Ghep reacte på commits basert på reisen til workflowen.

👀 - når en jobb har blitt satt i kø
⏳ - når den kjører
✅ - fullført vellykket
❌ - fullført feilet
🅿️ - fullført kansellert

Commits posted to Slack

Issues og pull requests

Issues og pull requests blir behandlet nesten likt, og ser like ut når de havner i Slack. merged og deleted hendelser vil bli posted i Slack-tråden til et issue eller pull requests. Dette gjør det enkelt for dere å følge med på hva som skjer.

A issue posted to Slack

A pull request posted to Slack

We also support a minimalist version of pull request without body.

A pull request posted to Slack without body

Workflows

Workflows som er vellykket er ikke så interessant, derfor er det kun workflows som feiler som blir postet til Slack.

A failed workflow will be posted to Slack

Releases

Sender releases til en egen kanal, draft, prerelease, og releases blir sendt ut.

A release posted to Slack

Security

Sender code scanning, secret scanning, Dependabot, og security advisory til egen kanal. Noen av disse hendelsene kan man filtrere på alvorlighetsgrad.

A secret scanning alert posted to Slack

Ta den i bruk

Alt du trenger å gjøre er å redigere .nais/teams.yaml og legge til ditt team og deres kanaler.

teams:
  nada:
   commits: "#nada-commits"
   issues: "#nada-issues"
   pulls: "#nada-pull-requests"
   workflows: "#nada-ci"
   releases: "#nada-releases"
   security: "#nada-security"

PS: Hvis kanalene dine er private må du selv invitere @ghep inn i hver kanal.

Sources

Du kan også bruke sources for å sende samme hendelsestype til flere kanaler med forskjellig konfigurasjon. For eksempel kan du sende pull requests fra bots til én kanal og resten til en annen.

teams:
  nada:
    sources:
      - source: pulls
        channel: "#nada-pull-requests"
        config:
          pulls:
            ignoreBots: true
      - source: pulls
        channel: "#nada-bot-prs"
        config:
          pulls:
            onlyBots: true
      - source: commits
        channel: "#nada-commits"
      - source: commits
        channel: "#nada-commits-develop"
        config:
          branches:
            - develop
      - source: workflows
        channel: "#nada-ci"
        config:
          branches:
            - main
      - source: releases
        channel: "#nada-releases"
      - source: issues
        channel: "#nada-issues"
      - source: security
        channel: "#nada-security"
        config:
          security:
            severityFilter: "high"

Gyldige source-typer er: commits, pulls, issues, workflows, releases, security.

Du kan kombinere det gamle formatet med sources. Flate kanaler (f.eks. commits: "#kanal") blir alltid inkludert, og eksplisitte sources legges til i tillegg.

teams:
  nada:
    commits: "#nada-commits"
    pulls: "#nada-pull-requests"
    sources:
      - source: pulls
        channel: "#nada-bot-prs"
        config:
          pulls:
            onlyBots: true

I eksempelet over vil pull requests sendes til både #nada-pull-requests (fra flat config) og #nada-bot-prs (fra sources).

Konfigurering

Vi har også støtte for litt konfigurering. Dette legges under teamnavn.config for globale innstillinger, eller per source under sources[].config. Foreløpig er det tillat med blanding av gammel type konfigurasjon, og per source. Overtid kommer konfigurasjon som kan brukes av flere sources bli flyttet.

Team configuration

Globale innstillinger som gjelder for alle sources:

teams:
  team:
    config:
      ignoreRepositories:
        - repoA
        - repoB
      silenceDependabot: "always"
      externalContributorsChannel: "#channel"
      pingSlackUsers: true

Source configuration

Dette er konfigurasjon som settes per source:

teams:
  team:
    sources:
      - source: commits
        channel: "#channel"
        config:
          branches:
            - develop
            - staging
      - source: pulls
        channel: "#channel-prs-main"
        config:
          branches:
            - main

Pull Requests

Kan konfigureres globalt (under config.pulls) eller per source (under sources[].config.pulls):

teams:
  team:
    pulls: "#channel"
    config:
      pulls:
        events: [string]
        ignoreBots: bool
        onlyBots: bool
        ignoreDrafts: bool
        minimalist: bool

Workflows

Kan konfigureres globalt (under config.workflows) eller per source (under sources[].config.workflows):

teams:
  team:
    workflows: "#channel"
    config:
      workflows:
        ignoreBots: bool
        workflows: [string]
        repositories: [string]

Security

Kan konfigureres globalt (under config.security) eller per source (under sources[].config.security):

teams:
  team:
    security: "#channel"
    config:
      security:
        severityFilter: "high"

Ukentlig PR-oversikt (pr-digest)

Ghep kan sende en ukentlig melding til en Slack-kanal med en oversikt over åpne pull requests for teamets repoer.

teams:
  nada:
    pr-digest:
      channel: "#nada-weekly"
      day: monday
      time: "09:00"
      timezone: Europe/Oslo  # valgfri, standard er Europe/Oslo
      send_empty: false      # valgfri, send melding selv om det ikke er åpne PRs (standard: false)
      ignoreRepositories:    # valgfri, repositories som skal utelates fra digest-oversikten
        - pull-request-collection-repo
        - oldies-but-goodies-pr-repo

Ukentlig sikkerhetsdigest (security-digest)

Ghep kan sende en ukentlig melding til en Slack-kanal med en oversikt over åpne, uløste sikkerhetsvarsler (secret scanning, code scanning og Dependabot) for teamets repoer.

teams:
  nada:
    security-digest:
      channel: "#nada-security"
      day: friday
      time: "09:00"
      timezone: Europe/Oslo       # valgfri, standard er Europe/Oslo
      send_empty: false           # valgfri, send melding selv om det ikke er åpne varsler (standard: false)
      severity_filter: medium     # valgfri, filtrer ut varsler under angitt alvorlighetsgrad (gjelder code scanning og Dependabot)
      ignoreRepositories:         # valgfri, repositories som skal utelates fra sikkerhetsdigest-oversikten
        - test-repo

Personlig ukentlig commit-oversikt

Ghep kan sende deg en personlig Slack-melding med en oversikt over hvilke repoer du har pushet commits til siden forrige oversikt, sortert etter antall commits.

Dette konfigureres i den samme filen, .nais/teams.yaml.

personal-digest:
  - login: Kyrremann
    day: friday
    time: "14:00"
    timezone: Europe/Oslo
  - login: navAnders
  - login: majabaja
    day: monday

Kun brukere som er eksplisitt oppført i listen vil motta en melding. Brukere uten commits siden forrige utsendelse hoppes over.

DM-en sendes via Slack og ser omtrent slik ut:

Din ukentlige commit-oversikt — 6. juni 2025
3 repos med 11 commits totalt

• my-cool-app — 7 commits
• platform-tools — 3 commits
• docs-site — 1 commit

Lokal utvikling

Kjør opp Postgres for testing med Docker.

docker run --name postgres -e POSTGRES_PASSWORD=postgres -p 5432:5432 -d postgres
docker run --name adminer --link postgres:db -p 8081:8080 -d adminer
psql -h localhost -U postgres -c 'CREATE DATABASE ghep;'

Self-hosting

Dersom du ønsker å sette opp en egen instans av Ghep, så kan du ta en titt på self-hosting guide for detaljer.

Kontakt oss

Ta kontakt i #ghep-værsågod på Slack hvis du har noen spørsmål.