chippyash / semantic-version-updater
用于在Jenkins构建期间更新版本标签的工具
Requires
- php: >=8.0
- symfony/console: 5.2.8
Requires (Dev)
- phpunit/phpunit: ^9.5
- symfony/process: ^5.2
README
构建链工具,用于更新PHP包的语义版本
PHP版本支持
随着对PHP < V8的库支持逐步退出,我已决定移除对 < V8 的支持。如果您仍然需要 < V8 支持,请使用 < 1 的标记版本,并自行构建软件包。V1+ 仅支持PHP8。
质量保证
上述徽章代表当前的开发分支。一般来说,除非测试、覆盖率和可用性令人满意,否则我不会推送到GitHub。在某些短时间内可能并非如此;在休假期间,需要为其他下游项目编写代码等。如果您需要稳定代码,请使用标记版本。
请参阅测试合同
如何使用
初始化
对于新包
在composer.json文件的dev-requires部分添加"chippyash/semantic-version-updater":"*"
运行composer update
运行vendor/bin/vupdate init
以在项目根目录中创建一个新的VERSION文件
运行
git commit -am"add vupdate" git tag 0.0.0 git push origin master --tags
手动更新版本和git标签
在初始开发期间,您可能希望在包的不同位置进行标记。您可以通过以下方式保持git标签版本和VERSION文件中的版本同步
bin/vupdate && cat VERSION | xargs git tag
别忘了将您的标签推送到远程仓库。
一旦您完成初始开发,并认为您可以发布,您可以在其第一个“真实”发布版本中对包进行标记。您可以选择运行bin/vupdate -pbcbreak
来更新版本号的主(M.n.n)部分,或者运行bin/vupdate -o 1.0.0
来强制版本。一行代码可以是
bin/vupdate -pbcbreak && cat VERSION | xargs git tag && git commit -am"First release" && git push origin master --tags
使用bin/vupdate -h
查看帮助屏幕。
使用bin/vupdate --version
查看命令版本号。
将其集成到您的构建链中
该工具的真实目的是将其用于构建链中,更新标签,推送到git,然后更新Satis/Composer(或其他仓库)以通知它有新版本可用。
下载此仓库的zip文件并解压缩。将bin/vupdate文件移动/复制到您的PATH上的某个位置,例如/usr/local/bin/vupdate。如果您只想在本地机器上使可执行phar文件全局可用,也可以这样做。
这是一个我们用于构建链中更新版本的jenkins作业,它依赖于分支名称前缀
VERSIONER=/usr/local/bin/vupdate GIT=git cd "${workingDir}"; ${GIT} checkout ${gitBranch}; lastCommit=$(git log --branches | grep 'Merge pull request.* to master' | head -1) if [[ $lastCommit == *"feature/"* ]] || [[ $lastCommit == *"release/"* ]] then ${VERSIONER} -p feature; verType="Feature"; else ${VERSIONER}; verType="Patch"; fi; ${GIT} commit -am"CD $verType Version update: $lastCommit"; cat VERSION | xargs ${GIT} tag; ${GIT} push origin ${gitBranch} --tags;
$workingDir和$gitBranch参数从主构建作业发送到作业。$gitBranch默认为'master';
开发
按常规克隆仓库。
创建一个功能分支
运行composer update
以拉取外部库。
按常规提交您的更改并将其推送到仓库并创建一个pull请求。
make文件
运行make
将重新构建bin/vupdate phar文件并将更改推送到仓库。因此,只有当您对代码仓库具有写入权限时,它才有任何用途。
您可以使用make build
仅构建bin/vupdate
注意
如果在使用make构建工具时遇到 creating archive "/var/lib/jenkins/jobs/ci-version-updater-builder/workspace/bin/vupdate.phar" disabled by the php.ini setting phar.readonly
或类似的错误,请编辑您的php cli ini文件,并将 phar.readonly = Off
设置为。
致谢
我多年前编写了vupdate.php脚本。当时它依赖于来自 Kevin Herrara 的 'herrera-io/version' 包。他已经放弃了这个包,所以我将其原始代码包含在本包的源代码中。它仍然可以正常工作。您可以在 'src' 目录中找到它,以及他的原始测试在 'test' 目录中。测试合同可以在 docs/Test-Contract.md
中找到。他对代码有宽松的许可协议,因此如果您需要在其他应用程序中使用原始代码,请随意使用这个包来访问它。
Makefile管理的构建例程依赖于 Box。bin目录中有一个box phar发行版,它将被Makefile使用。