KatolaZ
d0afee5def
|
8 years ago | |
---|---|---|
sandpit | 8 years ago | |
.gitignore | ||
README.md | ||
parse.go | ||
scorsh.go | ||
spooler.go |
README.md
scorsh
Signed-Commit Remote Shell
scorsh lets you trigger commands on a remote git server through signed git commits.
scorsh is written in Go.
This is still work-in-progress, not ready to be used yet
WTF
...if you have ever felt that git hooks fall too short to your standards...
...because you would like each specific push event to trigger something different on the git repo...
...and you want only authorised users to be able to trigger that something...
...then scorsh might be what you have been looking for.
scorsh is a simple system to execute commands on a remote host by using GPG-signed commits containing customisable commands (scorsh-tags). scorsh consists of two components:
-
a
post-receive
git hook -
the
scorsh
binary itself
For each new push event, the post-receive
hook creates a file in a
configurable spool directory, containing information about the repo,
branch, and commits of the push.
The scorsh
binary processes inotify events from the spool, parses
each new file there, walks through the new commits looking for signed
ones, checks if the message of a signed commit contains a recognised
scorsh-tag, verifies that the user who signed the message is allowed
to use that scorsh-tag, and executes the commands associated to the
scorsh-tag. Or, well, this is what scorsh
should be able to do when
it's finished ;-)
The set of scorsh-tags accepted on a repo/branch is configurable, and each scorsh-tag can be associated to a list of commands. Commands are just URLs, at the moment restricted to two possible types:
-
file://path/to/file
- in this casescorsh
tries to execute the corresponding file (useful to execute scripts) -
http://myserver.com/where/you/like
- in this casescorsh
makes an HTTP request to the specified URL (useful to trigger other actions, e.g., Jenkins or Travis builds...)