elijahcruz/ecdeployer

使用简单的 CLI 部署项目

安装: 10

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

类型:项目

1.2.0 2023-06-07 16:30 UTC

This package is auto-updated.

Last update: 2024-09-07 19:42:07 UTC


README

轻松将您的项目部署到多个服务器。

GitHub issues Packagist Downloads Packagist PHP Version

要求

  • PHP 8.1 或更高版本
  • Composer
  • 对您的服务器的 SSH 访问权限
  • OpenSSL PHP 扩展
  • YAML PHP 扩展
  • 我们假设您在 ~/.ssh/id_rsa 有一个 SSH 密钥。

安装

要安装,只需执行简单的 composer require 命令。

composer global require elijahcruz/ecdeployer

使用方法

命令

初始化

您可以使用 init 命令在项目中创建一个新的 deploy.json 文件。

ecdeploy init

请注意,如果已经存在 deploy.json 文件,它将像您想要覆盖它一样。

如果您添加 --laravel,它将创建一个具有默认 Laravel 配置的 deploy.json 文件。

如果您添加 --gitignore,它将把 deploy.json 文件添加到您的 .gitignore 文件中。

如果您添加 --format=,您可以选择 json、php 或 yaml 文件。

部署

您可以使用部署命令将项目部署到您的服务器。

ecdeploy deploy

使用 --all 将部署到所有服务器。

使用 --tags 将部署到具有指定标签的所有服务器。

如果您不选择任何选项,它将提示您选择要部署到的服务器。您可以通过逗号分隔选择多个服务器。

加密

您可以使用 encrypt 和 decrypt 命令对部署文件进行加密和解密。

这些将在部署文件的同一目录中创建一个扩展名为 .enc 的新文件。

如果您添加 --remove,则在使用 encrypt 时将删除原始文件,而在使用 decrypt 时将删除加密文件。

配置

deploy.json

deploy.json 文件是您配置服务器和项目的位置。

{
    "name": "myproject",
    "repo": "git@github.com:myproject/myproject.git",
    "servers": [
        {
            "name": "prod-server",
            "host": "192.168.1.1",
            "user": "root",
            "port": 22,
            "tags": [
                "prod"
            ],
            "path": "~/myproject",
            "commands": [
                "before",
                "during",
                "after",
                "node"
            ]
        }
    ],
    "commands": {
        "before": [
            "php artisan down",
            "php artisan optimize:clear",
            "git pull origin master",
            "composer install --no-interaction --prefer-dist --no-dev --optimize-autoloader"
        ],
        "queue-pause": [
            "php artisan horizon:pause"
        ],
        "during": [
            "php artisan migrate --force",
            "php artisan config:cache",
            "php artisan route:cache",
            "php artisan view:cache"
        ],
        "node": [
            "npm install",
            "npm run build"
        ],
        "after": [
            "php artisan up"
        ],
        "queue-resume": [
            "php artisan horizon:continue"
        ]
    }
}

服务器

所有服务器都定义在 servers 数组中。每个服务器都有以下属性

  • 名称:服务器的名称
  • 主机:服务器的 IP 地址或域名
  • 用户:连接到服务器的用户
  • 端口:连接到服务器的端口
  • 标签:用于识别服务器的标签数组。
  • 路径:服务器上项目的路径
  • 命令:要在服务器上运行的命令阶段数组

命令

所有命令都在阶段中定义。阶段按在命令数组中定义的顺序运行。所以在上面的示例中,node 将在 after 之前运行,即使 after 在服务器的命令数组中定义在 node 之前。

阶段名称可以是您想要的任何名称,并且您可以拥有任意数量的阶段。唯一的例外是 node 阶段。

您也不需要创建服务器上的路径,如果它不存在,它将自动创建。

贡献

有关详细信息,请参阅 CONTRIBUTING

许可证

MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件