Skip to content

Latest commit

 

History

History
106 lines (73 loc) · 4.79 KB

README.md

File metadata and controls

106 lines (73 loc) · 4.79 KB

Platform.sh -> Slack incoming webhook adapter

This is a simple php script that translates Platform.sh webhook into a Slack formatted message.

You can install this in your php app container and host it there for your project's specific webhooks.

Sponsored by Infomagnet - builds websites to any design using Drupal.

slack-example

Installation

You can install the package using the Composer package manager. You can install it by running this command in your project root:

composer require hanoii/platformsh2slack

Then create an incoming webhook on your Slack account for the package to use. You'll need the webhook URL to instantiate the adapter.

Basic Usage

<?php

// Optional settings
$settings = [
  'channel' => '#random',
  'project' => 'Some project',
  // Environment will be appended to the URL
  'project_url' => 'https://console.platform.sh/USER/PROJECTID',
];

$platformsh2slack = new Hanoii\Platformsh2Slack\Platformsh2Slack(
  'https://hooks.slack.com/...',
  $settings
);

// Optionally protect the request with a token that has to be present in the Platform.sh webhook
$platformsh2slack->validateToken('1234');

// Send the information to slack
$platformsh2slack->send();

Platform.sh build hook

If your application (.platform.app.yaml) is already being built with composer:

build:
    flavor: composer

You can simply add:

    "hanoii/platformsh2slack": "^1.0"

To your composer.json file of the project and create a small script as per above.

If not, you will have to add a script to the repository and run composer install on your build hook manually.

Settings

Option Type Default Description
channel string null The default channel that messages will be sent to, otherwise defaults to what's set on the Slack's incoming webhook
commit_limit int 10 The number of commits from the payload to include in the Slack message
routes bool false Whether to show project's routes on every slack message. If false, it will be shown only when you branch.
redirects bool false Whether to include project's redirects with routes on every Slack message. If false, redirects will be shown only when you branch.
basic_auth bool false Whether to show project environment's HTTP Authentication username and password in Slack message. WARNING: If true, potentially sensitive data passwords will be sent in the clear to your Slack channel.
configurations bool false Whether to show project's configurations on every slack message. If false, it will be shown only for master when you push, merge or have a subscription plan update.
attachment_color string '#e8e8e8' RGB color for Slack attachment.
project string null If present, it will be used as the project title instead of the default.
project_url string null If present, the project title will link to this URL instead of the default for Slack notifications. Environment branch will be appended automatically to the URL. If empty, the default project link will be used: https://console.platform.sh/project/{project_id}.
debug string null An optional server path where posssible unhandled webhooks JSON can be saved. No trailing slash. This is useful if you want to send over the json for me to add support for it. Eg '/tmp' or '/app/www/files'
debug_url_prefix string null An optional URL that maps to the debug server path value, where unhandled webhook payload JSON files are exposed over HTTP server. No trailing slash. Eg. if debug is 'app/www/files' the debug_url_prefix might be 'https://example.com/files'. This setting assumes you've configured your server to
debug_all boolean false If debug is set, it saves the JSON of every webhook sent, not only the unhandled ones.
active boolean false If active is set, only webhooks of active environments will be sent to platform. Useful for some external integrations.

Token

This is an optional feature you can choose to use on the script. It's a nice simple validation so that you script is not abused.

If you added:

$platformsh2slack->validateToken('1234');

to your script, you will have to append the token the Platform.sh's webhook integration URL.

Add the integration on platform

Run the following:

platform integration:add --type=webhook --url="https://www.example.com/platformsh2slack.php?token=TOKEN"

Environoments

You can have this script on any environment, even master. As far as my trials went, even pushing to master works.