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.
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.
<?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();
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.
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. |
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.
Run the following:
platform integration:add --type=webhook --url="https://www.example.com/platformsh2slack.php?token=TOKEN"
You can have this script on any environment, even master. As far as my trials went, even pushing to master works.