nimbly/小兵

框架和语言无关的远程部署自动化工具

3.0.3 2022-02-26 20:23 UTC

This package is auto-updated.

Last update: 2024-08-27 02:24:18 UTC


README

小兵为每次部署创建一个新的仓库检查/克隆。这允许进行干净的安装和轻松回滚到以前的版本。一般思路是单个目录包含发布版本,一个符号链接指向当前发布版本。

注意:为了与您的web服务器(Apache、Nginx等)一起使用,您必须更新其配置,使其将符号链接作为其webroot。

在部署过程中,小兵将在每个定义的服务器上应用您的部署策略。部署策略只是一系列您希望小兵运行的任务

小兵有几个内置的任务 - 然而,您需要创建并实现自己的任务以充分利用。一些示例:安装composer、运行迁移、刷新缓存、重启web服务、重启web应用程序等。

安装

composer require nimbly/minion

初始化

minion make:init

配置

如果您运行make:init命令,小兵将创建几个目录(TasksCommands),以及生成一个默认的配置文件(minion.yml)。

配置文件的前几个部分定义了全局配置选项。每个定义的环境可以可选地覆盖这些全局选项。

全局部分包括

  • 远程
  • 身份验证
  • 代码

远程

远程部分定义了远程服务器环境上的选项,包括部署代码的位置。

远程部分的选项如下

  • path [字符串] 服务器上代码的绝对路径。即部署代码的路径。

  • releaseDir [字符串] 存储发布版本的路径(相对于path)。

  • symlink [字符串] 指向当前发布版本的符号链接名称。

  • keepReleases [整数] 在修剪旧发布版本之前保留的发布版本数量。

身份验证

身份验证部分定义了SSH如何与您的服务器进行身份验证。您可以使用用户名和密码使用用户名、密钥和(可选)密钥密码。

注意:由于小兵使用PHPSECLIB作为其核心SSH库,因此您只能使用RSA密钥 - 目前不支持DSA密钥。

身份验证部分的选项如下

  • username [字符串] 连接时使用的SSH用户名。

  • password [字符串] 可选 使用的SSH密码(如果不使用基于密钥的身份验证)。

  • key [字符串] 可选 RSA密钥文件的路径和文件名。

  • passphrase [字符串] 可选 密钥的密码(如果使用基于密钥的身份验证)。

代码

代码部分定义了代码的存储方式和位置。

  • scm [git, svn] 您使用的源代码管理工具。

  • repo [字符串] 仓库URL/位置

  • branch [字符串] 可选 仓库分支(如果有的话)

  • username [字符串] 可选 仓库用户名

  • password [字符串] 可选 仓库密码

环境

本部分是您定义服务器组或环境的地方。每个环境都有一个独特的名称和服务器列表。您必须定义一个部署策略并提供一个服务器数组。服务器必须有一个host属性。

  • 策略 [字符串] 以逗号分隔的任务列表,按照指定顺序运行。
  • 服务器 [数组] 部署到的服务器数组。
  • 预部署 [字符串] 在部署发生前运行的逗号分隔的任务列表。这些任务将在本地机器上运行(即不在远程)。
  • 后部署 [字符串] 在部署发生后运行的逗号分隔的任务列表。这些任务将在本地机器上运行(即不在远程)。

例如

environments:
	production:
	    strategy: release, link, prune
		servers:
			- host: web-001.example.com
			- host: web-002.example.com
			- host: web-003.example.com

在每个环境中,您可以覆盖一些或全部全局选项。例如,如果您的 预发布 环境使用不同的 SSH 密钥进行认证,并使用您存储库的 预发布 分支,您可以在 预发布 环境中定义这些更改。

例如

environments:
	staging:
	    strategy: release, link, prune
		code:
			branch: staging
		authentication:
			username: deploy
			key: staging_id_rsa.pub
		servers:
			- host: staging-001.example.com
			- host: staging-002.example.com

服务器也可以覆盖环境策略。如果您有多个服务器并且需要运行迁移,这非常有用,因为它只需要运行一次。

例如

environments:
	staging:

		code:
			branch: staging
			
		authentication:
			username: deploy
			key: staging_id_rsa.pub
			
		strategy: release, link, prune
			
		servers:
			- host: staging-001.example.com
			  strategy: release, link, migrate, prune
			- host: staging-002.example.com

任务

任务是在远程服务器上发出的一个或多个 shell 命令。 minion 预先配置了四个任务。

  • release 在服务器上创建一个新的发布版本。
  • link 将新创建的发布版本符号链接到当前发布目录(默认为 current)。
  • prune 删除旧的发布目录。
  • update 对当前发布版本执行代码更新(git pullsvn up)。

扩展

minion 可以通过创建新的自定义命令和任务来扩展。

命令

创建新命令

minion make:command <名称>

例如

minion make:command CacheFlushCommand

自定义命令可以在您运行 minionCommands 目录中找到。

minion 命令由 Symfony Console 驱动。请参阅 [https://symfony.ac.cn/doc/current/components/console.html] 获取文档。

任务

创建新任务

minion make:task <名称>

例如

minion make:task Migrate

自定义任务可以在您运行 minionTasks 目录中找到。