kg-bot / laravel-deploy
Laravel 包,用于自动从 GIT 版本控制系统部署代码
Requires
- php: >=7.1
- ddtraceweb/monolog-parser: ^1.2
- kg-bot/laravel-localization-to-vue: 1.*
- laravel/framework: 5.*
- predis/predis: ^1.1
This package is auto-updated.
Last update: 2024-09-12 04:15:52 UTC
README
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=forge
和 LARAVEL_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]。
在负载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]
它看起来像这样 ,标题可以是任何内容,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文件。