App-GHGen
view release on metacpan or search on metacpan
lib/App/GHGen.pm view on Meta::CPAN
=item * Test coverage with atomic mode
=item * go.sum hash-based cache
=back
=head2 Ruby
Ruby testing with Bundler integration.
B<Features:>
=over 4
=item * Multiple Ruby versions (3.1, 3.2, 3.3)
=item * Automatic Bundler caching (built into setup-ruby)
=item * Gemfile.lock hash-based cache
=item * Rake integration
=back
=head2 Docker
Docker image building and publishing.
B<Features:>
=over 4
=item * Docker Buildx for multi-platform builds
=item * GitHub Container Registry (GHCR) support
=item * Docker Hub support
=item * Automatic tag extraction from git
=item * Layer caching with GitHub Actions cache
=item * Only pushes on non-PR events
=back
=head2 Static Sites
Static site deployment to GitHub Pages.
B<Features:>
=over 4
=item * GitHub Pages deployment
=item * Configurable build command
=item * Configurable build directory
=item * Artifact upload
=item * Proper Pages permissions
=item * Separate build and deploy jobs
=back
=head1 CONFIGURATION DETECTION
GHGen automatically detects configuration and adjusts workflows accordingly.
=head2 Minimum Version Detection
For Perl, minimum version is detected from:
=over 4
=item * cpanfile: C<requires 'perl', '5.036'>
=item * Makefile.PL: C<MIN_PERL_VERSION =E<gt> '5.036'>
=item * dist.ini: C<perl = 5.036>
=back
Only compatible Perl versions are tested (e.g., if min is 5.36, won't test 5.32 or 5.34).
=head2 Dependency Files
Caching is based on dependency files:
=over 4
=item * Perl: cpanfile, dist.ini, Makefile.PL, Build.PL
=item * Node: package-lock.json, yarn.lock, pnpm-lock.yaml
=item * Python: requirements.txt, Pipfile.lock
=item * Rust: Cargo.lock
=item * Go: go.sum
=item * Ruby: Gemfile.lock
=back
=head1 BEST PRACTICES
=head2 Workflow Generation
=over 4
=item * B<Use --auto for quick start> - Let GHGen detect your project
=item * B<Use --customize for fine control> - Customize versions, OS, and features
=item * B<Review before committing> - Always review generated workflows
=item * B<Test locally first> - Use tools like C<act> to test locally
( run in 1.317 second using v1.01-cache-2.11-cpan-b16cb0d3907 )