demroos / versioning-bundle
Symfony3|4应用程序版本管理,简单的控制台命令,用于管理应用程序的版本(使用例如git tag的提供者),遵循Semantic Versioning 2.0.0建议
4.0.0
2021-02-12 12:23 UTC
Requires
- php: >=8.0
- nikolaposa/version: ^2.2 || ^3
- symfony/console: ^3.4 || ^4 || ^5
- symfony/framework-bundle: ^3.4 || ^4 || ^5
- symfony/process: ^3.4 || ^4 || ^5
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^6.5 || ^7 || ^8 || ^9
- symfony/phpunit-bridge: ^4.3
README
简单方式对您的Symfony Flex应用程序进行版本管理。
这是什么
- 自动跟踪您的应用程序版本,使用Git标签或Capistrano REVISION文件
- 添加全局Twig变量,便于访问
- 易于扩展,支持新的版本提供者和不同SCM或需求格式化器
- 使用https://github.com/nikolaposa/version库遵循Semantic Versioning 2.0.0建议
- 支持手动版本管理
目的
在您的Symfony应用程序中有一个环境变量,用于显示应用程序的当前版本,满足各种需求
- 在前端显示
- 在后台显示
- 您能想到的任何事情
已实现的提供者
- VersionProvider(从VERSION文件中读取版本)
- GitRepositoryProvider(使用git标签描述提供者,自动通过查看git标签更新版本)
- RevisionProvider(从REVISION文件中读取版本)
- InitialVersionProvider(仅返回默认初始版本0.1.0)
安装
Symfony Flex自动化安装过程,只需在您的应用程序中要求此包即可!
composer require shivas/versioning-bundle
版本将在您的应用程序中自动可用。
# Twig template
{{ shivas_app_version }}
# Or get the version from the service
public function indexAction(VersionManager $manager)
{
$version = $manager->getVersion();
}
控制台命令
有三个可用的控制台命令。您只需在手动管理版本号时运行app:version:bump命令。
# Display the application version status
bin/console app:version:status
# Display all available version providers
bin/console app:version:list-providers
# Manually bump the application version
bin/console app:version:bump
版本提供者
提供者用于获取应用程序的版本字符串。所有版本都应遵循SemVer 2.0.0表示法,除了字母"v"或"V"可以前缀,例如v1.0.0。推荐使用GitRepositoryProvider,它仅在您的存储库中至少有一个标签时才有效。请确保所有标签都是有效的版本号。
添加自己的提供者
很简单,编写一个实现ProviderInterface的类
namespace App\Provider; use Shivas\VersioningBundle\Provider\ProviderInterface; class MyCustomProvider implements ProviderInterface { }
使用您的服务文件将提供者添加到容器中
App\Provider\MyCustomProvider: tags: - { name: shivas_versioning.provider, alias: my_provider, priority: 0 }
<service id="App\Provider\MyCustomProvider"> <tag name="shivas_versioning.provider" alias="my_provider" priority="0" /> </service>
请查看优先级属性,它应在0到99之间,以保持提供者的正确顺序。
确保您的提供者正确加载并受支持
bin/console app:version:list-providers
Registered version providers
============= ========================================================= ========== ===========
Alias Class Priority Supported
============= ========================================================= ========== ===========
version Shivas\VersioningBundle\Provider\VersionProvider 100 No
my_provider App\Provider\MyCustomProvider 0 Yes
git Shivas\VersioningBundle\Provider\GitRepositoryProvider -25 Yes
revision Shivas\VersioningBundle\Provider\RevisionProvider -50 No
init Shivas\VersioningBundle\Provider\InitialVersionProvider -75 Yes
============= ========================================================= ========== ===========
版本格式化器
版本格式化器用于修改版本字符串,使其更易于阅读。默认的GitDescribeFormatter按以下方式工作
- 如果提交SHA与最后一个标签SHA匹配,则将标签转换为版本
- 如果提交SHA与最后一个标签SHA不匹配,则发生以下情况
- 将标签解析为版本
- 添加预发布部分,以下数据:"dev.abcdefa"
- 其中预发布部分"dev"表示版本未标记,并且是"dev"稳定版本,最后部分是提交SHA
如果您想禁用默认格式化器,请在您的配置中重新配置VersionManager。
# app/config/services.yaml Shivas\VersioningBundle\Service\VersionManager: arguments: $formatter: ~
创建自己的版本格式化器
要自定义版本格式,请编写一个实现FormatterInterface的类
namespace App\Formatter; use Shivas\VersioningBundle\Formatter\FormatterInterface; class MyCustomFormatter implements FormatterInterface { }
然后使用别名将FormatterInterface与您的自定义类型相关联
# app/config/services.yaml Shivas\VersioningBundle\Formatter\FormatterInterface: '@App\Formatter\MyCustomFormatter'
Capistrano v3任务用于创建REVISION文件
将以下内容添加到您的配方中
namespace :deploy do task :add_revision_file do on roles(:app) do within repo_path do execute(:git, :'describe', :"--tags --long", :"#{fetch(:branch)}", ">#{release_path}/REVISION") end end end end # We get git describe --tags just after deploy:updating after 'deploy:updating', 'deploy:add_revision_file'
祝您项目版本管理顺利。
欢迎为不同的源代码管理工具等做出贡献,只需提交一个拉取请求即可。