- Fixed
- Update gem dependencies to allow puppetlabs_spec_helper 7.x
- Added
iso:build
now skips repoclosure unlessSIMP_BUILD_repoclosure=yes
- Fixed
- Support for Ruby 3 and Puppet 8
- Update gem dependencies
- Added
- Support for
puppetlabs-spec-helper
6.x andpuppet-lint
- New gem dependencies:
metadata-json-lint
puppet-lint-params_empty_string-check
- New gem dependencies:
- Acceptance test/nodeset support for Puppet 8
- Modernized GHA PR test matrix
- Support for
- Changed
- Default Puppet = 7.x
- Default Ruby = 2.7
- Fixed
- Don't fail when
metadata
task is not present - Untangled non-standard GHA workflows
- Release workflow bug
- Don't fail when
- Fixed
- Bumped required puppet version to < 9.0
- The base repo for the el7 ISO was unusable because the repodata for it was being excluded on the unpack of the distribution ISO; In the case of building an el7 iso, we now ensure the repodata directory exists.
- Added
- Allow
SIMP_BUILD_PKG_require_rebuild
to be case-insensitive to accommodate GHA
- Allow
- Added
pkg:single
will skip therequire_rebuild?
logic whenSIMP_BUILD_PKG_require_rebuild=yes
- Fixed
- It was impossible to build simp-doc if RPM was published to yum repos; can
now use
SIMP_BUILD_PKG_require_rebuild=yes
- It was impossible to build simp-doc if RPM was published to yum repos; can
now use
- Added
SIMP_BUILD_reposync_only
now excludes RPMs and yum repos from the ISOunpack
task
- Fixed
- Change common repo name
base
to avoid repoclosure conflict warnings - EL7 ISO unpack no longer interferes with reposync repos when
SIMP_BUILD_reposync_only=yes
- Change common repo name
- Fixed
- Fixed an edge case where the
SIMP
directory YUM metadata was not present if you usedreposync
for everything but theSIMP
directory
- Fixed an edge case where the
- Added
- The RPM dependency file can now use
ignores
to remove items instead of needing to redefine the entire dependency stack to remove deps
- The RPM dependency file can now use
- Added
- The
puppet-lint-optional_default-check
was added to prevent settingOptional
parameters with default values.
- The
- Added
- Users now have the ability to set version limits in the
dependencies.yaml
file that will override those in themetadata.json
- Users now have the ability to set version limits in the
- Added
- Run
implantisomd5
after the ISO has been created so that it can be validated by the installer at runtime.
- Run
- Fixed:
- Changed default RPM installed file permissions to 0644/0755
- The tarball unpack exclusions were too aggressive. The
SIMP/GPGKEYS
directory is now preserved properly.
- Fixed:
- SIMP_BUILD_reposync_only now properly unpacks the tarball
- Fixed:
- Aligned wtih an API change in the
dirty?
method inr10k
- Aligned wtih an API change in the
- Added:
- Output the full
mkisofs
command when building an ISO - Added SIMP_BUILD_reposync_only to ignore the built tarball if a reposync directory is present
- Output the full
- Added:
- Env var
SIMP_PKG_progress_bar=no
to turn off pkg RPM build progress bars - Env var
SIMP_PKG_fetch_published_rpm=no
to prevent downloading a published package
- Env var
- Fixed:
- RPM builds no longer fail with leftover generated
build/rpm_metadata/releases
files - Removed unused code, tidied up some confusing bits to make structure more obvious
- RPM builds no longer fail with leftover generated
- Ensure that the
Updates
directory does not link to files in itself
- Fixed a bug where
build:auto
failed when building the SIMP ISO for EL7, because the code attempted to move a directory onto itself. - Ensured GPG keys in simp-gpgkeys are available in the DVD overlay tar file
- Ensure that the DIST qualifier is added to all built RPMs
- Use the new SimpRepos directory layout when building an ISO using externally copied repos.
- Handle multiple options for required applications in build:auto
- Allow users to populate a
reposync
directory in the YUM build space that will overwrite any target directories on the ISO.- The SIMP tarball is unpacked after the copy so you always get the latest built artifacts.
- Pruning will not occur if this technique is used since it is presumed that you are overwriting the data with authoritative content.
- Added a helpful tip about updating vermap.yaml
- Fixed the call to repoclosure if on a system with DNF
- Added support for EL8 to vermap.yaml
- Change to '-1' from '-0' as the default RPM release
- Default
@build_dir
to@distro_build_dir
in build tasks - Use
file --keep-going
in the unpack task's ISO validation check. This allows the check to work from EL8-based systems, whereISO 9660 CD-ROM filesystem data
is not the first match.
- Ensure that pkg:install_gem uses the correct documentation options for the version of Ruby in use.
- Disable brp-mangle-shebangs when building RPMs.
- Mitigated problem where gpg-agent daemon fails to start because
its socket path is longer than 108 characters.
- Changed the default location of the GPG keys directory used in the pkg:key_prep and pkg:signrpms Rake tasks to <base_dir>/.dev_gpgkeys.
- Added a SIMP_PKG_build_keys_dir environment variable that overrides the default location of the GPG keys directory used in the pkg:key_prep and pkg:signrpms Rake tasks.
- Added SIMP_PKG_rpmsign_timeout environment variable that overrides
default timeout in seconds to wait for an individual RPM signing
operation to complete.
- Default timeout is 30 seconds.
- Most relevant when signing on RPMs on EL8 and the gpg-agent started by rpmsign fails to start, but rpmsign does not detect the failure and hangs.
- Improved pkg:signrpms error handling and reporting.
- Fixed bug in GPG handling for GPG 2.1+ in which an existing GPG key that was not cached internally was not detected.
- Fixed bug where pkg:signrpms failed to sign RPMs on EL8.
- Fixed bug where pkg:checksig reported failure on EL8, even when the signatures were valid.
- Deprecated the following top-level Rake tasks for Puppet modules:
- compare_latest_tag: use pkg:compare_latest_tag instead
- changelog_annotation: use pkg:create_tag_changelog instead
- Fix GPG handling for GPG 2.1+
- Add support for Puppet 7
- Work around issues with querying RPM spec file changelogs using RPM version 4.15.0+
- Switch between 'with_unbundled_env' and 'with_clean_env' based on which one Bundler supports.
- Permit *.md files in
rake pkg:compare_latest_tag
- Fix automatically added dependencies for SIMP 6.4+
- Version information should not be required on dependencies in metadata.json
- Puppet module RPM logic handles
-rc0
suffix inmetadata.json
- Add SIMP optional dependencies to RPM requires list
- Allow v3 of simp-rspec-puppet-facts
- Fix '~> 0' notation
- Don't fail upon first error encountered, when processing items in pkg:check_published. Attempt as many checks as possible and then report all failures.
- Add initial linting tasks for CI configuration (simp:ci_lint and
simp:gitlab_ci_lint). The only checks currently being done are
as follows:
- verifies the .gitlab-ci.yml is valid YAML
- verifies the .gitlab-ci.yml passes GitLab lint checks
- verifies each acceptance test job in the .gitlab-ci.yml fully specifies the suite and nodeset to be used and that the specified suite and nodeset exist.
Fixed 2 bugs in the SIMP Puppet module generated RPM spec files
- When SIMP Puppet module RPMs were installed, they created the wrong
state directory, '/%{_localstatedir}/lib/rpm-state/simp-adapter'.
This incorrect directory was created because the
_localstatedir
RPM macro was not evaluated at run time. - The %preun and $postun scriptlet comments were incorrect.
- Increase the upper bound of the Bundler dependency to < 3.0
- Fix the package check to handle building different versions of SIMP
- Update the list of packages to check for before building the tar file.
- Update the upperbound of r10k runtime dependency
- Add SIMP_BUILD_update_packages to allow users to update the packages.yaml
- file at build time if desired.
- Bump upper bound on puppet to < 7
- Add rakelib/ to the list of non-mission files/directories to exclude when comparing with the latest tag in pkg:compare_latest_tag and compare_latest_tag
- Fix long standing logic issues that were causing download failures
- Move use of simp_rpm_helper from %post to %postrans, to fix a bug in which files that should have been removed from the old version during RPM upgrade are copied.
- Add information about the distribution OS to the simp-packer
vars.json
. - Add builder version information to the simp-packer
vars.json
. - Refactor writing the vars.json to its own method.
- Refactor 'dev' GPG signing key logic into
Simp::LocalGpgSigningKey
- Add acceptance tests for GPG logic and
rake pkg:signrpms
- Ensure that modules do not contain symlinks per the standard Puppet guidance.
- Do not try to only use the system cache for yum operations since this silently causes all EL6 builds to be rebuilt and can't really work anyway since there isn't a local cache unitl after yum runs. After yum runs, the local cache will be preferred unless it has expired anyway.
- Add support for Beaker 4
- Fix issue where the
pkg:signrpms
rake task would not honor 'force' - Add a check for the existence of /usr/local/sbin/simp_rpm_helper, before running it in the latest Puppet-module RPM spec file.
- Add additional UEFI support options to the ISO build based on user feedback. All of our testing could use the ISO on different UEFI systems successfully but apparently there can be vendor differences and this solves at least one of them.
- It is possible to build RPMs for other OSes again (broken since 5.0.0)
- Fix regression that broke env var
SIMP_BUILD_distro
- Add env var
SIMP_RPM_dist
toSIMP::RPM
to target a specificdist
while building RPMs from spec files. - During a
rake build:auto
, the information from env varSIMP_BUILD_distro
is used to setSIMP_RPM_dist
- Remove the dependency pin attempt on fog-openstack since this is handled by the simp-beaker-helpers dependency
- Update pkg:create_tag_change to verify all CHANGELOG entries for a component are in reverse chronological order, not just the entries for the latest version.
- Add pkg:check_rpm_changelog task to verify the 'rpm' command can parse a component's changelog.
- Pin fog-openstack to 0.1.25 if Ruby is prior to 2.2.0 due to a deprecation
- Fix regression that broke env var
SIMP_BUILD_distro
- Add support for setting SIMP_RSPEC_PUPPETFILE and/or SIMP_RSPEC_MODULEPATH to create a custom fixtures.yml based on a Puppetfile, the modules in a directory, or the combination of both.
- Fix RPM release processing when generating 'Obsoletes' metadata
- Document requirement for double-digit day in CHANGELOG date.
- Add optional spec test for CHANGELOG file at
$SIMP_SPEC_changelog
- Fix invalid
module_without_changelog
spec test forSimp::RelChecks
load_and_validate_changelog
now passes onverbose
toSimp::ComponentInfo
- Fix Travis CI deployment script
- Add support for RPM customization (e.g., scriptlets, triggers)
- Scans new location
build/rpm_metadata/custom/
to find new content to inject into the RPM spec (e.g., scriptlets, triggers). - There is logic to permit overriding the
%pre
/%post
/%preun
/%postun
default scriptlets.
- Scans new location
- Enable
%triggerpostun
fix for SIMP-3895- The custom scriptlet feature provides a means for module RPMs that obsolete
the same module name to introduce a
%triggerpostun -- <obsoleted-package>
scriptlet as a workaround to preventsimp_rpm_helpers
from deleting everything. - The acceptance tests specifically demonstrate this type of trigger
- The custom scriptlet feature provides a means for module RPMs that obsolete
the same module name to introduce a
- Improve RPM build troubleshooting:
- New env var:
SIMP_RPM_verbose=yes
- New env var:
SIMP_RAKE_PKG_verbose=yes
- New env var:
- Improve
simpdefault.spec
RPM Lua code troubleshooting:- Cleaned up header documentation
- Added optional stderr warnings
- Refactored (some) code into functions
- Improved error messages
- Improve acceptance test / development workflow
- Add
Vagrantfile
to provide a quick & pristine beaker/docker setup
- Add
- Refactor acceptance test structure
- Code formerly embedded in the
pkg_rpm
tests have been refactored into common helpers that other tests can use. - There are mock prereq RPMs to test installation of newly-built RPMs
- A
simp_rpm_helper
(a copy of the script in simp-adapter) for scenarios
- Code formerly embedded in the
- Update README.md
- Removed obsolete references to
mock
-based development - Clarified RPM Generation documentation
- Removed obsolete references to
- Add a conditional check so simp-core can build an ISO with a pre-existing tarball with no user input
- Add ability to specify external, non-module, RPM dependencies for
a checked-out repo from
simp-core/build/rpm/dependencies.yaml
- Create pkg:create_tag_changelog, which is a more thorough version
of Simp::Rake::Pupmod::Helpers changelog_annotation task.
- Now supports non-Puppet SIMP assets for which version and changelog information is specified in an RPM spec files.
- Provides more extensive validation of date strings and changelog entry ordering.
- Stops processing at the first invalid changelog entry, to minimize non-catastrophic errors from old changelog entries.
- Create pkg:compare_latest_tag, which is a more general replacement
for the Simp::Rake::Pupmod::Helpers compare_latest_tag task.
- Now supports non-Puppet SIMP assets for which version and changelog information is specified in an RPM spec files.
- Does the same validation as the new pkg:create_tag_changelog task.
- Fix broken acceptance tests
- Remove logic to build SIMP 4 and SIMP 5 RPMs.
- Remove mock logic
- Switch back to using Gem::Version.new instead of Puppet's vercmp since Gem::Version matches the standard RPM version semantics and Puppet does not.
- Ensure that the first package run uses the existing Bundle environment and falls back to a clean Bundle environment on failure.
- Fixed 'Obsoletes' in the RPM spec files
- Renamed 'RHEL' to 'RedHat' in the 'unpack' task for compatibility with the rest of the new code base
- Fixed bug in
deps:record
that prevented recording to Puppetfile.[:method] - Added new
:reference
parameter todeps:record
for identifying repos to record
- Determine the build/rpm_metadata/* files when the pkg:rpm rake task is called, not when the rake object is constructed. This is required for simp-doc RPM building.
- Removed rpmkeys and rpmspec from the required list of commands, as they are not present in CentOS 6 and are automatically installed when the required rpmbuild command is installed in CentOS 7.
- Removed all 'mock' support
- Bound the build to only the OS upon which you are building
- Removed legacy support code
- Designed for use within a Docker environment
- Technically, you can install and run it inside mock but it's not going to do any of the heavy lifting for you any longer
- Is NOT backwards compatible with anything for the most part
- Ensure that published RPMs are used before rebuilding
- Cleaned up the git checking of subdirectories
- Added the ability to read RPM release qualifier for checked out
module from
simp-core/build/rpm/dependencies.yaml
- Added the ability to read from
simp-core/build/rpm/dependencies.yaml
in a checked out repo to add the necessary Obsoletes and Requires statements for external RPMs - Changed the 'YEAR' part of the RPM release to reflect the current year
- Ensure that the 'spec/fixtures/modules' directory is no longer added to the RPMs
- Reverted the bundler pinning since it was causing too many issues on CI systems
- Pinned bundler to '~> 1.14.0' to allow building on FIPS-enabled systems
- Updated to simp-rspec-puppet-facts 2.0.0
- Fixed bug in
:changelog_annotation
task :test
now uses:metadata_lint
instead of:metadata
:metadata
is now an alias for:metadata_lint
- Added tests and fixtures for changelog logic
- Added compare_latest_tag task
- Added changelog_annotation task
- Fixed code count error
- Fix ability to build with existing tarball
- Updated dependencies to use Beaker 3
- Added a Rake task
pkg:check_version
that can be run in any module to determine if it needs to have either the metadata.json or the CHANGELOG version bumped - Should be looped and manually reviewed as a pre-build task
- Modified to no longer add the SIMP Dev key into the GPGKEYS directory and instead add it to the root level of the DVD for local reference.
- Updated gemspec deps to newer
simp-rake-helpers
~> 1.0 andrake
< 13.0
- Updated requirement on
semantic_puppet
, which changed with Puppet 4.9+ - See: https://github.com/garethr/puppet-module-skeleton/pull/137/files
- Fixed issues with looping through the build directories
- Look for the DVD directory in the distribution directories
- Fixed bug in legacy compatibility
- Added SIMP 6 build structure support
- Fixed the detection for requiring rebuilds via mock
- Added a lot more parallel capability
- Added a 'pkg:single' task for building single RPMs from the top level
- Added the ability to build puppet module RPM packages without requiring a fork
- Updated to provide backwards compatibility for SIMP 4 and 5
- Updated the RPM spec template to handle the new SIMP 6 requirements
- Added thread safe failure checks
- Will raise an error when building the modules if one or more fails
- Ensure that the packages.yaml file is 'human clean'
- Made the repoclosure error detection more aggressive
- Fixed bugs in Puppetfile.stable generation.
- Several fixes for building on systems that are connected to the Red Hat Network directly. Tested on AWS.
- Bumped the requirement for puppet-lint to >= 1.0 and < 3.0
- Sanity check pkg:rpmsign for executable availability
- Update
mock_pre_check
sanity check to usewhich()
- Fixed the RPM spec template so that it properly picks up the requires and release files
- This is a bit of a mess and needs to be completely refactored in the future
- Removed unnecessary
deps:checkout
warnings from fresh (empty) checkouts
- Fix a broken method call between
r10k
2.4.0 andR10KHelper.new()
- Add
:insync
status to acceptable module statuses fordeps:checkout
- No longer run the recursive Bundle by default
- Fixed a circular dependency potential in the requires for simplib and stdlib
- Updated the spec tests to work more cleanly
- Update all packages to use a consistent naming scheme and obsolete all that came before.
- Ensure that RPM names are properly structured between SIMP and non-SIMP RPMs
- Make sure that the install path is proper
- Fixed a misnamed variable causing build failures
- Add a Lua-based RPM template to the build stack allowing us to build any Puppet module as an RPM without forking.
- Force a useful failure on repoclosure issues
- Translate 'RedHat' into 'RHEL' to match the file artifacts on disk.
- Move 'listen' into the runtime dependencies so that 'guard' stops trying to yank it into a version that is not compatible with Ruby < 2.2.
- Added support for the new LUA-based RPM spec files.
- Fixed a few bugs in some of the internal state checks.
- Fixed runtime dependencies
- Removed gem dependencies on ruby 2.2
- ISOs will now build with EFI mode enabled
- The pkglist file will be read from the tarball during build:auto
- Fix a bug where deps:checkout failed on unknown repos being present
- Ensure that all rake tasks can run on EL6 systems
- Update the processing of RPM spec files to properly handle macros in target builds
- Ensure that openssl, openssl-devel, and vim-enhanced are installed in mock by default
- Allow simp/rpm to be used independently of Rake
- Ensure that packages are not re-signed that have already been signed by the presented key.
- Worked around an issue where rpm --resign will prompt more than once for the GPG key using the latest GPG version. This happens on the command line as well.
- Relax dependency to allow puppet 3 or above
- Ensure that the GPG signing code works on Fedora 22 and RHEL7 and RHEL6
- Raise an error if the GPG signing command fails.
- Ensure that the 'Release' variable doesn't pick up anything that's dynamic in nature.
- Optimized the build check code. Sped up pretty much everything.
- Cleanup gemspec
- Fixed bugs in the RPM signing code regarding fetching the username and password from the appropriate source.
- Added support for reading information directly from RPMs as well as spec files.
- Added support for snapshot_release, adds date and time to rpm release version
- Added the top level rake and rpm files to the Manifest
- Refactored all the SIMP repositories' common Rakefile tasks into this gem.
- Birthday!