侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

使用Laravel Airdrop加速您的CI构建

Laravel  /  管理员 发布于 3年前   429

Laravel Airdrop是一个存储你构建的静态资产的工具。当您进行 CI 运行时,Airdrop 会检查您的静态资产是否已更改。

如果资产没有更改,Airdrop 会从存储中下载它们并放置在正确的位置 - 允许您跳过构建资产。

如果它们发生了变化,那么您可以像往常一样使用 Node 来构建您的静态资产。

这对于节省 CI 和部署时间非常有用。

https://laravel-news.com/airdrop
https://hammerstone.dev/airdrop/docs/main/installation

以下是如何使用Airdrop。


安装

安装Airdrop很简单:

composer require hammerstone/airdrop
 
# Add config/airdrop.php to your project
php artisan airdrop:install

配置Airdrop

在 Airdrop 中只需要配置一些东西 - 其中一些可以保留为默认值。


触发器

您可以告诉 Airdrop 何时决定重新构建静态资产。

触发器特定于环境( APP_ENV) - 每个环境都有自己的文件集。这称为配置触发器。

另一个触发器是FileTrigger. 如果文件已更改,这将跟踪配置的文件并重建资产。


将FileTrigger检查:

resources(CSS、JS 等)中的文件

如果 Webpack/Vite 配置文件发生变化

我还添加了package-lock.jsonNPM 生成的文件。

<?php
 
use Hammerstone\Airdrop\Drivers\FilesystemDriver;
use Hammerstone\Airdrop\Drivers\GithubActionsDriver;
use Hammerstone\Airdrop\Triggers\ConfigTrigger;
use Hammerstone\Airdrop\Triggers\FileTrigger;
 
return [
    'driver' => env('AIRDROP_DRIVER', 'default'),
    'drivers' => [
        'default' => [...],
        'github' => [...],
    ],
    'triggers' => [
        ConfigTrigger::class => [
            'env' => env('APP_ENV')
    ],
        FileTrigger::class => [
            'include' => [
                resource_path(), // default
                base_path('webpack.mix.js'), // mix default
                base_path('vite.config.js'), // vite default
                base_path('package-lock.json'), // my addition here
            ],
        ],
    ],
    'outputs' => [...],
];

驱动程序

您可以决定 Airdrop 将静态资产存储在哪里。通常你只使用FilesystemDriver这里,并使用 Laravel 的Storage机制来告诉 Airdrop 将文件放在哪里。

disk与使用的 Laravel “磁盘”存储相关的设置。建议使用一些远程存储,例如s3。

GitHub Actions 驱动程序可让您将文件保存到 GH Actions 缓存,这非常方便!

return [
    // The driver you wish to use to stash and restore your files.
    'driver' => env('AIRDROP_DRIVER', 'default'),
 
    'drivers' => [
        'default' => [
            // The class responsible for implementing the stash and restore
            // logic. Must extend BaseDriver.
            'class' => FilesystemDriver::class,
 
            // The disk on which to store the built files.
            'disk' => env('AIRDROP_REMOTE_DISK', 's3'),
 
            // The folder (if any) where you'd like your stashed assets to reside.
            'remote_directory' => env('AIRDROP_REMOTE_DIR', 'airdrop'),
 
            // A writeable directory on the machine that builds the assets.
            // Used to build up the ZIP file before stashing it.
            'local_tmp_directory' => env('AIRDROP_LOCAL_TMP_DIR', storage_path('framework')),
 
            // The skip file is an empty file that will be created to
            // indicate that asset building can be skipped.
            'skip_file' => env('AIRDROP_SKIP_FILE', base_path('.airdrop_skip')),
        ],
        ],
        // ...
];

输出

输出是 Airdrop 将为您存储和检索的文件。您通过触发器“观看”的文件不一定是您为您保存/存储的相同文件!

Airdrop 的默认设置非常好,当然您可以根据需要配置这些。

return [
    // ...
    'outputs' => [
        /*
         * Files or folders that should be included.
         */
        'include' => [
            // Mix/Webpack
            public_path('mix-manifest.json'),
            public_path('css'),
            public_path('js'),
 
            // Vite
            public_path('build/manifest.json'),
            public_path('build/assets'),
        ],
 
                // ...
    ],
];

注意:

在使用 Airdrop 时,您可能不想将静态资产提交到您的存储库。

为避免这种情况并完成 Airdrop 配置,请将以下内容添加到您的.gitignore文件中:

/.airdrop_skip
 
# Mix/Webpack
public/css/*
public/js/**
 
# Vite
public/build/*


整合Airdrop

当您在 CI 或部署脚本中构建应用程序 Airdrop 时(这对于 Forge 快速部署非常有用!),

您可以运行以下命令:

# Download files, only if needed
php artisan airdrop:download
 
# Airdrop creates .airdrop_skip if
# it downloaded files
if [ ! -f ".airdrop_skip" ]; then
    npm ci --no-audit
    npm run dev
fi
 
# Upload the files if needed
php artisan airdrop:upload

  • 上一条:
    go语言中日期时间戳比较功能示例代码
    下一条:
    go语言中查找最长不含有重复字符的字符串算法示例代码
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel 11.15版本发布 - Eloquent Builder中添加的泛型(0个评论)
    • Laravel 11.14版本发布 - 新的字符串助手和ServeCommand改进(0个评论)
    • Laravel 11.12版本发布 - Artisan的`make`命令自动剪切`.php `扩展(0个评论)
    • Laravel的轻量型购物车扩展包:binafy/laravel-cart(0个评论)
    • Laravel 11.11版本发布 - 查看模型中的第三方关系:show(0个评论)
    • 近期文章
    • 智能合约Solidity学习CryptoZombie第三课:组建僵尸军队(高级Solidity理论)(0个评论)
    • 智能合约Solidity学习CryptoZombie第二课:让你的僵尸猎食(0个评论)
    • 智能合约Solidity学习CryptoZombie第一课:生成一只你的僵尸(0个评论)
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-07
    • 2017-08
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2020-10
    • 2020-11
    • 2021-01
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-03
    • 2022-04
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客