WordPress: bei neuem Beitrag Drone CI Pipeline ausführen
Wenn ich auf meinem Blog einen neuen Beitrag erstelle, oder einen aktualisiere/lösche, möchte ich gerne eine CI/CD-Pipeline auf meinem Drone Build-Server starten.
Dazu habe ich folgendes Plugin geschrieben:
<?php
/**
* Plugin Name: Drone CI Build
* Plugin URI: https://www.tino-kuptz.de/development/70321/wordpress-bei-neuem-beitrag-drone-ci-pipeline-ausfuehren/
* Description: Sehr simples Plugin, welches bei einem neuen Post einfach nur eine Drone CI Pipeline ausführt
* Version: 1.0.0
* Author: Tino Kuptz
* Author URI: https://www.tino-kuptz.de/
*/
define('DRONE_CI_ROOT', 'https://ci.domain.de');
define('DRONE_CI_REPO', 'org/repo');
define('DRONE_CI_TOKEN', 'XXXXXXXX');
add_action('publish_post', 'tk_drone__publish_post', 10, 2);
function tk_drone__publish_post($ID, $post) {
tk_drone__send_external_hook();
}
function tk_drone__send_external_hook() {
$url = curl_init(DRONE_CI_ROOT .'/api/repos/'. DRONE_CI_REPO .'/builds?access_token='. DRONE_CI_TOKEN);
curl_setopt($url, CURLOPT_POST, true);
curl_setopt($url, CURLOPT_POSTFIELDS, '');
curl_setopt($url, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($url);
if(curl_error($url)) die(curl_error($url));
}
?>
Den Drone CI-Token bekommt man, indem man mit seinem Benutzer links unten auf „Account“ klickt.
Das Plugin wird einfach im WordPress wp-content/plugins
z.B. als start-build.php
abgespeichert, und via WordPress aktiviert. Es triggert dann via HTTP API den Build der Anwendung. Wichtig: es triggert nur den Build, es wartet nicht auf Fertigstellung.
Die Drone-Pipeline muss dann als Trigger custom
haben, denn den triggern wir mit diesem Post.
Beispiel:
kind: pipeline
name: default
steps:
- ...
- ...
trigger:
event:
- custom
Der Trigger ist identisch zu der Schaltfläche „New Build“ im Drone-Interface.