dotCMS / dotCMS/core

Add Slack-to-GitHub Actions integration via dotcms-github-app

Open
#34,872 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Area : CI/CD stale Team : Enablement Type : CI/CD
Dominant language
Java
Stars
970
Forks
486
Avg merge
3d 33m
Merged PRs (30d)
170

Description

Description

Extend the dotcms-github-app to support triggering GitHub Actions workflows from Slack — starting with release generation.

Context: The release process currently requires manual GitHub Actions triggers. The goal is to allow stakeholders to approve and trigger releases directly from Slack, with the option to schedule a bot that asks 2–3×/week whether a release should be cut.

Why the GitHub App (not a standalone Lambda):

  • Avoids a one-off Lambda that gets forgotten and duplicated
  • The App already responds to GitHub events — adding Slack interactivity (buttons, slash commands) gives us a reusable framework for any Slack ↔ GitHub integration (workflow triggers, deployment approvals, notifications)
  • Bot tokens are more secure than PATs stored as secrets
  • Can attribute actions to specific users via OAuth rather than an anonymous bot

Initial PR / proof of concept: https://github.com/dotCMS/dotcms-github-app/pull/13

Security requirements (per Mehdi):

  • Separation of privileges — each bot/service account must have its own distinguished token
  • Follow the existing dotCMS-Machine-User pattern: separate PAT per use case, scoped to lowest possible access
  • No admin-level tokens exposed to Slack users

Slack thread: https://dotcms.slack.com/archives/C028Z3R2D/p1772551690635289

Acceptance Criteria
  • dotcms-github-app can receive Slack interactive payloads (button clicks / slash commands) and verify Slack request signatures
  • App can trigger the release generation workflow in dotCMS/core upon Slack approval
  • Tokens follow separation-of-privileges: dedicated bot token scoped to minimum required permissions
  • No GitHub PATs or admin tokens are exposed to Slack users
  • Slack interaction is attributed to the requesting user (at minimum logged, ideally via OAuth)
  • Documentation/runbook added so the App is maintainable by any Java developer (shared ownership, not single-person dependency)
Additional Context

Participants: Nollymar Longa, Steve Bolton, Mehdi Karimi, Steve Freudenthaler

Future enhancements (out of scope for this issue):

  • Scheduled Slack bot that asks stakeholders if a release can be cut (2–3×/week)
  • Automated pre-release checks (e.g., has it already run in the last N hours)
  • Live release status updates posted back to Slack
  • Full OAuth-based user impersonation for GitHub API calls

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the dotcms-github-app and its proof-of-concept PR 13, then inspect the release-generation workflow in dotCMS/core. Trace how Slack interactive requests would be received and authenticated, and confirm the required permissions and user attribution. Done means the acceptance criteria are met, including a maintainable Java runbook.

Written by the indexing model from the issue text.

Assessment

Tech stack
github, github-actions, java
Domain
backend, ci-cd, documentation, security
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.