mirror of
https://github.com/deployphp/deployer.git
synced 2025-02-20 07:14:38 +01:00
172 lines
4.9 KiB
PHP
172 lines
4.9 KiB
PHP
<?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'),])
|
||
->header("X-ChatWorkToken", get('chatwork_token'))
|
||
->send();
|
||
});
|
||
|
||
// Tasks
|
||
desc('Tests messages');
|
||
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();
|
||
|
||
desc('Notifies Chatwork');
|
||
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()
|
||
->hidden();
|
||
|
||
desc('Notifies Chatwork about deploy finish');
|
||
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()
|
||
->hidden();
|
||
|
||
desc('Notifies Chatwork about deploy failure');
|
||
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()
|
||
->hidden();
|