Release process - Preparation ============================= The steps in this document should be processed early in the release process, definitely before acceptance testing starts, but also before development has been completed. ## 1. Update prerequisites Make sure the [declaration of prerequisites] is up to date with regard to [SupportCriteria]. ## 2. Update [CI] configuration Make sure the Travis configuration for each repo, in the `develop` branch is up to date with the [supported Perl versions]. * zonemaster-ldns - [.travis.yml][ldns.travis] * zonemaster-engine - [.github/workflows/ci.yml][engine.github-actions] * zonemaster-cli - [.travis.yml][cli.travis] * zonemaster-backend - [.travis.yml][backend.travis] > Zonemaster-GUI uses no Perl and Zonemaster/Zonemaster uses no Travis. ## 3. Verify that META.yml will have all the correct data > This section is not relevant for Zonemaster-GUI or Zonemaster/Zonemaster. META.yml is created by Makefile.PL so if META.yml is not correct, then Makefile.PL must be updated. 1. Make a clean clone for each repository ``` git clean -dfx git reset --hard ``` 2. Check out the `develop` branch. Check out the right commit of the submodule (LDNS) if Zonemaster-LDNS. ``` git checkout origin/develop git submodule update # Zonemaster-LDNS only ``` 3. Run ``` perl Makefile.PL --no-ed25519 # zonemaster-ldns only perl Makefile.PL # other repositories ``` 4. Verify that META.yml contains all the paths in the table in [Appendix META] below and that the value at each path matches the listed requirement. ## 4. Verify that MANIFEST and MANIFEST.SKIP are up to date > This section is not relevant for Zonemaster-GUI or Zonemaster/Zonemaster. MANIFEST must, directly or indirectly, list all files that should be installed. MANIFEST.SKIP must list all file that should not be installed, and what is counted are all files available when `make dist` is run. ## 5. Check for deprecated features Check all documentation in all repositories for deprecated features that are planned to be removed in the upcoming release. If anything was found and there is no PR to remove it, then create an issue labelled `P-High` that something must be done before the release unless there is already an issue. Removed feature will probably require that the major version is increased (breaking change). See "[Versions and Releases]". ## Appendix META Requirements for generated META.yml file. Property | Requirement ---------------------|---------------------------------------------------------------------- abstract | component tag line author | current maintainer and original author license | [license string] name | name of the component recommends | all modules that aren't strictly required but still used if available requires | all required modules requires.perl | minimum perl version resources.bugtracker | link to the bug tracker resources.license | link to the license text resources.repository | link to the repository version | version number of the new release [CI]: https://github.com/travis-ci/travis-ci [declaration of prerequisites]: ../../public/installation/prerequisites.md [license string]: https://metacpan.org/pod/CPAN::Meta::Spec#license [SupportCriteria]: SupportCriteria.md [ldns.travis]: https://github.com/zonemaster/zonemaster-ldns/blob/develop/.travis.yml [engine.github-actions]: https://github.com/zonemaster/zonemaster-engine/blob/develop/.github/workflows/ci.yml [cli.travis]: https://github.com/zonemaster/zonemaster-cli/blob/develop/.travis.yml [backend.travis]: https://github.com/zonemaster/zonemaster-backend/blob/develop/.travis.yml [supported Perl versions]: ../../public/installation/prerequisites.md#supported-perl-versions [Appendix META]: #appendix-meta [Versions and Releases]: ../design/Versions%20and%20Releases.md