Skip to content

Latest commit

 

History

History
56 lines (47 loc) · 6.21 KB

collection_checklist.md

File metadata and controls

56 lines (47 loc) · 6.21 KB

Ansible Collections Checklist (short version)

For details about the following points, refer to the Collection Requirements.

Every comment should say whether the reviewer expects it to be addressed, or whether it's optional.

Note for reviewers: If you don't know how to check any of the points below, please ask maintainers of the collection you're reviewing or a Steering Committee member for clarifications in comments of corresponding inclusion discussion.

Public availability and communication:

  • published on Ansible Galaxy with version 1.0.0 or later
  • has a policy of releasing, versioning and deprecation announced to contributors and users in some way
  • have a Code of Conduct (CoC) compatible with the Ansible Code of Conduct (CoC)
  • have a publicly available issue tracker that does not require a paid level of service to create an account or view issues
  • have a public git repository, releases of the collection are tagged in this repository

Standards and documentation:

  • adheres to semantic versioning
  • follows licensing rules
  • follows the Ansible documentation standards and the style guide
  • follows development conventions; as well as these other requirements:
    • modules satisfy the concept of idempotency
    • modules that only gather information are named <something>_info
    • modules that return ansible_facts are named <something>_facts and do not return non-facts
    • other modules must not allow querying information using specific state option values, or similar mechanisms (like state=get or state=query). These features should be moved to <something>_info or <something>_fact modules.
    • check_mode is supported in all _info and _facts modules
  • supports Python 2.6 or greater and Python 3.5 or greater. If it does not, read the full guidelines to see if you qualify for an exception and document the unsupported Python versions in the collection README.md and in every module and plugin (or in doc fragments)
  • only uses the allowed plugin types in the plugins/ directory
  • has README.md
  • documentation, examples, and return sections use FQCNs for the M(..) format macros when referring to modules
  • modules (or plugins) from ansible-core use ansible.builtin. as a FQCN prefix
  • documentation and return sections use version_added: containing the collection version for which an option, module or plugin was added (except cases when they were added in the very first release of the collection)
  • FQCNs are used for extends_documentation_fragment:, unless you are referring to doc_fragments from ansible-core
  • public plugins, roles and playbooks do not use files outside of meta/, plugins/, roles/, and playbooks/

Collection management:

  • galaxy.yml having tags field set
  • collection dependencies must have a lower bound on the version which is at least 1.0.0, and are all part of the ansible package
  • meta/runtime.yml defines the minimal version of Ansible which the collection works with
  • has changelog, preferably with changelogs/changelog.yaml
  • collection repository should not contain any large objects (binaries) comparatively to the current Galaxy tarball size limit of 20 MB. For example, package installers for testing purposes shouldn't be added.
  • collection repository should not contain any unnecessary files like, for example, temporary files. Temporary files should be added to .gitignore.

Tests:

Note for reviewers: If you don't know how to check the points below, please ask maintainers of the collection you're reviewing how you can do it.

  • In most cases, CI is set up via GitHub Actions.
  • Check .yml files in the .github/workflows directory. There must be at least the sanity section under jobs containing the ansible-test sanity command running against all supported ansible-core versions that must be also listed there, for example, - stable-2.11, - stable-2.12, - stable-2.13.
  • Check workflow runs by clicking the Actions tab in the repository's page - you're interested in Scheduled runs, runs against release commits and runs against pull requests.
  • If there are no workflows in the Actions tab, ask the collection maintainers how CI is implemented.
  • passed ansible-test sanity
  • if test/sanity/ignore*.txt exists, it MUST not contain error codes listed in the list of errors that must not be ignored
  • has CI tests up and running against each of the "major versions" of ansible-base/ansible-core that the collection supports
  • all CI tests MUST run against every pull request
  • all CI tests MUST run regularly (nightly, or at least once per week)
  • sanity tests MUST run against a commit that releases the collection; if they don't pass, the collection won't be released