NAME

Toadfarm::Plugin::Reload - Reload toadfarm with new code

DESCRIPTION

This Mojolicious plugin allow the "Toadfarm" server to restart when a resource is hit with a special JSON payload. The payload need to be compatible with the post-receive-hook github use.

SETUP

  • You need to set up a post receive hook on github to make this reloader work. Go to "https://github.com/jhthorsen/YOUR-REPO/settings/hooks" to set it up.

  • The WebHook URL need to be "http://yourserver.com/some/secret/path". See CONFIG below for details.

CONFIG

This is a config template for Toadfarm:

{
  apps => [...],
  plugins => [
    Reload => {
      path => '/some/secret/path',
      repositories => [
        {
          name => 'cool-repo',
          branch => 'some-branch',
          path => '/path/to/cool-repo',
          remote => 'whatever', # defaults to "origin"
        },
      ],
    },
    # ...
  ],
}

Details:

  • path

    This should be the path part of the URL to POST data to reload the server. Make this something semi secret to avoid random requests:

    perl -le'print join "/", "", "reload", (time.$$.rand(9999999)) =~ /(\w\w)/g'
  • repositories

    This should contain a mapping between github repository names and local settings:

    • branch

      This need to match the branch which you push to github. It should be something like "production", and not "master" - unless you want every push to master to reload the server.

    • path

      This is the path on disk to the local git repo.

METHODS

register

$self->register($app, \%config);

See "SYNOPSIS" for %config parameters.

AUTHOR

Jan Henning Thorsen - jhthorsen@cpan.org