mirror of
https://github.com/deployphp/deployer.git
synced 2025-02-22 00:03:48 +01:00
* Fixed typo * Added support for ntfy.sh notifications, contrib/ntfy recipe * Missing docs --------- Co-authored-by: HereticPilgrim <manuel.grauwiler@transformatik.ch>
159 lines
4.0 KiB
PHP
159 lines
4.0 KiB
PHP
<?php
|
||
/*
|
||
## Installing
|
||
|
||
Require ntfy.sh recipe in your `deploy.php` file:
|
||
|
||
Setup:
|
||
1. Setup deploy.php
|
||
Add in header:
|
||
```php
|
||
require 'contrib/ntfy.php';
|
||
set('ntfy_topic', 'ntfy.sh/mytopic');
|
||
```
|
||
Add in content:
|
||
```php
|
||
before('deploy', 'ntfy:notify');
|
||
after('deploy:success', 'ntfy:notify:success');
|
||
after('deploy:failed', 'ntfy:notify:failure');
|
||
```
|
||
9.) Sip your coffee
|
||
|
||
## Configuration
|
||
|
||
- `ntfy_server` – ntfy server url, default `ntfy.sh`
|
||
```
|
||
set('ntfy_server', 'ntfy.sh');
|
||
```
|
||
- `ntfy_topic` – ntfy topic, **required**
|
||
```
|
||
set('ntfy_topic', 'mysecrettopic');
|
||
```
|
||
- `ntfy_title` – the title of the message, default `{{application}}`
|
||
- `ntfy_text` – notification message template
|
||
```
|
||
set('ntfy_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*');
|
||
```
|
||
- `ntfy_tags` – notification message tags / emojis (comma separated)
|
||
```
|
||
set('ntfy_tags', `information_source`);
|
||
```
|
||
- `ntfy_priority` – notification message priority (integer)
|
||
```
|
||
set('ntfy_priority', 5);
|
||
```
|
||
- `ntfy_success_text` – success template, default:
|
||
```
|
||
set('ntfy_success_text', 'Deploy to *{{target}}* successful');
|
||
```
|
||
- `ntfy_success_tags` – success tags / emojis (comma separated)
|
||
```
|
||
set('ntfy_success_tags', `white_check_mark,champagne`);
|
||
```
|
||
- `ntfy_success_priority` – success notification message priority
|
||
- `ntfy_failure_text` – failure template, default:
|
||
```
|
||
set('ntfy_failure_text', 'Deploy to *{{target}}* failed');
|
||
```
|
||
- `ntfy_failure_tags` – failure tags / emojis (comma separated)
|
||
```
|
||
set('ntfy_failure_tags', `warning,skull`);
|
||
```
|
||
- `ntfy_failure_priority` – failure notification message priority
|
||
|
||
|
||
## Usage
|
||
|
||
If you want to notify only about beginning of deployment add this line only:
|
||
|
||
```php
|
||
before('deploy', 'ntfy:notify');
|
||
```
|
||
|
||
If you want to notify about successful end of deployment add this too:
|
||
|
||
```php
|
||
after('deploy:success', 'ntfy:notify:success');
|
||
```
|
||
|
||
If you want to notify about failed deployment add this too:
|
||
|
||
```php
|
||
after('deploy:failed', 'ntfy:notify:failure');
|
||
```
|
||
*/
|
||
namespace Deployer;
|
||
|
||
use Deployer\Utility\Httpie;
|
||
|
||
set('ntfy_server', 'ntfy.sh');
|
||
|
||
// Title of project
|
||
set('ntfy_title', function () {
|
||
return get('application', 'Project');
|
||
});
|
||
|
||
// Deploy message
|
||
set('ntfy_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*');
|
||
set('ntfy_success_text', 'Deploy to *{{target}}* successful');
|
||
set('ntfy_failure_text', 'Deploy to *{{target}}* failed');
|
||
|
||
// Message tags
|
||
set('ntfy_tags', '');
|
||
set('ntfy_success_tags', '');
|
||
set('ntfy_failure_tags', '');
|
||
|
||
desc('Notifies ntfy server');
|
||
task('ntfy:notify', function () {
|
||
if (!get('ntfy_topic', false)) {
|
||
warning('No ntfy topic configured');
|
||
return;
|
||
}
|
||
|
||
Httpie::post(get('ntfy_server'))->jsonBody([
|
||
"topic" => get('ntfy_topic'),
|
||
"title" => get('ntfy_title'),
|
||
"message" => get('ntfy_text'),
|
||
"tags" => explode(",", get('ntfy_tags')),
|
||
"priority" => get('ntfy_priority'),
|
||
])->send();
|
||
})
|
||
->once()
|
||
->hidden();
|
||
|
||
desc('Notifies ntfy server about deploy finish');
|
||
task('ntfy:notify:success', function () {
|
||
if (!get('ntfy_topic', false)) {
|
||
warning('No ntfy topic configured');
|
||
return;
|
||
}
|
||
|
||
Httpie::post(get('ntfy_server'))->jsonBody([
|
||
"topic" => get('ntfy_topic'),
|
||
"title" => get('ntfy_title'),
|
||
"message" => get('ntfy_success_text'),
|
||
"tags" => explode(",", get('ntfy_success_tags')),
|
||
"priority" => get('ntfy_success_priority'),
|
||
])->send();
|
||
})
|
||
->once()
|
||
->hidden();
|
||
|
||
desc('Notifies ntfy server about deploy failure');
|
||
task('ntfy:notify:failure', function () {
|
||
if (!get('ntfy_topic', false)) {
|
||
warning('No ntfy topic configured');
|
||
return;
|
||
}
|
||
|
||
Httpie::post(get('ntfy_server'))->jsonBody([
|
||
"topic" => get('ntfy_topic'),
|
||
"title" => get('ntfy_title'),
|
||
"message" => get('ntfy_failure_text'),
|
||
"tags" => explode(",", get('ntfy_failure_tags')),
|
||
"priority" => get('ntfy_failure_priority'),
|
||
])->send();
|
||
})
|
||
->once()
|
||
->hidden();
|