在4teamwork进行基于git push的部署的工具和脚本。
项目描述
ftw.deploy
ftw.deploy为基于git-push的部署设置提供了一些有见地的工具。此工具有助于安装钩子和部署脚本。
安装
ftw.deploy简单地提供了一个作为控制台脚本的deploy命令。它需要Python 3!
该软件包可以通过与您最喜欢的隔离/虚拟环境方式结合使用pip进行安装。
示例
$ python3 -m venv ftw.deploy
$ cd ftw.deploy
$ source bin/activate
$ ./bin/pip install ftw.deploy
# sym-link the deploy script into your PATH
$ ln -s `pwd`/bin/deploy ~/bin
$ deploy --help
用法
安装后,应该有可用的deploy命令。最新的文档可以通过deploy help获取。
初始化部署脚本
新项目的第一步是初始化部署脚本。可以使用deploy init plone来完成此操作。这将在deploy和scripts文件夹中创建脚本。
安装部署和配置远程服务器
接下来,通过克隆存储库并执行安装步骤,在服务器上安装部署。然后,使用部署位置调整scripts/setup-git-remotes并执行它。
设置钩子
要安装post-receive钩子并配置存储库,请执行deploy setup [remote]命令。
更新脚本
您可以使用deploy update更新项目中现有的脚本。
安装更新
一切设置好后,您只需将远程的master-分支推送到以安装更新。示例
git push prod master
git push test my-branch:master
git push prod test/master:master
重新运行部署
如果您需要重新运行部署,只需使用 deploy rerun [远程]。
使用 ssh 连接到部署
ftw.deploy 提供了通过 ssh 连接并切换到部署目录的快捷方式 deploy ssh [远程]。
模板
Plone
plone 模板包含针对与 ftw.buildouts 结合使用的优化推送部署脚本。
自定义更新脚本
可以配置 deploy/after_push 脚本,使其运行 deploy/update_plone 之外的脚本。
例如,您可以在 scripts/nightly-reinstall 中添加,并将其添加到您的夜间构建配置文件中
[buildout]
deployment-update-plone-script = scripts/nightly-reinstall
请注意,这必须在部署的 buildout.cfg 文件中(这可能是符号链接),但由于构建配置文件不会递归解析此选项,因此不能扩展。
高级用法
无需SSH的VPN
当部署位于无 SSH 访问的 VPN 中时,我们无法将内容推送到部署。在这种情况下,可以使用 deploy/pull 脚本来模拟推送。它会从上游(分支必须定义了上游)拉取,并运行部署脚本。
零停机时间
当需要安装升级时,脚本通常会关闭站点以防止在升级运行时数据库出现冲突写入。
当处于零停机环境(例如,当只有发布者写入数据库时,运行升级时数据库将被停止)时,对匿名用户保持站点运行是安全的。
要启用此行为,您必须在应升级为零停机模式的构建配置中设置 deployment-zero-downtime 选项。
警告: deployment-zero-downtime 必须在部署的 buildout.cfg 文件中。当使用 extend 为此选项时,它不起作用,因为选项直接从 buildout.cfg 中读取。
示例
[buildout]
extends =
...
deployment-zero-downtime = true
零停机时间部署单个提交
当部署带有升级步骤的提交时,除非配置为零停机,否则站点将被关闭。但有时我们想在非零停机部署中(快速)升级提交,但又不希望出现停机。要标记提交为“零停机证明”,您可以在进行常规部署之前将其推送到部署远程的 zero-downtime 分支。
$ git push testing master:zero-downtime
$ git push testing master
通过环境变量激活零停机时间
当使用 deploy/pull 时,我们可以通过环境变量激活零停机策略
示例
$ ZERO_DOWNTIME=true deploy/pull
开发
为了开发 ftw.deploy,您需要安装 pipenv 并按照以下说明操作
$ git clone git@github.com:4teamwork/ftw.deploy.git
$ cd ftw.deploy
$ pipenv install --dev
$ pipenv shell
$ deploy --help
$ pytest
版权
本软件包版权由 4teamwork 所有。
ftw.deploy 基于 GNU 通用公共许可证,版本 2。
变更日志
1.3.0 (2019-12-17)
Plone 模板:结合 Plone 5 资源包聚合。[jone]
1.2.0 (2019-02-04)
为 deploy ssh 添加 –tunnel 选项。[jone]
1.1.0 (2018-12-21)
修复导致不在 git 仓库中时崩溃的错误。[jone]
提供“deploy ssh”命令。[jone]
1.0.0 (2018-12-21)
初始实现。[jone]