title: “http.git”
sitename: “Caddy中文文档”
http.git
git插件是的可以部署一个支持git push的站点。
Caddy默认不支持此功能。如果需要,下载之前需要勾选上
http.cors插件。
git指令在服务生命周期开启一个服务例程。当服务启动后,开始克隆git仓库。服务运行期间,它将经常拉取最新的内容。你可以设置一个webhook在推送后立刻拉取。以常规的git方式,拉取只包含变化的内容,所以效率通常很高。
示例
基本语法
git repo [path]
repo表示仓库的网址;支持SSH和HTTPS两种协议。
path表示相对于网站根目录的路径,用来克隆仓库,默认就是网站的根目录。
这个简单的语法将每隔1个小时拉取master分支,且只对公开仓库有用。
完整语法
git [repo path] {repo repopath pathbranch branchkey keyinterval intervalclone_args argspull_args argshook path secrethook_type typethen command [args...]then_long command [args...]}
repo表示仓库的网址;支持SSH和HTTPS两种协议。path存储克隆的仓库的路径,默认就是网站的根目录。可以是绝对路径或者相对路径(相对于网站根目录)。branch拉取的分支或者标签;默认是master分支。{latest}是一个占位符,表示最近的标签,用来确保最近的标签都被拉取过。keySSH私钥的路径;只有私库才需要。interval每次拉取的时间间隔(单位为s);默认值是3600(1小时),最低可以设置为5。如果设置成-1,表示禁止定期的拉取。clone_args调用git clone命令时附加的参数。比如”—depth=1”。git clone是在来源第一次被拉取时才会调用。pull_args调用git pull命令时附加的参数。比如”-s recursive -X theirs。git pull`是在更新来源时使用。hookpath和secret是用来创建拉取最新更新后的webhook。只仅限于受到支持的webhook。secret目前只被Github、Gitlab和Travis的hook所支持。command当成功拉取后执行的命令;后面跟随的是传给这个命令的参数。你可以定义多行以运行多个命令。then_long是运行时间长的命令,会放入后台执行。
这个块中的每一个属性都是可选的。path和repo可以在第一行的指令之后定义,也可以在块里边定义。
基本示例
git github.com/user/myproject subfolder
将一个公开仓库拉取到网站根目录下的subfolder目录。
更多控制
git {repo git@github.com:user/myprojectbranch v1.0key /home/user/.ssh/id_rsapath subfolderinterval 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的可能的payload。branch是分支的名称,如master。
