一个命令行实用程序,用于从git存储库轻松可靠地管理手动部署
simple-git-deplo的Python项目详细描述
简单的git部署
一个命令行实用程序,用于从git存储库轻松可靠地管理手动部署。
如果应用一些最小的自动化,即使手动部署也可以变得可靠。此实用程序从git存储库执行atomic部署,具有可选的build阶段(例如安装依赖项)。在构建成功完成之前,先前的部署不会受到影响-更新git分支时不再出现不一致错误,但应用程序尚未完全更新-例如,缺少包管理器的新依赖项。
每个部署都构建在为该部署创建的新目录中。以前的部署被保留(以后可以清除),目标只在构建完成时更新——这就是我们所说的atomic如果生成失败,则不会更新目标。
build的含义由用户定义;它可以是任何可从shell运行的命令。在一个简单的.ini
文件中进行配置。
安装
要求:
- python≥3.5(已使用3.6和3.7进行了测试,但仍应使用3.5)
- git≥2.7(取决于
git worktree
特性)
通过pip安装:
$ pip install git+https://github.com/edudobay/simple-git-deploy.git
如果失败并且您不知道该做什么,可以尝试在pip install
之后和url之前添加--user
选项。
用法
在installing this utility之后,您可以运行simple-git-deploy --help
获取基本用法说明。
最简单的方法是运行simple-git-deploy deploy <git-branch-name>
。但在首次使用之前,您必须创建一个至少具有以下设置的deploy.ini
文件(进一步查看示例):
dirs.deploy
:部署应用程序的目录。当前部署将在此目录下的current
处可用。这将是指向实际部署目录的符号链接。因此,例如,如果您有一个php应用程序,您可以将nginx指向
/app/deployments/current
目录,该目录将包含git存储库的工作树,并且将在您部署新版本时更新,只要您将其添加到deploy.ini
:[dirs]deploy=/app/deployments
每个部署也将位于此目录中,其名称包含部署的日期/时间、git提交哈希和已部署的分支/标记的名称。
build.run
:在build阶段运行哪个命令。典型的用法是运行包管理器、复制配置文件、编译资产这是作为shell命令行运行的,因此可以像
npm install && npm run build
中那样链接命令。
因此,完整的配置文件是:
[dirs]deploy=/app/deployments[build]run=npm install && npm run build
假定生成将在要部署应用程序的同一主机中运行。此外,运行此脚本的用户必须具有权限才能在部署目录中写入。
清除旧部署
可以使用simple-git-deploy purge
清除旧部署有两种方法可以指定要删除的内容:
--keep-latest N
:只保留最新的n部署(当前部署除外)。使用n=0时,仅保留当前部署,而使用n=1时,仅保留当前部署以外的一个部署。--older-than DATETIME
:放弃时间戳严格早于给定日期/时间的部署可以接受多种绝对和相对格式;有关详细信息,请参见dateparser documentation。常见病例可写成10d
,1w
(分别为10天和1周)。
开发设置
如果要设置此项目进行开发,请参见CONTRIBUTING.md。