sample.yml
server:
host: '0.0.0.0'
port: '9999'
endpoints:
- /echo:
method: 'POST'
actions:
- log:
message: 'Incoming request on {{ request.path }}:
request headers:
{{ request.headers }}
request payload:
{{ request.json }}'
- /test:
method: 'POST'
actions:
- log:
message: 'Running tests at {{ timestamp }} ...'
- docker-compose:
project_name: 'abc'
directory: '/tmp/compose'
$get_services:
output: |
Compose:
{% for service in result %}
- service: {{ service.name }}
{% endfor %}
- docker-compose:
project_name: 'abc'
directory: '/tmp/compose'
$up:
detached: true
output: |
Containers started:
{% for container in result %}
- {{ container.name }}
{% endfor %}
- docker-compose:
project_name: 'abc'
directory: '/tmp/compose'
$down:
remove_image_type: false
include_volumes: true
output: 'Compose project stopped and removed'
- execute:
command: 'echo "Hello from the shell"'
- docker:
$containers:
$list:
filters:
name: '{{ request.json.name }}'
output: >
Containers matching "{{ request.json.name }}":
{% for container in result %}
- {{ container.name }} @ {{ container.short_id }}
{% endfor %}
- docker:
$info:
output: 'Docker version: {{ result.ServerVersion }} on {{ result.OperatingSystem }}'
- docker:
$containers:
$list:
output: '{% for container in result %}
Container: {{ container.name }} @{{ container.short_id }}
{% endfor %}'
- docker:
$containers:
$run:
image: alpine
command: 'echo "Hello from a new alpine container"'
remove: true
- log:
message: 'Tests have finished at {{ timestamp }}'
- /docker:
method: 'POST'
headers:
X-Test: '123'
body:
callback_url: 'https://.+'
repository:
repo_name: '^[0-9a-z_\\-]+/[0-9a-z_\\-]+$'
actions:
- log:
message: '[{{ datetime }}] Processing {{ request.method }} {{ request.path }} ...'
- http:
target: 'http://localhost:9999/echo'
method: 'POST'
headers:
Content-Type: 'application/json'
X-From: 'webhook-proxy'
X-Source: '{{ request.path }}'
body: '{ "repo": "{{ request.json.repository.repo_name }}" }'
- log:
message: '[{{ datetime }}] Finished {{ request.method }} {{ request.path }}'