deployer/contrib/rocketchat.php
2020-10-29 23:16:36 +01:00

180 lines
4.7 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/*
## Installing
Create a RocketChat incoming webhook, through the administration panel.
Require the new recipe into your `deploy.php`
```php
require 'contrib/rocketchat.php';
```
Add hook on deploy:
```
before('deploy', 'rocketchat:notify');
```
## Configuration
- `rocketchat_webhook` - incoming rocketchat webook **required**
```
set('rocketchat_webook', 'https://rocketchat.yourcompany.com/hooks/XXXXX');
```
- `rocketchat_title` - the title of the application, defaults to `{{application}}`
- `rocketchat_text` - notification message
```
set('rocketchat_text', '_{{user}}_ deploying {{branch}} to {{target}}');
```
- `rocketchat_success_text` success template, default:
```
set('rocketchat_success_text', 'Deploy to *{{target}}* successful');
```
- `rocketchat_failure_text` failure template, default:
```
set('rocketchat_failure_text', 'Deploy to *{{target}}* failed');
```
- `rocketchat_color` color's attachment
- `rocketchat_success_color` success color's attachment
- `rocketchat_failure_color` failure color's attachment
## Usage
If you want to notify only about beginning of deployment add this line only:
```php
before('deploy', 'rocketchat:notify');
```
If you want to notify about successful end of deployment add this too:
```php
after('deploy:success', 'rocketchat:notify:success');
```
If you want to notify about failed deployment add this too:
```php
after('deploy:failed', 'rocketchat:notify:failure');
```
*/
namespace Deployer;
use Deployer\Utility\Httpie;
set('rockchat_title', function() {
return get('application', 'Project');
});
set('rocketchat_icon_emoji', ':robot:');
set('rocketchat_icon_url', null);
set('rocketchat_channel', null);
set('rocketchat_room_id', null);
set('rocketchat_username', null);
set('rocketchat_webhook', null);
set('rocketchat_color', '#000000');
set('rocketchat_success_color', '#00c100');
set('rocketchat_failure_color', '#ff0909');
set('rocketchat_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*');
set('rocketchat_success_text', 'Deploy to *{{target}}* successful');
set('rocketchat_failure_text', 'Deploy to *{{target}}* failed');
desc('Notify RocketChat');
task('rocketchat:notify', function() {
if (null === get('rocketchat_webhook')) {
return;
}
$body = [
'text' => get('rockchat_title'),
'username' => get('rocketchat_username'),
'attachments' => [[
'text' => get('rocketchat_text'),
'color' => get('rocketchat_color'),
]]
];
if (get('rocketchat_channel')) {
$body['channel'] = get('rocketchat_channel');
}
if (get('rocketchat_room_id')) {
$body['roomId'] = get('rocketchat_room_id');
}
if (get('rocketchat_icon_url')) {
$body['avatar'] = get('rocketchat_icon_url');
} elseif (get('rocketchat_icon_emoji')) {
$body['emoji'] = get('rocketchat_icon_emoji');
}
Httpie::post(get('rocketchat_webhook'))->body($body)->send();
});
desc('Notifying RocketChat about deploy finish');
task('rocketchat:notify:success', function() {
if (null === get('rocketchat_webhook')) {
return;
}
$body = [
'text' => get('rockchat_title'),
'username' => get('rocketchat_username'),
'attachments' => [[
'text' => get('rocketchat_success_text'),
'color' => get('rocketchat_success_color'),
]]
];
if (get('rocketchat_channel')) {
$body['channel'] = get('rocketchat_channel');
}
if (get('rocketchat_room_id')) {
$body['roomId'] = get('rocketchat_room_id');
}
if (get('rocketchat_icon_url')) {
$body['avatar'] = get('rocketchat_icon_url');
} elseif (get('rocketchat_icon_emoji')) {
$body['emoji'] = get('rocketchat_icon_emoji');
}
Httpie::post(get('rocketchat_webhook'))->body($body)->send();
});
desc('Notifying RocketChat about deploy failure');
task('rocketchat:notify:failure', function() {
if (null === get('rocketchat_webhook')) {
return;
}
$body = [
'text' => get('rockchat_title'),
'username' => get('rocketchat_username'),
'attachments' => [[
'color' => get('rocketchat_failure_color'),
'text' => get('rocketchat_failure_text')
]]
];
if (get('rocketchat_channel')) {
$body['channel'] = get('rocketchat_channel');
}
if (get('rocketchat_room_id')) {
$body['roomId'] = get('rocketchat_room_id');
}
if (get('rocketchat_icon_url')) {
$body['avatar'] = get('rocketchat_icon_url');
} elseif (get('rocketchat_icon_emoji')) {
$body['emoji'] = get('rocketchat_icon_emoji');
}
Httpie::post(get('rocketchat_webhook'))->body($body)->send();
});