This is a Pulumi Stack that creates an API Gateway endpoint with Lambda that triggers GitHub dispatch_workflow GitHub Actions.
- At least one argument to Slack's slash command is expected
- The first argument will be the event name, prefixed with
saga-. - The rest of the arguments are sent to GitHub Action inside the
client_payloadasargs - The output of this stack is an API endpoint that can be used as the receiving end of a Slack App Slash Command
Slack requires slash commands to be acknowledged within 3 seconds, otherwise Slackbot replies with "Something went wrong. Please try again!". To stay within that limit the stack deploys two Lambdas (Node.js 24):
saga- verifies the Slack request signature, repliesOn it!immediately and invokes the worker asynchronouslysaga-worker- sends therepository_dispatchevent to GitHub and reports failures back to the Slack user via the command'sresponse_url
Read when running pulumi up and stored as Lambda environment variables. Deployment fails fast if any is missing.
GITHUB_TOKEN- the GitHub token used to interact with GitHub ActionsGITHUB_OWNER- GitHub owner of the repository holding the GitHub ActionGITHUB_REPO- GitHub repository holding the GitHub ActionSLACK_SIGNING_SECRET- the signing secret of the triggering Slack App (requests that fail signature verification are rejected with401)
endpoint - the endpoint to be set as the Slack App Slash Command target