一个命令行实用程序,用于从git存储库轻松可靠地管理手动部署

simple-git-deplo的Python项目详细描述


简单的git部署

Latest tag

一个命令行实用程序,用于从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。常见病例可写成10d1w(分别为10天和1周)。

开发设置

如果要设置此项目进行开发,请参见CONTRIBUTING.md

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
无法在Netbeans 8.2 JDK8u231中创建java Maven项目(Web应用程序)   java如何以设定的时间间隔生成随机数?   java从socket和inputStream的慢速读取   spring SCORM:Java中基于Web的SCORM播放器   Java将函数传递给方法   java绑定通用服务及其实现和子类型   java如何在运行时从选择列表框中动态选择选项?爪哇硒   java Selenium WebDriver什么是“Selenium客户端和WebDriver语言绑定”   elasticsearch需要elasticsearch高级Java客户端更新ByQueryRequest API帮助   JAVA哈希表查找最大值   WSDL操作中的java soapAction属性为空   java访问封闭类或父类方法的一般方法   eclipse在java中运行带有SeleneTestCase的ANT。lang.NoClassDefFoundError   java Hazelcast不会在节点启动时填充ReplicatedMap   如何在Java中从excel中读取特定行?   html JAVA将本地时间(GMT+8)转换为UTC时间   java将自定义端点添加到Spring数据REST存储库中,并以大摇大摆的方式显示   java计算未来位置