Skip to content

An adapter from platform.sh webhook to slack incoming webhook that can be hosted on a platform.sh app.

Notifications You must be signed in to change notification settings

hanoii/platformsh2slack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 name instead of the default string. Project name is misisng in Platform.sh's payload.
project_url string null If present, the project name will be used as a link to this URL on Slack notifications. Environment branch will be appended automatically to the URL.
debug string null An optional path where posssible unhandled webhooks JSON can be saved. This is useful if you want to send over the json for me to add support for it.
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.

About

An adapter from platform.sh webhook to slack incoming webhook that can be hosted on a platform.sh app.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages