5.3.2.5.1. Pre-Release Checklist

The bulk of the work to release each component is to verify that the component is ready for release. Below is the list of verifications that must be executed before proceeding with the release. If any of these steps fail, the problem identified must be fixed before you can proceed with the tag and release steps.

5.3.2.5.1.1. Verify a release is warranted

The check verifies a new release is warranted and the version has been properly updated.

  1. Clone the component repository and checkout the development branch to be tagged

    git clone https://github.com/simp/simp-adapter.git
    cd simp-adapter
    git checkout master # this step isn't needed for master branch
    
  2. Manually compare manually the development branch with the last release tag. (The existing rake task compare_latest_tag won’t necessarily work here.)

    git fetch -t origin
    
    # manually figure out which is last tag
    
    git diff tags/<last release tag> --name-only
    
    # manually verify mission-impacting changes have been
    # made (i.e., changes that warrant a release) and the
    # version has been updated in the CHANGELOG, version.rb
    # and/or build/<component>.spec file.
    

5.3.2.5.1.2. Verify the changelog

This check verifies the changelog information is available and can be extracted:

  • Manually inspect the appropriate file (CHANGELOG or %changelog section of <component>.spec file). (The existing rake task changelog_annotation won’t necessarily work here.)
  • FIXME simp-doc has its own CHANGELOG, but requires the Changelog.rst from simp-core to be current as well. It may make more sense to move the simp-doc release into the instructions for releasing a SIMP ISO.

5.3.2.5.1.3. Verify RPMs can be created

This check verifies that an RPM can be generated for this module from simp-core:

  1. Clone simp-core

    git clone https://github.com/simp/simp-core.git``
    
  2. Update the URL for the component under test Puppetfile.tracking, if needed

    cd simp-core
    vi Puppetfile.tracking
    
  3. Build RPM

bundle update
bundle exec rake deps:checkout
bundle exec rake pkg:single[adapter]

Note

This command will build the RPM for the OS of the server on which it was executed.

5.3.2.5.1.4. Verify unit tests pass

This check verifies that the component’s unit tests have succeeded in TravisCI:

Important

If the tests in TravisCI fail, you must fix them before proceeding. The automated release procedures will only succeed, if the unit tests succeed in TravisCI.

5.3.2.5.1.5. Verify acceptance tests pass

This check verifies that the component’s acceptance tests have succeeded:

  • Run the appropriate acceptance test rake task, if it exists. For this project, rake beaker:suites is the appropriate task

    bundle exec rake beaker:suites
    

Note

If the GitLab instance for the project is configured and current (it is sync’d every 3 hours), you can look at the latest acceptance test results run by GitLab. For our project, the results would be at https://gitlab.com/simp/simp-adapter/pipelines.

5.3.2.5.1.6. Verify the component RPM upgrade succeeds

This check verifies that the RPM for this component can be used to upgrade the last full SIMP release. For both CentOS 6 and CentOS 7, do the following:

  1. Bring up a CentOS server that was booted from the appropriate SIMP ISO and for which simp config and simp bootstrap has been run.

    Note

    If the VirtualBox for the last SIMP ISO was created by the simp-packer project, you can simply setup the appropriate VirtualBox network for that box and then bring up that bootstrapped image with vagrant up.

  2. Copy the component RPM generated from the above RPM verification step to the server and install with yum. For example,

    sudo yum install simp-adapter-0.0.3-0.el7.noarch.rpm
    

    Note

    If the component requires updated dependencies, those RPMs will have to be built and installed at the same time.

  3. Verify the puppet agent runs succeed on the Puppet master

    • login as root
    • execute puppet agent -t
  4. Execute any other verifications unique to the component

5.3.2.5.1.7. Verify the component yields valid SIMP ISOs

This check verifies that with this component, valid SIMP ISOs for for CentoOS 6 and CentOS 7 can be built. An ISO is considered to be valid when a SIMP server can be booted from it, configured via simp config, and then bootstrapped via simp bootstrap. For CentOS 6 and CentOS 7:

  1. Login to a machine that has Docker installed and the docker service running.

    Important

    In our development environment, the version of Docker that is available with CentOS works best.

  2. Checkout the simp-core project for the last SIMP release. For this discussion, we will assume it is 6.0.0-1.

    git clone https://github.com/simp/simp-core.git``
    cd simp-core
    git fetch -t origin
    git checkout tags/6.0.0-1
    
  3. Create a Puppetfile.tracking file that contains the contents of Puppetfile.stable in which the URLs for the component and any of its updated dependencies have been updated to reference the versions under test.

  4. Populate simp-core/ISO directory with CentOS6/7 distribution ISOs

    mkdir ISO
    cp /net/ISO/Distribution_ISOs/CentOS-6.9-x86_64-bin-DVD*.iso ISO/
    cp /net/ISO/Distribution_ISOs/CentOS-7-x86_64-1708.iso ISO/
    
  5. Build each ISO for CentOS 6 and CentOS 7. For example,

    bundle update
    SIMP_BUILD_docs=no \
    SIMP_BUILD_verbose=yes \
    SIMP_PKG_verbose=yes \
    bundle exec rake beaker:suites[rpm_docker]
    

    Important

    1. By default, the default.yml for the rpm_docker suite builds an ISO for CentOS 7. You must manually edit the default.yml file to disable the el7-build-server instead of the el6-build-server, in order to create a CentOS 6 ISO.
    2. The most reliable way to build each ISO is from a clean checkout of simp-core.
  6. Use simp-packer to verify the SIMP ISO can be bootstrapped, when booted with the default options.