Skip to content

Document how to add CI to a module, and link the DevKit docs from Hello OpenVox #464

Description

@miharp

Summary

A user on IRC (#openvox on Libera) tried to add CI to an older Puppet module by copying the gha-puppet puppet-ci-basic.yml template, after working through the Hello OpenVox section. Every run failed with:

Could not locate Gemfile or .bundle/ directory

and the unit-test matrix was skipped, which the workflow's alls-green gate then reports as a failure.

The cause is that gha-puppet's basic.yml is a thin wrapper around bundle exec rake validate lint check plus a parallel_spec matrix derived from metadata.json. It assumes the module already has a Gemfile, a Rakefile that loads puppetlabs_spec_helper/rake_tasks, and a metadata.json. The user's module was Modulefile-based with none of those. Nothing in our docs explains those prerequisites, so the question "is this CI for modules like puppet/nftables, or is there another workflow I could use?" had no answer on the site.

Two gaps came out of this.

1. No page on adding CI to a module

gha-puppet is only mentioned in passing:

  • devkit/acceptance_testing.md links to it as the thing that "builds the platform matrix from your metadata.json automatically" and points at puppet-chrony's ci.yml as an example.
  • devkit/voxbox.md mentions that Vox Pupuli modules run the shared reusable workflows.

There is no page that says: here is what a module needs before the reusable workflow will run (Gemfile, Rakefile, metadata.json, and what each of the validate, lint, check, rubocop, and parallel_spec tasks does), here is the minimal workflow file to drop into .github/workflows/, and here is what to reach for instead if you only want a syntax check (puppet parser validate + puppet-lint in a plain job) or if you want the manifest actually applied (beaker, see the acceptance testing page).

Proposed: a short "CI for your module" page in the Developer Tooling section, sitting between "Consistent Style" and "Using VoxBox in CI" in the nav. The gha-puppet README already has the minimal Gemfile and Rakefile; the page should reuse those rather than invent its own, and link to devkit/setup.html for the voxpupuli-test setup and to devkit/migrating.html for anyone converting a Modulefile-era module.

2. The Hello OpenVox page doesn't hand off to the DevKit docs

The Next Steps at the end of getting_started/index.md only offer two paths: set up a server, or read the language intro. A reader who has just written their first manifest and wants to know how to lint, test, or CI it has no pointer to the Developer Tooling section at all, which is likely how the user above ended up guessing from a Vox Pupuli template.

Proposed: add a third Next Steps bullet that links to devkit/index.html (and, once it exists, the CI page from point 1).

Evidence

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions