Getting Started
Kirby Deploy Trigger is a plugin for Kirby CMS that adds a Panel button to start a deployment on Vercel, Netlify, GitHub Actions, or any service with a deploy hook. Your server sends the request, so the hook URL and any token stay in config.php.
Step 1: Install the Plugin
Composer
The recommended way to install the plugin:
composer require johannschopplich/kirby-deploy-trigger
ZIP File Download
Download the latest release or head over to the releases page to see all versions. Extract the ZIP file to your site/plugins folder.
Step 2: Set the Deploy Hook URL
Your hosting platform gives you a URL that starts a deployment when it receives a request. Set it as the deployUrl:
return [
'johannschopplich.deploy-trigger' => [
'deployUrl' => 'https://api.netlify.com/build_hooks/<hook-id>'
]
];
Platforms shows where Vercel, Netlify, and GitHub Actions hand out the URL.
Step 3: Add the Button to a Blueprint
Add deploy-trigger to the buttons of the site blueprint:
buttons:
- open # `buttons` replaces Kirby's
- preview # defaults, so list them all
- deploy-trigger
- languages
A page blueprint takes the same entry.
To show the button in every page view without touching each page blueprint, set Kirby's panel.viewButtons option instead. A blueprint's buttons still take precedence:
return [
'panel' => [
'viewButtons' => [
'page' => ['open', 'preview', 'deploy-trigger', '-', 'settings', 'languages', 'status']
]
]
];
Step 4: Deploy From the Panel
Click Deploy Site in the view's header. A notification confirms once the deploy hook accepts the request. The deployment itself then runs on your platform, and the Panel doesn't follow it.
When a Deployment Fails
A failed request shows up as a Panel error:
- A response outside the 2xx range names its status code, followed by the response body unless that is an HTML page.
- A hook that can't be reached – an unknown host, a timeout – shows the connection error.
- Without a
deployUrl, the error names the missing option.
To send a token, a JSON body, or a longer timeout with the request, see Configuration.