Skip to content

feat: add smoker recipe for Perl CI smoke testing#58

Draft
troglodyne-bot wants to merge 1 commit into
Troglodyne-Internet-Widgets:masterfrom
troglodyne-bot:koan/smoker-recipe
Draft

feat: add smoker recipe for Perl CI smoke testing#58
troglodyne-bot wants to merge 1 commit into
Troglodyne-Internet-Widgets:masterfrom
troglodyne-bot:koan/smoker-recipe

Conversation

@troglodyne-bot

Copy link
Copy Markdown
Contributor

What

New Provisioner::Recipe::smoker that provisions a machine capable of
cloning and smoke-testing ExtUtils::MakeMaker-based Perl repos.

Why

Troglodyne-Internet-Widgets repos (tCMS, tPSGI, …) need a repeatable CI
smoke environment. This recipe gives you a provisioned host that clones
any list of repos and runs the standard perl Makefile.PL && make test
workflow, including all native deps the XS modules require.

How

  • lib/Provisioner/Recipe/smoker.pm — new recipe. Accepts a repos
    list (shortnames like Troglodyne-Internet-Widgets/tCMS or full HTTPS
    URLs), normalises them to full URLs, extracts clone-dir names, and defaults
    basedir to /opt/smoke. System deps cover the full XS build stack
    (SQLite, libmagic, libxml2, OpenSSL, seccomp/inotify, etc.).
  • templates/smoker.tt — makefile fragment that clones (or git pull --ff-only) each repo and then calls smoke_perl_modules.pl with the
    right cpanm (prefers the custom perl from the perl recipe, falls back
    to system cpanm).
  • scripts/smoke_perl_modules.pl — updated to run the proper MakeMaker
    workflow: cpanm --installdeps, perl Makefile.PL, make test.
    Previously used prove -vm t/ which bypassed the generated Makefile.

Example recipes.yaml snippet

smoker.example.test:
    smoker:
        repos:
            - Troglodyne-Internet-Widgets/tCMS
            - Troglodyne-Internet-Widgets/tPSGI
        basedir: /opt/smoke

Testing

  • perl -Ilib -c lib/Provisioner/Recipe/smoker.pm — syntax OK
  • perl -c scripts/smoke_perl_modules.pl — syntax OK
  • Template reviewed against tabinate behaviour and existing patterns
    (koan.tt, tpsgi.tt) for correct $$VAR escaping in make context.

🤖 Generated with Claude Code

New Provisioner::Recipe::smoker clones a list of GitHub repos (owner/repo
shortnames or full HTTPS URLs) and runs the standard ExtUtils::MakeMaker
test workflow — cpanm --installdeps, perl Makefile.PL, make test — via the
updated smoke_perl_modules.pl helper.

System deps cover the native libraries needed by tCMS and related
Troglodyne-Internet-Widgets XS modules (SQLite, libmagic, libxml2,
OpenSSL, inotify/seccomp stack).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

=head2 DESCRIPTION

Clones a list of GitHub repositories and runs the standard ExtUtils::MakeMaker

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is not useful compared to what Provisioner::Recipe::admincode provides.

What would be useful is something that looks at the provided CPAN users (such as me, TEODESIAN) and scrapes out the repo urls from the meta.yml in their dist tarballs, clones all of them and then smokes, with the option to report to cpantesters.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants