2021-02-22 20:04:03 +07:00
|
|
|
|
<?php
|
|
|
|
|
/*
|
|
|
|
|
# Chatwork Recipe
|
|
|
|
|
|
|
|
|
|
## Installing
|
|
|
|
|
1. Create chatwork account by any manual in the internet
|
|
|
|
|
2. Take chatwork token (Like: b29a700e2d15bef3f26ae6a5c142d1ea) and set `chatwork_token` parameter
|
|
|
|
|
3. Take chatwork room id from url after clicked on the room, and set `chatwork_room_id` parameter
|
|
|
|
|
4. If you want, you can edit `chatwork_notify_text`, `chatwork_success_text` or `chatwork_failure_text`
|
|
|
|
|
5. Require chatwork recipe in your `deploy.php` file
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
# https://deployer.org/recipes.html
|
|
|
|
|
|
|
|
|
|
require 'recipe/chatwork.php';
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Add hook on deploy:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
before('deploy', 'chatwork:notify');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
|
|
- `chatwork_token` – chatwork bot token, **required**
|
|
|
|
|
- `chatwork_room_id` — chatwork room to push messages to **required**
|
|
|
|
|
- `chatwork_notify_text` – notification message template
|
|
|
|
|
```
|
|
|
|
|
[info]
|
|
|
|
|
[title](*) Deployment Status: Deploying[/title]
|
|
|
|
|
Repo: {{repository}}
|
|
|
|
|
Branch: {{branch}}
|
|
|
|
|
Server: {{hostname}}
|
|
|
|
|
Release Path: {{release_path}}
|
|
|
|
|
Current Path: {{current_path}}
|
|
|
|
|
[/info]
|
|
|
|
|
```
|
|
|
|
|
- `chatwork_success_text` – success template, default:
|
|
|
|
|
```
|
|
|
|
|
[info]
|
|
|
|
|
[title](*) Deployment Status: Successfully[/title]
|
|
|
|
|
Repo: {{repository}}
|
|
|
|
|
Branch: {{branch}}
|
|
|
|
|
Server: {{hostname}}
|
|
|
|
|
Release Path: {{release_path}}
|
|
|
|
|
Current Path: {{current_path}}
|
|
|
|
|
[/info]"
|
|
|
|
|
```
|
|
|
|
|
- `chatwork_failure_text` – failure template, default:
|
|
|
|
|
```
|
|
|
|
|
[info]
|
|
|
|
|
[title](*) Deployment Status: Failed[/title]
|
|
|
|
|
Repo: {{repository}}
|
|
|
|
|
Branch: {{branch}}
|
|
|
|
|
Server: {{hostname}}
|
|
|
|
|
Release Path: {{release_path}}
|
|
|
|
|
Current Path: {{current_path}}
|
|
|
|
|
[/info]"
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Tasks
|
|
|
|
|
|
|
|
|
|
- `chatwork:notify` – send message to chatwork
|
|
|
|
|
- `chatwork:notify:success` – send success message to chatwork
|
|
|
|
|
- `chatwork:notify:failure` – send failure message to chatwork
|
|
|
|
|
|
|
|
|
|
## Usage
|
|
|
|
|
|
|
|
|
|
If you want to notify only about beginning of deployment add this line only:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
before('deploy', 'chatwork:notify');
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
If you want to notify about successful end of deployment add this too:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
after('success', 'chatwork:notify:success');
|
|
|
|
|
```
|
|
|
|
|
If you want to notify about failed deployment add this too:
|
|
|
|
|
|
|
|
|
|
```php
|
|
|
|
|
after('deploy:failed', 'chatwork:notify:failure');
|
|
|
|
|
```
|
|
|
|
|
*/
|
|
|
|
|
namespace Deployer;
|
|
|
|
|
use Deployer\Utility\Httpie;
|
|
|
|
|
|
|
|
|
|
// Chatwork settings
|
|
|
|
|
set('chatwork_token', function () {
|
|
|
|
|
throw new \RuntimeException('Please configure "chatwork_token" parameter.');
|
|
|
|
|
});
|
|
|
|
|
set('chatwork_room_id', function () {
|
|
|
|
|
throw new \RuntimeException('Please configure "chatwork_room_id" parameter.');
|
|
|
|
|
});
|
|
|
|
|
set('chatwork_api', function () {
|
|
|
|
|
return 'https://api.chatwork.com/v2/rooms/' . get('chatwork_room_id') . '/messages';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// The Messages
|
|
|
|
|
set('chatwork_notify_text', "[info]\n[title](*) Deployment Status: Deploying[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]");
|
|
|
|
|
set('chatwork_success_text', "[info]\n[title](*) Deployment Status: Successfully[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]");
|
|
|
|
|
set('chatwork_failure_text', "[info]\n[title](*) Deployment Status: Failed[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]");
|
|
|
|
|
|
|
|
|
|
// Helpers
|
|
|
|
|
task('chatwork_send_message', function() {
|
|
|
|
|
Httpie::post(get('chatwork_api'))
|
|
|
|
|
->query(['body' => get('chatwork_message'),])
|
2021-11-07 10:49:16 +01:00
|
|
|
|
->header("X-ChatWorkToken", get('chatwork_token'))
|
2021-02-22 20:04:03 +07:00
|
|
|
|
->send();
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
// Tasks
|
2021-11-08 22:59:39 +01:00
|
|
|
|
desc('Tests messages');
|
2021-02-22 20:04:03 +07:00
|
|
|
|
task('chatwork:test', function () {
|
|
|
|
|
set('chatwork_message', get('chatwork_notify_text'));
|
|
|
|
|
invoke('chatwork_send_message');
|
|
|
|
|
set('chatwork_message', get('chatwork_success_text'));
|
|
|
|
|
invoke('chatwork_send_message');
|
|
|
|
|
set('chatwork_message', get('chatwork_failure_text'));
|
|
|
|
|
invoke('chatwork_send_message');
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow();
|
|
|
|
|
|
2021-11-08 22:59:39 +01:00
|
|
|
|
desc('Notifies Chatwork');
|
2021-02-22 20:04:03 +07:00
|
|
|
|
task('chatwork:notify', function () {
|
|
|
|
|
if (!get('chatwork_token', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!get('chatwork_room_id', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
set('chatwork_message', get('chatwork_notify_text'));
|
|
|
|
|
invoke('chatwork_send_message');
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow()
|
|
|
|
|
->hidden();
|
|
|
|
|
|
2021-11-08 22:59:39 +01:00
|
|
|
|
desc('Notifies Chatwork about deploy finish');
|
2021-02-22 20:04:03 +07:00
|
|
|
|
task('chatwork:notify:success', function () {
|
|
|
|
|
if (!get('chatwork_token', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!get('chatwork_room_id', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set('chatwork_message', get('chatwork_success_text'));
|
|
|
|
|
invoke('chatwork_send_message');
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow()
|
|
|
|
|
->hidden();
|
|
|
|
|
|
2021-11-08 22:59:39 +01:00
|
|
|
|
desc('Notifies Chatwork about deploy failure');
|
2021-02-22 20:04:03 +07:00
|
|
|
|
task('chatwork:notify:failure', function () {
|
|
|
|
|
if (!get('chatwork_token', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!get('chatwork_room_id', false)) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
set('chatwork_message', get('chatwork_failure_text'));
|
|
|
|
|
invoke('chatwork_send_message');
|
|
|
|
|
})
|
|
|
|
|
->once()
|
|
|
|
|
->shallow()
|
|
|
|
|
->hidden();
|