Dist-Zilla-PluginBundle-Author-GETTY
view release on metacpan or search on metacpan
# Claude Code â commit: skills/, agents/, rules/, hooks/, settings.json, skilletor config
# Ignore: local overrides, credentials, session data
# Tracked: shared config & extensibility
!/.claude/
.claude/*
!.claude/settings.json
!.claude/settings.local.json
!.claude/agents/
!.claude/agents/**
!.claude/skills/
!.claude/skills/**
!.claude/hooks/
!.claude/hooks/**
!.claude/skilletor.json
!.claude/.gitignore
# Local overrides (machine-specific)
.claude/*.local.*
.claude/local/
# Credentials & session state (never track)
.claude/.credentials.json
.claude/statsig/
.claude/todos/
.claude/projects/
Dist-Zilla-PluginBundle-Author-GETTY-*
.build
AGENTS.md
# karr materialized task view -- never commit
tasks/
simpici-provider/README.md view on Meta::CPAN
job is named after the image expression, `ghcr.io+getty+dzil-perl+5.40` â
unique per version.
Each generated job copies the read-only checkout into the writable output dir
(`dzil test` writes a build tree) and does a real `dzil test`, after
`dzil authordeps --missing` and `dzil listdeps --author --missing`. Since the
image already carries Dist::Zilla, the bundle and its author-test deps, those
install only what your dist adds on top â or a bundle released after the image
was built.
The provider receives **no registry credentials and no Docker socket** â it only
plans jobs.
## The `dzil-perl` images
`ghcr.io/getty/dzil-perl:<ver>` is the official `perl:<ver>` image (Debian, with
git and cpanm) plus Dist::Zilla, `[@Author::GETTY]` from CPAN with every plugin
it requires, and the develop-phase deps the bundle registers (`Test::Pod`). The
[`Containerfile`](dzil-perl/Containerfile) builds one per `PERL_VERSION`;
[`prime.sh`](dzil-perl/prime.sh) does the installing, through a throwaway
distribution so that `dzil listdeps --author` sees the same develop prereqs a
real dist does.
[`.github/workflows/dzil-perl-images.yml`](../.github/workflows/dzil-perl-images.yml)
publishes one tag per version in [`perl-versions`](perl-versions) on every push
to `main` that touches `dzil-perl/`, `perl-versions` or the workflow, weekly (so
the images follow new CPAN releases, including this bundle's own), and on
manual dispatch.
The images **must be public** on ghcr: a consuming repository pulls them with no
credentials of its own.
```sh
docker build --build-arg PERL_VERSION=5.40 -t ghcr.io/getty/dzil-perl:5.40 \
-f dzil-perl/Containerfile dzil-perl
```
## Use it in a distribution
Add a single workflow â no `.cicd/` needed:
simpici-provider/emit.sh view on Meta::CPAN
#!/bin/sh
# SimpiCI provider for [@Author::GETTY] distributions.
#
# SimpiCI runs this image once, read-only over the checkout, with a private
# writable directory at $CICD_PROVIDER_OUT. We write one `.sh` job file per
# supported Perl version into $CICD_PROVIDER_OUT; SimpiCI merges them into the
# staging .cicd WITHOUT overwriting a repository's own files, so a dist that
# ships its own `ghcr.io+getty+dzil-perl+5.40+test.sh` keeps it. We receive no
# registry credentials and no Docker socket by design.
#
# The generated jobs run LATER, each in a `ghcr.io/getty/dzil-perl:<ver>`
# container (perl:<ver> with Dist::Zilla, the bundle and its author-test deps
# preinstalled; see dzil-perl/), with the checkout read-only at /workspace and
# the staging dir read-only at /cicd (CICD_ROOT=/cicd). They source the shared
# helper we also drop in lib/.
set -eu
: "${CICD_PROVIDER_OUT:?must be run by SimpiCI (CICD_PROVIDER_OUT is unset)}"
( run in 1.436 second using v1.01-cache-2.11-cpan-3f962061493 )