定制 elijahcruz/ecdeployer 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

elijahcruz/ecdeployer

Composer 安装命令:

composer create-project elijahcruz/ecdeployer

包简介

Deploy projects using a simple CLI

README 文档

README

Deploy your project onto multiple servers with ease.

GitHub issues Packagist Downloads Packagist PHP Version

Requirements

  • PHP 8.1 or higher
  • Composer
  • SSH access to your servers
  • OpenSSL PHP Extension
  • YAML PHP Extension
  • We're assuming you have an SSH key at ~/.ssh/id_rsa.

Installation

To install, all it takes is a simple composer require

composer global require elijahcruz/ecdeployer

Usage

Commands

Init

You can use the init command to create a new deploy.json file in your project.

ecdeploy init

Note that if a deploy.json file already exists, it will as if you want it to be overwritten.

If you add --laravel it will create a deploy.json file with the default laravel configuration.

If you add --gitignore it will add the deploy.json file to your .gitignore file.

If you add --format= you can then choose between a json, php or a yaml file.

Deploy

You can use the deployment command to deploy your project to your servers.

ecdeploy deploy

Using --all will deploy to all servers.

Using --tags will deploy to all servers with the specified tags.

If you don't select any options, it will prompt you to select which servers you want to deploy to. You can select multiple servers by separating them with a comma.

Encryption

You can encrypt and decrypt your deployment file using the encrypt and decrypt commands.

These will create a new file with the extension .enc in the same directory as the deployment file.

If you add --remove it will remove the original file if you are using encrypt, and it will remove the encrypted file if you're using decrypt.

Configuration

deploy.json

The deploy.json file is where you configure your servers and your project.

{
    "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

All servers are defined in the servers array. Each server has the following properties:

  • Name: The name of the server
  • Host: The IP address or domain of the server
  • User: The user to connect to the server with
  • Port: The port to connect to the server with
  • Tags: An array of tags to identify the server with.
  • Path: The path to the project on the server
  • Commands: An array of the command stages to run on the server

Commands

All commands are defined in stages. The stages are run in the order they are defined in the commands array. So in the example above, node will run before after, even though after is defined before node in the server's command array.

The stages names can be anything you want, and you can have as many stages as you want. The only exception is the node stage.

You also don't need to create the path on the server, it will be created automatically if it doesn't exist.

Contributing

Please see CONTRIBUTING for details.

License

The MIT License (MIT). Please see License File for more information.

elijahcruz/ecdeployer 适用场景与选型建议

elijahcruz/ecdeployer 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 13 次下载、GitHub Stars 达 0, 最近一次更新时间为 2023 年 06 月 01 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「framework」 「cli」 「console」 「laravel」 「Laravel Zero」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 elijahcruz/ecdeployer 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 elijahcruz/ecdeployer 我们能提供哪些服务?
定制开发 / 二次开发

基于 elijahcruz/ecdeployer 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 13
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 12
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2023-06-01