lbausch / build-metadata-laravel
v0.3.0
2022-11-11 18:16 UTC
Requires
- php: ^8.1
- illuminate/cache: >9
- illuminate/contracts: >9
- illuminate/support: >9
- nesbot/carbon: ^2.62
Requires (Dev)
- bamarni/composer-bin-plugin: ^1.8
- orchestra/testbench: ^7.11
- phpunit/phpunit: ^9.5
Suggests
- deployer/deployer: Use the provided recipe with Deployer
This package is auto-updated.
Last update: 2024-09-18 09:37:19 UTC
README
保存任意构建元数据(提交SHA,构建日期等),与您的应用程序一起部署,并在需要时在运行时检索它们。
要求
- PHP 8.1+
- Laravel 9+
安装
composer require lbausch/build-metadata-laravel
使用
配置
如果默认配置不符合您的需求,您可以发布配置文件
php artisan vendor:publish --provider=Lbausch\\BuildMetadataLaravel\\ServiceProvider
保存构建元数据
在部署应用程序时,例如利用CI/CD流水线,以下命令将构建元数据写入配置文件
php artisan buildmetadata:save BUILD_REF=$CI_COMMIT_SHA BUILD_DATE=$(date +%s)
构建元数据永久缓存,因此需要在部署期间清除应用程序缓存,或者可以使用以下命令
php artisan buildmetadata:clear
Deployer配方
此包附带一个Deployer配方,它提供处理构建元数据的任务。
<?php // deploy.php namespace Deployer; require 'vendor/lbausch/build-metadata-laravel/contrib/deployer/buildmetadata.php'; // ... after('deploy:vendors', 'buildmetadata:deploy'); after('artisan:config:cache', 'buildmetadata:clear'); // ...
在运行时使用构建元数据
以下示例在视图组合器中检索构建元数据。
<?php // app/Providers/ViewServiceProvider.php namespace App\Providers; use Illuminate\Support\Facades\View; use Illuminate\Support\ServiceProvider; use Lbausch\BuildMetadataLaravel\BuildMetadataManager; class ViewServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { // } /** * Bootstrap any application services. * * @return void */ public function boot(BuildMetadataManager $manager) { $metadata = $manager->getMetadata(); View::composer('*', function ($view) use ($metadata) { $view->with('BUILD_REF', $metadata->get('BUILD_REF', 'n/a')); }); } }
回调
beforeCaching
此回调在元数据永久缓存之前执行,可以用来更改一些数据。
<?php // app/Providers/AppServiceProvider.php namespace App\Providers; use Carbon\Carbon; use Illuminate\Support\ServiceProvider; use Lbausch\BuildMetadataLaravel\BuildMetadataManager; use Lbausch\BuildMetadataLaravel\Metadata; class AppServiceProvider extends ServiceProvider { /** * Register any application services. * * @return void */ public function register() { BuildMetadataManager::beforeCaching(function (Metadata $metadata): Metadata { // Convert build date to a Carbon instance $build_date = $metadata->get('BUILD_DATE'); $metadata->set('BUILD_DATE', Carbon::createFromTimestampUTC($build_date)); return $metadata; }); } /** * Bootstrap any application services. * * @return void */ public function boot() { // } }
事件
CachingBuildMetadata
此事件在构建元数据即将被缓存之前发送。
<?php // app/Providers/EventServiceProvider.php namespace App\Providers; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { /** * Register any events for your application. * * @return void */ public function boot() { Event::listen(function(\Lbausch\BuildMetadataLaravel\Events\CachingBuildMetadata $event) { // }); } }
CachedBuildMetadata
此事件在构建元数据被缓存后发送。缓存的构建元数据在事件实例上可用。
<?php // app/Providers/EventServiceProvider.php namespace App\Providers; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Event; class EventServiceProvider extends ServiceProvider { /** * Register any events for your application. * * @return void */ public function boot() { Event::listen(function(\Lbausch\BuildMetadataLaravel\Events\CachedBuildMetadata $event) { $build_metadata = $event->build_metadata; }); } }