Releasing Perl CodeMap
Author and maintainer: Scott Muller scott@21h.io.
- Source: https://github.com/interrupt21h/perl-codemap
- Releases: https://github.com/interrupt21h/perl-codemap/releases
- Live sample: https://interrupt21h.github.io/perl-codemap/
- CPAN distribution: https://metacpan.org/dist/Perl-CodeMap
- CPAN module: https://metacpan.org/pod/Perl::CodeMap
- PAUSE author: MULLER, https://metacpan.org/author/MULLER
Versioning
Use semantic versions. The canonical software version is
$Perl::CodeMap::VERSION in lib/Perl/CodeMap.pm.
The distribution is Perl-CodeMap-X.Y.Z.tar.gz, the annotated tag is
vX.Y.Z, and the command is perl-codemap.
Bump the module version and update CHANGELOG.md for every new release.
Update the README when behavior, installation, or compatibility changes.
Never replace an existing GitHub release asset or move a published version tag.
Validate a candidate
cpanm PPI
perl Makefile.PL
make
make test
node --check lib/Perl/CodeMap/assets/app.js
node t/browser-smoke.js
make distcheck
make disttest
The release workflow repeats these checks on GitHub Actions, including the
PPI parser and documentation author tests, verifies the generated Unix
perl-codemap(1) man page, tests the dist tarball, verifies META.json
author metadata, and writes a SHA-256 checksum.
Every CLI option and public Perl method must have corresponding POD:
bin/perl-codemap for CLI users and lib/Perl/CodeMap.pm for MetaCPAN.
Update the POD and documentation tests before publishing a new CPAN archive.
Publish on GitHub
After committing version and documentation changes to main, open
Actions → Release → Run workflow, selecting main. The workflow:
- Reads and validates the module version.
- Refuses to overwrite an already published release.
- Installs PPI and runs all Perl, JavaScript, and MakeMaker tests.
- Builds and inspects the tarball, including author metadata and required assets.
- Creates an annotated
vX.Y.Ztag on the tested commit, or validates an existing tag points at that same commit. - Creates a published GitHub release with tarball, SHA-256 checksum, notes, and links to the live demo and maintainer.
The v0.3.1 maintenance release has already been published. The v0.3.2
documentation release runs when the release workflow upgrade is committed
to main. Subsequent releases should be initiated deliberately with
Run workflow after the version and changelog are updated. Release notes
are generated from the matching CHANGELOG.md entry.
A tag that points elsewhere causes a hard failure rather than being moved.
If a failure occurs, review the workflow logs. A partially successful attempt may leave a tag but no published release; rerunning is safe only when the tag still points at the same tested commit.
CPAN / PAUSE
Initial CPAN publication completed: Perl-CodeMap-0.3.1.tar.gz was
uploaded on 2026-11-05 by PAUSE account MULLER (Scott Muller). The namespace
indexer reported Status of this distro: OK and successfully indexed
Perl::CodeMap (normalized version 0.003001). The uploaded SHA-256
matched the GitHub v0.3.1 release:
6a161d6cb14f880641c857237f7144b6589627d28077d19b5a4b44e35d1d4e5b.
For each subsequent CPAN release:
- Publish a new, immutable versioned tarball through GitHub Actions.
- Download and verify its accompanying SHA-256 checksum.
- Sign in to PAUSE as
MULLERand upload that exact tarball. Do not rebuild or alter it after GitHub publication. - Check both the PAUSE upload acknowledgment and the namespace indexer report.
Confirm that
Perl::CodeMapis indexed at the expected version. - Verify the distribution at MetaCPAN and check CPAN Testers.
PAUSE author metadata identifies Scott Muller scott@21h.io. Keep PAUSE credentials out of the Git repository and public CI logs. If uploads are later automated, use a separately approved protected environment and publish only the already-tested archive.
Private source safety
The CLI can embed source contents in HTML and JSON. Do not include private reports, credentials, or proprietary code in this public distribution or on the public Pages demo.