/wp-vercel-deploy-hooks

WordPress Plugin to trigger Vercel deploy hooks on command / update

Primary LanguagePHPGNU General Public License v3.0GPL-3.0

WP Vercel Deploy Hooks

A WordPress plugin to deploy a static site to Vercel when you publish a new WordPress post/page, update a WordPress post/page or deploy on command from the WordPress admin menu and admin bar.

Based on the excellent WordPress Plugin WP Netlify Webhook Deploy.

✅ Features

  • 🚗   Deploy your Vercel project when publishing / updating a WordPress post
  • 👉   Manually deploy your Vercel Project with the push of a button
  • ⏲   Schedule deploys on a daily or weekly basis (mileage may vary).

🛠 Installation

You can install WP Vercel Deploy Hooks manually or through Composer

🤙 Manual Install

  1. Download the plugin as a .zip file from the repository
  2. Login to your WordPress site and go to Plugins -> Add new -> Upload plugin
  3. Locate the .zip file on your machine, upload and activate

🎼 Composer

Composer allows you to install pacakges from a GitHub repository. This repository includes a composer.json file which declares the package as a WordPress plugin. Include it in your project's composer.json as following:

...
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/aderaaij/wp-vercel-deploy-hooks.git"
    }
  ],
  "require": {
    "aderaaij/wp-vercel-deploy-hooks": "main"
  }
...

Now the package will be included in the plugins folder when you use composer install/update.

⚙️ Settings / Configuration

To enable the plugin, you will need to create a Deploy Hook for your Vercel Project.

🎚 Settings

After you've created your deploy hook, navigate to Deploy -> Settings in the WordPress admin menu and paste your Vercel Deploy hook URL. On the settings page you can also activate deploys when you publish or update a post (disabled by default).

You can configure the Vercel Deploy Hook URL in your wp-config.php or other configuration file to be based on your environment using the constant WP_VERCEL_WEBHOOK_ADDRESS. An example follows:

switch (WP_ENVIRONMENT_TYPE) {
    case "live":
    case "production":
        define( 'WP_VERCEL_WEBHOOK_ADDRESS', 'https://api.vercel.com/v1/integrations/deploy/<sample>/<sample>' );
        break;

    case "test":
    case "staging":
        define( 'WP_VERCEL_WEBHOOK_ADDRESS', 'https://api.vercel.com/v1/integrations/deploy/<sample>/<sample>' );
        break;

    case "dev":
    case "development":
        define( 'WP_VERCEL_WEBHOOK_ADDRESS', 'https://api.vercel.com/v1/integrations/deploy/<sample>/<sample>' );
        break;
        
    case "local":
        define( 'WP_VERCEL_WEBHOOK_ADDRESS', 'https://api.vercel.com/v1/integrations/deploy/<sample>/<sample>' );
        break;
}

See https://make.wordpress.org/core/2020/07/24/new-wp_get_environment_type-function-in-wordpress-5-5/ for more guidance on using WP_ENVIRONMENT_TYPE

⏲ Scheduling

When you enable scheduling it calls the cron_schedules hook which depends on your site having visitors to be triggered. To make sure your schedule is triggered timely, you could schedule a CRON job in your hosting panel which calls wp-cron.php. Please check out the Webhook Netlify Deploy scheduling documentation for more information.

👯 Contributors & Credits

This plugin was based on the excellent WordPress Plugin WP Netlify Webhook Deploy

Made with contrib.rocks.

🤔 To Do

  • Add support for deploy and build statusses and updates through the Vercel API
  • Add support for Netlify Builds and Deploys
  • Add support for multiple Vercel deploy endpoints