kg-bot/laravel-deploy

Laravel 包,用于自动从 GIT 版本控制系统部署代码

v3.0 2018-06-23 15:51 UTC

This package is auto-updated.

Last update: 2024-09-12 04:15:52 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License Monthly Downloads Daily Downloads

Laravel Deploy

Laravel deploy 包,用于自动从支持 webhooks 的 GIT VCS 部署项目。

安装

只需使用 composer 引入此包。

composer require kg-bot/laravel-deploy

在使用此包之前,您必须导出运行迁移并为每个 VCS 网站或存储库创建客户端

php artisan vendor:publish --provider=KgBot\LaravelDeploy\LaravelDeployServiceProvider --tag=migrations
php artisan migrate

您可以使用 artisan 命令创建新的客户端(Web 控制面板将在下一个版本中推出)

php artisan laravel-deploy:new-client {name} {token} {script_source} {source}

命令参数说明

  • name - 客户端名称(例如,GitHub)
  • token - 在验证请求时希望检查的令牌,它将被加密
  • script_source - 部署请求上要执行的 .sh 脚本名称(此脚本需要放置在项目根目录下)
  • source - 可以是任何内容,可能在应用程序的后续版本中使用,最好将其设置为预期请求的域名或存储库 URL

由于部署是从 HTTP 请求发起的,执行 .sh 脚本的用户将是 www-data,我发现这对非 Linux 或服务器导向的开发者来说调整用户权限和服务器权限非常繁琐。

这可以通过一些 .env 指令来更改,您应该创建一个默认服务器用户的 .sh 脚本,并为此用户设置 rwx 权限。

接下来,您需要将 LARAVEL_DEPLOY_USERNAME 添加到 .env 文件中,并将其设置为您的默认用户(与您的 SSH/CLI 相同的用户)。

您还需要设置 LARAVEL_DEPLOY_PASSWORD .env 指令以匹配您的默认 SSH/CLI 登录密码。

示例

如果您使用 ssh forge@123.213.65.1 登录到您的服务器,并使用 temp123 作为您的密码,那么您将在 .env 文件中设置 LARAVEL_DEPLOY_USERNAME=forgeLARAVEL_DEPLOY_PASSWORD=temp123

Laravel Deploy 默认启用,如果您想禁用它,请将 LARAVEL_DEPLOY_RUN=false 添加到您的 .env 文件中。

Laravel 5.5+

Laravel 5.5 使用包自动发现,因此不需要您手动添加 ServiceProvider。

如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组中

KgBot\LaravelDeploy\LaravelDeployServiceProvider::class

设置和配置

您可以通过运行以下命令来导出配置

php artisan vendor:publish --provide=KgBot\LaravelDeploy\LaravelDeployServiceProvider --tag=config

我们已经解释了此包的一些配置指令,但不仅如此。

<?php
/**
 * Created by PhpStorm.
 * User: kgbot
 * Date: 6/4/18
 * Time: 1:37 AM
 */

return [

    'routes'     => [

        /**
         * Route prefix, example of route http://localhost/laravel-deploy/deploy?_token=#################
         *
         */
        'prefix'     => env( 'LARAVEL_DEPLOY_PREFIX', 'laravel-deploy' ),  

        /**
         * Middleware used on webhook routes, default middleware is KgBot\LaravelDeploy\Http\Middleware\IsTokenValid
         *
         * You can add more middleware with .env directive, example LARAVEL_DEPLOY_MIDDLEWARE=webhook,auth:api, etc.
         *
         * Don't use space in .env directive after ,
         */
        'middleware' => ( env( 'LARAVEL_DEPLOY_MIDDLEWARE' ) ) ? explode( ',', env( 'LARAVEL_DEPLOY_MIDDLEWARE' ) )
            : [],
    ],
    'events'     => [

        /**
         * This package emits some events before and after it run's deployment script
         *
         * Here you can change channel on which events will be broadcast
         */
        'channel' => env( 'LARAVEL_DEPLOY_EVENTS_CHANNEL', '' ),
    ],  

    /**
     * This packages is doing all of it's work in a Job and here you change queue on which it will execute jobs
     */
    'queue'      => env( 'LARAVEL_DEPLOY_QUEUE', 'default' ),  

    /**
     * With this directive you can enable/disable this package
     */
    'run_deploy' => env( 'LARAVEL_DEPLOY_RUN', true ),  

    /**
     * Detailed description is provided inside a README.md file
     *
     * Here you set your default server user and password which will be used to run deploy script
     */
    'user'       => [

        'username' => env( 'LARAVEL_DEPLOY_USERNAME', 'www-data' ),
        'password' => env( 'LARAVEL_DEPLOY_PASSWORD', '' ),
    ],
];

路由

此包公开了一些路由(目前只有一个,但在下一个版本中将有更多)

如何在 GIT VCS 网站中设置 webhooks

GitHub

假设您的存储库位于 [https://github.com/kg-bot/laravel-deploy],您会进入 [https://github.com/kg-bot/laravel-deploy/settings/hooks/new]。

在那里您将得到一个类似这样的屏幕 GitHub Webhook Create

在负载URL中,您需要输入 webhook URL,该URL必须是[http://example.com/laravel-deploy/deploy+_token=#####################](可以是http或https,取决于您的服务器SSL设置),其中example.com应该是您的域名,laravel-deploy应该是您在配置中设置的名称前缀,同时令牌部分需要与您创建新客户端时获得的哈希值匹配。

其他部分现在并不重要,在后续版本中这可能会需要更改,因为每个网站(驱动器)都会有不同的代码。

BitBucket

一切与GitHub相同,除了链接和字段名称。

创建新webhook的链接应该是[https://bitbucket.org/:USERNAME:/:REPO:/admin/addon/admin/bitbucket-webhooks/bb-webhooks-repo-admin]

它看起来像这样 BitBucket Webhook Create,标题可以是任何内容,URL应该与GitHub设置中的相同,您必须检查“启用”并且目前可以检查“跳过证书验证”(直到下一个版本)。

前端需求和安装

此包的前端部分作为Vue.js SPA运行,并且它严重依赖于npm包。

npm install bootstrap-vue vue-resource vue-router vue-toasted vue-awesome lang.js lodash change-case datejs

然后您必须从该包导出资产,这将在您的资源/assets/vendor/laravel-deploy目录中添加一些JavaScript和SASS文件。

php artisan vendor:publish --provider=KgBot\\LaravelDeploy\\LaravelDeployServiceProvider --tag=assets

之后,您必须修改webpack.mix.js并在文件末尾添加以下内容

/**
 * Laravel deploy assets
 */
mix.js( 'resources/assets/vendor/laravel-deploy/js/laravel-deploy.js', 'public/assets/js' )
   .sass( 'resources/assets/vendor/laravel-deploy/sass/laravel-deploy.scss', 'public/assets/css' );

现在您可以直接访问 http://localhost/laravel-deploy/dashboard 或更改路由前缀后的任何其他URL,只需在末尾添加 /dashboard

建议、评论、反馈

所有这些都非常受欢迎并受到赞赏。

待办事项

  • Web面板
  • 每个网站、系统的驱动器
  • 成功、失败的通知(slack、短信、邮件等)
  • 改进.sh脚本的执行(不直接在命令中使用用户名和密码,因为它们可以在bash_history中稍后看到)
  • 改进客户端验证和识别

您可以想到的其他任何事情,请留下评论,给我发邮件,创建问题,或者您喜欢的方式。

许可证

本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件。