A small HTTP server using node.js and the hapi framework,
that enables you to trigger GitHub Actions workflows using simple links (aka
HTTP GET
requests).
As you might know, GitHub Actions workflows can be triggered on demand using the
workflow_dispatch
event. However, to trigger such an event, a HTTP POST
request with payload and
authentication is required. That way, you are not able to trigger a workflow
using a simple link.
The GitHub Workflow Dispatcher solves this problem. It offers a GET
route
that can pass-through a workflow_dispatch
event with optional inputs to the
GitHub API. For authentication, it uses GitHub OAuth to create a user token that
is used for further requests. This way it is ensured, that only users with
sufficient privileges can trigger a workflow.
To use GitHub Workflow Dispatcher with your GitHub Enterprise environment, you need to host your own instance using the respective environment options.
-
General
- 👔 full support for GitHub Enterprise (and also GitHub.com, of course)
- 🪪 using actual user privileges for accessing repository workflows
- 🐳 prepared for containerized deployment using Docker
- 🛠️ customizable configuration depending on environment
- 🧑💻 native Typescript project following strict rules and latest ECMAScript standards
-
Backend
- 🧩 modular architecture via hapi's plugin system
- 🐙 GitHub OAuth and API implementation using latest specification and
official
@octokit/*
packages - 🗄️ server-side in-memory caching of precompiled responses
- 🔒 secure cookie storage of authorization artifacts using AES 256 CBC encryption
- 🎈 no persistent storage required
-
Frontend
- 💎 slick and simple, GitHub-inspired design
- 🪄 in-place usage documentation including dispatch URL generator
- 🤝 meaningfull error pages
- 🚀 optimized CSS and JavaScript assets without frameworks or 3rd-party dependencies
- 🌗 switching light and dark theme depending on user preference
- node.js >= 18.x
- git-secret
- docker (optional)
This project uses git-secret
to
store sensitive information in the git repository.
Before being able to decrypt the respective files, your public GPG key needs to be added to the list of allowed users.
# clone project
git clone git@github.com:simbo/github-workflow-dispatcher.git
# install dependencies
npm i
# decrypt secret files
git secret reveal
# start watch tasks for server, js and css concurrently
npm start
The project contains a Dockerfile
to create an image.
The docker build expects a .env-production
file to be present (revealed).
# build docker image
docker build -t github-workflow-dispatcher:VERSION .
# start docker container
docker run -itd -p 8080:3000 -e BASE_URL=http://localhost:8080/ github-workflow-dispatcher:VERSION