The Wayback Machine - https://web.archive.org/web/20160310164711/https://caddyserver.com/docs/git

git
Addon

Addon
This directive is a Caddy extension. To get it, select this feature when you download Caddy. Questions should be directed to its maintainer. github.com/abiosoft/caddy-git

git clones a git repository into the site. This makes it possible to deploy your site with a simple git push.

The git directive starts a service routine that runs during the lifetime of the server. When the service starts, it clones the repository. While the server is still up, it pulls the latest every so often. You can also set up a webhook to pull immediately after a push. In regular git fashion, a pull only includes changes, so it is very efficient.

If a pull fails, the service will retry up to three times. If the pull was not successful by then, it won't try again until the next interval.

Requirements: This directive requires git to be installed. Also, private repositories may only be accessed from Linux or Mac systems. (Contributions are welcome that make private repositories work on Windows.)

Syntax

git repo [clonepath]

This simplified syntax pulls from master every 3600 seconds (1 hour) and only works for public repositories.

For more control or to use a private repository, use the following syntax:

git repo [clonepath] { repo repo path clonepath branch branch key key hook path [secret] interval interval then command [args...] then_longcommand [args...] }

Each property in the block is optional. The path and repo may be specified on the first line, as in the first syntax, or they may be specified in the block with other values.

Examples

Public repository pulled into site root every hour:

git github.com/user/myproject

Public repository pulled into the "subfolder" directory in the site root:

git github.com/user/myproject /subfolder

Private repository pulled into the "subfolder" directory with tag v1.0 once per day:

git { repo [email protected]:user/myproject branch v1.0 key /home/user/.ssh/id_rsa path subfolder interval 86400 }

Generate a static site with Hugo after each pull:

git github.com/user/site { path ../ then hugo --destination=/home/user/hugosite/public }

Part of a Caddyfile for a PHP site that gets changes from a private repo:

git [email protected]:user/myphpsite { key /home/user/.ssh/id_rsa } fastcgi / 127.0.0.1:9000 php

Specifying a webhook:

git [email protected]:user/site { hook /webhook secret-password }

Generic webhook payload:

{ "ref" : "refs/heads/branch" }
Open Support Chat