Update README.md
This commit is contained in:
parent
be543f4005
commit
9e5ebb599a
127
README.md
127
README.md
@ -0,0 +1,127 @@
|
|||||||
|
# Installing
|
||||||
|
```go
|
||||||
|
go get github.com/adnanh/webhook
|
||||||
|
```
|
||||||
|
|
||||||
|
# Updating
|
||||||
|
```go
|
||||||
|
go get -u github.com/adnanh/webhook
|
||||||
|
```
|
||||||
|
|
||||||
|
# Adding hooks
|
||||||
|
Hooks are defined using JSON format. The hooks file must contain an array of JSON formatted hooks. Here is an example of a valid hooks file containing one hook. The hook will be triggered whenever a push to the master branch occurrs.
|
||||||
|
```json
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "hook-1",
|
||||||
|
"command": "OS command to be executed when the hook gets triggered",
|
||||||
|
"cwd": "current working directory under which the specified command will be executed (optional, defaults to the directory where the binary resides)",
|
||||||
|
"secret": "secret key used to compute the hash of the payload (optional)",
|
||||||
|
"trigger-rule":
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "ref",
|
||||||
|
"value": "refs/heads/master"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
```
|
||||||
|
# Trigger rules
|
||||||
|
### And
|
||||||
|
*And rule* will evaluate to _true_, if and only if all of the sub rules evaluate to _true_.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"and":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "ref",
|
||||||
|
"value": "refs/heads/master"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "repository.owner.name",
|
||||||
|
"value": "adnanh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### Or
|
||||||
|
*Or rule* will evaluate to _true_, if any of the sub rules evaluate to _true_.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"or":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "ref",
|
||||||
|
"value": "refs/heads/master"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "ref",
|
||||||
|
"value": "refs/heads/development"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### Not
|
||||||
|
*Not rule* will evaluate to _true_, if and only if the sub rule evaluate to _false_.
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"not":
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "ref",
|
||||||
|
"value": "refs/heads/master"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
### Match
|
||||||
|
*Match rule* will evaluate to _true_, if and only if the payload structure contains the key specified in the `parameter` value, contains same value as specified in the `value` value.
|
||||||
|
*Please note:* due to technical limitations, _number_ and _boolean_ values in hooks file must be wrapped around with quotes.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "ref",
|
||||||
|
"value": "refs/heads/master"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
It is possible to specify the values deeper in the payload JSON object with the dot operator, and if a value of the specified key is an array, it's possible to index the array values by using the number instead of string as the key, as shown in a following example:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"match":
|
||||||
|
{
|
||||||
|
"parameter": "commits.0.author.username",
|
||||||
|
"value": "adnanh"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
# Running
|
||||||
|
In your `$GOPATH/bin` directory, you should have `webhook` binary.
|
||||||
|
|
||||||
|
Simply running the binary using `./webhook` command, will start the webhook with the default options. That means the webhook will listen on all interfaces on port 9000. It will try to read and parse `hooks.json` file from the same directory where the binary is located, and it will log everything to stdout and the file `webhook.log`.
|
||||||
|
|
||||||
|
To override any of these options, you can use the following command line flags:
|
||||||
|
```bash
|
||||||
|
-hooks="hooks.json": path to the json file containing defined hooks the webhook should serve
|
||||||
|
-ip="": ip the webhook server should listen on
|
||||||
|
-log="webhook.log": path to the log file
|
||||||
|
-port=9000: port the webhook server should listen on
|
||||||
|
```
|
Loading…
Reference in New Issue
Block a user