[dev] Updating the release workflow

Ralf Lang ralf.lang at ralf-lang.de
Sun Apr 27 19:26:27 UTC 2025


Hello Torben,

I have done some work related to the horde/components release tool while 
commuting.

- Released a new alpha of Cli_Modular with some missing code which was 
already in FRAMEWORK_6 since last year. horde/components now runs. It 
also runs on php 8.4 if you force ignoring platform dependencies.

- Implemented code to properly parse git commit logs and tagging info 
into PHP Objects

First I tried to make git log output json structured info but the 
examples out there all break if you have non-trivial messages containing 
foreign characters, unicode or ' and "
Then I looked into the existing php-git bridge but decided it was too niche.
Then I looked into PHP-FFI accessing libgit2.so but decided it's cool 
and clean to do this, but not my current priority.

- Improved our existing code to handle and manipulate semantic versions 
https://semver.org/
- Implemented ConventionalCommit 
https://www.conventionalcommits.org/en/v1.0.0/

Bottom line: We can simplify our release process and don't need the 
developer to touch composer.json, .horde.yml, changelog.yml or other 
artifacts.

If we write our commit messages the right way, a pull request pipeline 
can "know" if it is a bug fix, feature or breaking commit. On merge, we 
can react to this knowledge, automatically tag and release a version, 
generate the change log and other metadata from git commits etc. The 
main benefit is reducing burden on contributors. In my experience, more 
than two thirds of merge conflicts come from editing the metadata files. 
We can (almost entirely) delegate that to automation.

Tell me if you think this is over the top or otherwise bad.
Else I will finish this change to the tool and start upgrading some 
uncritical libraries' CI pipelines to this new scheme.

Regards


Ralf



More information about the dev mailing list