http.git

git插件是的可以部署一个支持git push的站点。

Caddy默认不支持此功能。如果需要,下载之前需要勾选上http.cors插件。

git指令在服务生命周期开启一个服务例程。当服务启动后,开始克隆git仓库。服务运行期间,它将经常拉取最新的内容。你可以设置一个webhook在推送后立刻拉取。以常规的git方式,拉取只包含变化的内容,所以效率通常很高。

完整文档

示例

基本语法

git repo [path]

repo表示仓库的网址;支持SSHHTTPS两种协议。

path表示相对于网站根目录的路径,用来克隆仓库,默认就是网站的根目录。

这个简单的语法将每隔1个小时拉取master分支,且只对公开仓库有用。

完整语法

git [repo path] {
    repo        repo
    path        path
    branch      branch
    key         key
    interval    interval
    clone_args  args
    pull_args   args
    hook        path secret
    hook_type   type
    then        command [args...]
    then_long   command [args...]
}
  • repo 表示仓库的网址;支持SSHHTTPS两种协议。

  • path 存储克隆的仓库的路径,默认就是网站的根目录。可以是绝对路径或者相对路径(相对于网站根目录)。

  • branch 拉取的分支或者标签;默认是master分支。{latest}是一个占位符,表示最近的标签,用来确保最近的标签都被拉取过。

  • key SSH私钥的路径;只有私库才需要。

  • interval 每次拉取的时间间隔(单位为s);默认值是3600(1小时),最低可以设置为5。如果设置成-1,表示禁止定期的拉取。

  • clone_args 调用git clone命令时附加的参数。比如"--depth=1"。git clone是在来源第一次被拉取时才会调用。

  • pull_args 调用git pull命令时附加的参数。比如"-s recursive -X theirsgit pull`是在更新来源时使用。

  • hook pathsecret是用来创建拉取最新更新后的webhook。只仅限于受到支持的webhook。secret目前只被Github、Gitlab和Travis的hook所支持。

  • command 当成功拉取后执行的命令;后面跟随的是传给这个命令的参数。你可以定义多行以运行多个命令。then_long是运行时间长的命令,会放入后台执行。

这个块中的每一个属性都是可选的。pathrepo可以在第一行的指令之后定义,也可以在块里边定义。

基本示例

git github.com/user/myproject subfolder

将一个公开仓库拉取到网站根目录下的subfolder目录。

更多控制

git {
    repo     git@github.com:user/myproject
    branch   v1.0
    key      /home/user/.ssh/id_rsa
    path     subfolder
    interval 86400
}

每天1次,从私库拉取标签为"v1.0"的私库到subfolder目录。

拉取后运行一个命令

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

这个例字在每次拉取后将使用Hugo创建一个静态站点。

定义一个webhook

git git@github.com:user/site {
    hook /webhook secret-password
}

/webhook是路径,而secret-password是hook的私钥(如果可用)。webhook被GitHub、 Gitlab、BitBucket、Travis和Gogs支持。

如果私钥名称包含特殊字符,需要用引号包含起来。

一般webhook

{
    "ref" : "refs/heads/branch"
}

这是一个一般webhook的可能的payloadbranch是分支的名称,如master。