rycus86/webhook-proxy

View on GitHub
sample.yml

Summary

Maintainability
Test Coverage
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 }}'