2020-04-25 23:00:08 +03:00
|
|
|
|
<?php
|
2020-10-02 00:11:13 +02:00
|
|
|
|
/*
|
|
|
|
|
## Installing
|
|
|
|
|
|
|
|
|
|
This recipes works with Custom Integrations and Publishing Bots.
|
|
|
|
|
|
|
|
|
|
Require the new recipe into your `deploy.php`
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
require 'contrib/workplace.php';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add hook on deploy:
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
before('deploy', 'workplace:notify');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
|
|
- `workplace_webhook` - incoming workplace webhook **required**
|
|
|
|
|
```
|
|
|
|
|
// With custom integration
|
|
|
|
|
set('workplace_webhook', 'https://graph.facebook.com/<GROUP_ID>/feed?access_token=<ACCESS_TOKEN>');
|
|
|
|
|
|
|
|
|
|
// With publishing bot
|
|
|
|
|
set('workplace_webhook', 'https://graph.facebook.com/v3.0/group/feed?access_token=<ACCESS_TOKEN>');
|
|
|
|
|
|
|
|
|
|
// Use markdown on message
|
|
|
|
|
set('workplace_webhook', 'https://graph.facebook.com/<GROUP_ID>/feed?access_token=<ACCESS_TOKEN>&formatting=MARKDOWN');
|
|
|
|
|
```
|
2020-04-25 23:00:08 +03:00
|
|
|
|
|
2020-10-02 00:11:13 +02:00
|
|
|
|
- `workplace_text` - notification message
|
|
|
|
|
```
|
|
|
|
|
set('workplace_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
- `workplace_success_text` – success template, default:
|
|
|
|
|
```
|
|
|
|
|
set('workplace_success_text', 'Deploy to *{{target}}* successful');
|
|
|
|
|
```
|
|
|
|
|
- `workplace_failure_text` – failure template, default:
|
|
|
|
|
```
|
|
|
|
|
set('workplace_failure_text', 'Deploy to *{{target}}* failed');
|
|
|
|
|
```
|
|
|
|
|
- `workplace_edit_post` – whether to create a new post for deploy result, or edit the first one created, default creates a new post:
|
|
|
|
|
```
|
|
|
|
|
set('workplace_edit_post', false);
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
|
|
If you want to notify only about beginning of deployment add this line only:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
before('deploy', 'workplace:notify');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you want to notify about successful end of deployment add this too:
|
|
|
|
|
|
|
|
|
|
```php
|
2020-10-29 23:16:36 +01:00
|
|
|
|
after('deploy:success', 'workplace:notify:success');
|
2020-10-02 00:11:13 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you want to notify about failed deployment add this too:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
after('deploy:failed', 'workplace:notify:failure');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
*/
|
2020-04-25 23:00:08 +03:00
|
|
|
|
namespace Deployer;
|
|
|
|
|
|
|
|
|
|
use Deployer\Utility\Httpie;
|
|
|
|
|
|
|
|
|
|
// Deploy message
|
|
|
|
|
set('workplace_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*');
|
|
|
|
|
set('workplace_success_text', 'Deploy to *{{target}}* successful');
|
|
|
|
|
set('workplace_failure_text', 'Deploy to *{{target}}* failed');
|
|
|
|
|
|
|
|
|
|
// By default, create a new post for every message
|
|
|
|
|
set('workplace_edit_post', false);
|
|
|
|
|
|
|
|
|
|
desc('Notifying Workplace');
|
|
|
|
|
task('workplace:notify', function () {
|
|
|
|
|
if (!get('workplace_webhook', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
$url = get('workplace_webhook') . '&message=' . urlencode(get('workplace_text'));
|
|
|
|
|
$response = Httpie::post($url)->getJson();
|
|
|
|
|
|
|
|
|
|
if (get('workplace_edit_post', false)) {
|
|
|
|
|
// Endpoint will be something like: https//graph.facebook.com/<POST_ID>?<QUERY_PARAMS>
|
|
|
|
|
$url = sprintf(
|
|
|
|
|
'%s://%s/%s?%s',
|
|
|
|
|
parse_url(get('workplace_webhook'), PHP_URL_SCHEME),
|
|
|
|
|
parse_url(get('workplace_webhook'), PHP_URL_HOST),
|
|
|
|
|
$response['id'],
|
|
|
|
|
parse_url(get('workplace_webhook'), PHP_URL_QUERY)
|
|
|
|
|
);
|
|
|
|
|
// Replace the webhook with a url that points to the created post
|
|
|
|
|
set('workplace_webhook', $url);
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow()
|
|
|
|
|
->hidden();
|
|
|
|
|
|
|
|
|
|
desc('Notifying Workplace about deploy finish');
|
|
|
|
|
task('workplace:notify:success', function () {
|
|
|
|
|
if (!get('workplace_webhook', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
$url = get('workplace_webhook') . '&message=' . urlencode(get('workplace_success_text'));
|
|
|
|
|
return Httpie::post($url)->send();
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow()
|
|
|
|
|
->hidden();
|
|
|
|
|
|
|
|
|
|
desc('Notifying Workplace about deploy failure');
|
|
|
|
|
task('workplace:notify:failure', function () {
|
|
|
|
|
if (!get('workplace_webhook', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
$url = get('workplace_webhook') . '&message=' . urlencode(get('workplace_failure_text'));
|
|
|
|
|
return Httpie::post($url)->send();
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow()
|
|
|
|
|
->hidden();
|