5.3.2.3. Other Puppet Module Release Procedures¶
This section will describe the release procedures for Puppet module projects for which SIMP is not the owner. In these procedures, the SIMP Team will release RPMs of these projects, using SIMP forks to which no SIMP modifications have been made. The purpose of these forks is simply to retain a backup copy of the official repositories in the case that the upstream repositories are compromised or taken down unexpectedly.
Note
We highly recommend that you keep copies of all external repositories as
a clone in your internal systems if you are deploying via r10k
or Code
Manager.
Important
If the owner has made unreleased modifications to the project that are essential to SIMP OR the SIMP Team has an outstanding pull request for the project with essential changes, the SIMP Team must take ownership of this version of the Puppet module to release it. This is the only way for SIMP to release the modified version to PuppetForge.
Note
You can identify whether a Puppet module is owned by SIMP, by examining the
outer-most name
entry in the module’s metadata.json
file. The value
for the name
key will be of the form <owner>-<module name>.
5.3.2.3.1. Pre-Release Checklist¶
For each project, the verification required is to ensure the version desired has already been released to GitHub and PuppetForge by the project owner and has been used for testing SIMP components in unit (rspec), acceptance (beaker), and SIMP ISO validation (packer) tests:
- Verify the version required has an official GitHub release.
- Verify the version required has been released to PuppetForge.
- Verify the
.fixtures.yml
andmetadata.json
for SIMP components that depend upon the component match the version being released. - Verify the
Puppetfile.tracking
file of thesimp-core
project match the version being released.
5.3.2.3.2. Build Signed RPM and Deploy to packagecloud¶
5.3.2.3.2.1. If a New RPM Needs to be Built¶
- Build the RPM for the component that you wish to publish
git clone simp-core
git checkout master # or an appropriate branch
bundle update
bundle exec rake pkg:single[MODULE_NAME or PATH]
Note
If, for some reason, the above does not work, you can go into the target
component and run rake pkg:rpm
The output will be in the dist
directory of the targeted artifact
- Pass the RPM over to an authorized signing team member who will sign it using
rpm --resign
5.3.2.3.2.2. Publish to PackageCloud¶
package_cloud push simp-project/REPO_NAME/el/OS_MAJOR_VERSION /path/to/packages