polifonic / symfony-robo
symfony应用的Robo任务和Robofile
Requires
Requires (Dev)
- fabpot/php-cs-fixer: *@stable
README
symfony应用的RoboFile。
这是我们用于构建自己的symfony应用的RoboFile,现在将其提供给社区。显然,它是针对我们的做法(例如,我们使用Propel),但它很容易扩展,希望至少可以为你自己的实现提供示例或灵感。
该包还提供了一个自定义的SymfonyTask
,它等同于在命令行上运行php app/console
。请注意,这并不完全等同于原始Robo包提供的SymfonyCommand
任务(例如,它不包括app内核,因此不识别env
选项)。
该包完全独立于polifonic应用。
安装
将包添加到您的应用的composer.json
文件中。根据您的需要,您可以在“require”部分或“require-dev”部分添加它。
"require-dev": {
....
"polifonic/symfony-robo": "*",
}
使用方法
在您的应用的根目录中创建一个新的RoboFile.php
文件。该类应扩展由包提供的Polifonic\Robo\RoboFile
类。您可以使用原始RoboFile
中定义的任务,覆盖它们或根据需要添加新任务。
<?php require_once __DIR__.'/vendor/autoload.php'; use Polifonic\Robo\RoboFile as Tasks; class RoboFile extends Tasks { }
然后,就像运行其他robo任务一样,在命令行上运行任务
vendor/bin/robo <task>
如果您已将robo安装到您的路径中,您可以输入以下内容
robo <task>
提供的任务
该包的RoboFile
类提供了以下任务
assets
该assets
任务将运行symfony的assets:install
命令,如果当前操作系统不是Windows,将使用--symlink
选项。
build
该build
任务将执行以下任务
composer install
- 清除开发和生产环境中的缓存
- 构建Propel模型
- 安装资产
build:all
该build
任务将执行以下任务
composer update
- 清除开发和生产环境中的缓存
- 构建Propel模型
- 运行Propel迁移
- 安装资产
git:sync-tags
git:sync-tags
将本地标签与远程标签同步,删除任何在远程找不到的本地标签。
os
显示以下之一的当前操作系统
- OSX
- Windows
- Linux
- 其他
在构建任务中运行assets:install
命令时使用:如果操作系统是Windows,则复制资产;否则,将它们链接。
phpunit
该phpunit
任务将通过以下命令运行phpunit测试
vendor/bin/phpunit -c app/
release
release
任务使用git-flow创建新的发布版本,按照以下步骤进行。它假定git-flow已为此项目安装和初始化。
然后使用capifony部署新版本。它假定capifony已安装并设置了应用。
- 计算递增的版本号(见下文)
- 创建一个名为递增版本号的新的git-flow发布
- 将递增的版本号写入文件
- 提交更改
- 完成git-flow发布;它将标记为递增的版本号
- 将develop和master分支推送到远程仓库
- 运行
cap deploy
secret
secret
生成并显示一个用于symfony应用框架配置的“秘密”字符串。
version:show
version:show
任务将显示当前版本号。这将从 Version::VERSION
类常量中读取(见下文)。
version:bump
version:bump
任务将增加当前版本号的构建部分。
版本号
处理版本号时,该软件包做出以下假设
- 在
/src
目录下存在一个名为Version
的类 - 该类定义了一个名为 VERSION 的常量
- Version::VERSION 的值是一个 semver 兼容的版本号
如果这不适合您的场景,则可以在您的 RoboFile
中重写以下方法
getVersion
:此方法负责返回版本号writeVersion($version)
:此方法负责将版本写入文件。
SymfonyTask
SymfonyTask 通过 php app/console
运行任何 symfony 命令,因此将支持命令行上可用的任何 symfony 命令。它假设该软件包在 symfony 应用程序的根目录中使用。