GDPR-IAB-TCFv2
view release on metacpan or search on metacpan
CONTRIBUTING view on Meta::CPAN
The recommended path uses the C<git-flow> CLI (C<git-flow-avh>) to drive the
ceremony. Plain C<git> works too â both variants are shown side-by-side at
each step so you can pick one.
The release pipeline itself is fully automated by
F<.github/workflows/release.yml>: pushing any C<v*> tag triggers a build, a
PAUSE upload, and a GitHub Release with the tarball attached. You only need
to drive the local prep and the merge/tag.
=head2 Prerequisites (one-time)
=over 4
=item 1. Install release tooling
# POD â Markdown converter (regenerates README.md)
cpanm Pod::Markdown
# or: apt install libpod-markdown-perl
# Conventional-Commits changelog generator
cargo install git-cliff
# or: brew install git-cliff
# git-flow CLI (optional but recommended)
apt install git-flow
# or: brew install git-flow-avh
=item 2. Initialize git-flow once (skip if you prefer plain git)
git flow init -d
When prompted, accept the project's existing layout:
=over 4
=item *
production branch = C<main>
=item *
next-release branch = C<devel>
=item *
feature prefix = C<feat/>
=item *
release prefix = C<release/>
=item *
hotfix prefix = C<hotfix/>
=back
The C<-d> flag uses defaults where they match; you'll only be prompted for
the values that differ.
=item 3. Configure CPAN credentials (repo admin, one-time)
In GitHub, go to B<Settings â Secrets and variables â Actions> and add:
=over 4
=item *
C<PAUSE_USER> â your PAUSE username
=item *
C<PAUSE_PASSWORD> â your PAUSE password
=back
If these secrets are missing, the GitHub Release step still runs but the
PAUSE upload step is skipped.
=back
=head2 Versioning convention
C<$VERSION> uses the 3-digit C<0.XYZ> form. Bump the last two digits
in steps of 10 for normal releases (e.g. C<0.350 â 0.360>) and by 1 for
pure bug-fix follow-ups (e.g. C<0.350 â 0.351>). The git tag prepends
C<v> (e.g. C<v0.360>); the C<$VERSION> string in the F<.pm> does not.
=head2 Bumping the version
Use the F<tools/bump-version> helper rather than hand-editing the
fifteen C<our $VERSION = "..."> declarations under F<lib/>. Pass the
new version as the only argument:
tools/bump-version 0.402
The script:
=over 4
=item *
Reads the current dist version from F<lib/GDPR/IAB/TCFv2.pm> and
refuses to run if the new version is not strictly greater (the same
sanity check PAUSE itself enforces against version regressions).
=item *
Rewrites C<our $VERSION = "..."> in every F<lib/**/*.pm> file in
place.
=item *
Refuses to run if any F<.pm> under F<lib/> is missing the
C<$VERSION> declaration entirely. That signals either a new module
that was added without seeding C<$VERSION>, or a drift caused by
hand-editing. Investigate and reconcile before bumping.
=back
The script does B<not> touch F<CHANGELOG.md>, run C<git cliff>,
( run in 1.070 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )