Skip to content

signal-noise/deploybot

Repository files navigation

deploybot

All Contributors

Automate deployments at all the right times, and manually from Slack

This project exists in order to allow easy workflow support between Slack, GitHub and CircleCI. It is built using the Serverless framework for AWS Lambda, using Python 3.7.

We wrote this to help us with our own current setup; to fill gaps in the tooling we currently use. It's in a very early stage and needs a lot of work to be really stable. If you'd like to help out, please do!

This is an introduction; please also read the detailed documentation.

Functionality

In essence, the app subscribes to GitHub events, which it uses to trigger GitHub deployments at moments that support the given workflow. The Deployment events then trigger jobs to run on CircleCI with all status information returning to GitHub.

Each Slack channel it is configured on will relate to a single GitHub repository. All GitHub events relating to the workflow are posted to Slack intelligently, with updates to existing messages and message interactivity where appropriate, and of course with the relevant users @ mentioned.

Triggers can also be manually activated via the Slack channel; anyone on the channel has permission to run any command.

Usage

The default command is configurable but defaults to cimon.

In a slack channel, typing /cimon setup <username>/<repository> will start the process off, and trigger a message asking you to select your GitHub username from the list of users with access to that repository. /cimon reset will forget the setup, though not the user connections.

cimon set xxx yyy allows settings to be set up; at the moment a basedomain and urls for any environments that don't rely on subdomains of the basedomain should be setup; a urlpattern can also be added to change the autogenerated URL structure.

/cimon hello will get the bot to look at the channel's existing repository for GH users that it doesn't already know the Slack usernames of and return a set of buttons; pressing one will claim that GH username for the user who pressed it. /cimon goodbye undoes this for your user.

/cimon get will output the current configuration in place.

/cimon deploy <environment> triggers a deployment

/cimon list shows deployments

Supported workflows

As this project is in very early days, the workflow is pretty hardcoded right now. It's based on GitHub Flow, with a couple of extra items; please read more here.

Installation

Please read the Installation guide in the documentation.

Contributors ✨

Please read about submitting contributions.

Thanks goes to these wonderful people (emoji key):


Guy Purssell

💻

Marcel Kornblum

💻

This project follows the all-contributors specification. Contributions of any kind welcome!