Giter Club home page Giter Club logo

rubygem-simp-rake-helpers's Introduction

simp-rake-helpers

License Build Status

Table of Contents

  1. Overview
  1. Setup
  2. Usage - Configuration options and additional functionality
  1. Reference - An under-the-hood peek at what the gem is doing and how
  2. Limitations - OS compatibility, etc.
  3. Development - Guide for contributing to the module

Overview

The simp-rake-helpers gem provides common Rake tasks to support the SIMP build process.

This gem is part of SIMP

This gem is part of (the build tooling for) the System Integrity Management Platform, a compliance-management framework built on Puppet.

Features

  • Supports multithreaded mock operations
  • RPM packaging and signing
  • Rubygem packaging

Setup

Gemfile

# Variables:
#
# SIMP_GEM_SERVERS | a space/comma delimited list of rubygem servers
# PUPPET_VERSION   | specifies the version of the puppet gem to load
puppetversion = ENV.key?('PUPPET_VERSION') ? "#{ENV['PUPPET_VERSION']}" : '~>3'
gem_sources   = ENV.key?('SIMP_GEM_SERVERS') ? ENV['SIMP_GEM_SERVERS'].split(/[, ]+/) : ['https://rubygems.org']

gem_sources.each { |gem_source| source gem_source }

group :test do
  gem 'puppet', puppetversion
  gem 'beaker-rspec'
  gem 'vagrant-wrapper'

  # Puppet 4+ has issues with Hiera 3.1+
   if puppetversion.to_s =~ />(\d+)/
     pversion = $1
     else
     pversion = puppetversion
   end

   if Gem::Dependency.new('puppet', '~> 4.0').match?('puppet', pversion)
     gem 'hiera', '~> 3.0.0'
   end

  # simp-rake-helpers does not suport puppet 2.7.X
  if "#{ENV['PUPPET_VERSION']}".scan(/\d+/).first != '2' &&
      # simp-rake-helpers and ruby 1.8.7 bomb Travis tests
      # TODO: fix upstream deps (parallel in simp-rake-helpers)
      RUBY_VERSION.sub(/\.\d+$/,'') != '1.8'
    gem 'simp-rake-helpers'
  end
end

Usage

In a Puppet module

Within the project's Rakefile:

require 'simp/rake/pupmod/helpers'

Simp::Rake::Pupmod::Helpers.new(File.dirname(__FILE__))

In a Ruby Gem

Within the project's Rakefile:

require 'simp/rake/rubygem'

# e.g., "simp-rake-helpers"
package = 'name-of-rubygem'
Simp::Rake::Rubygem.new(package, File.direname(__FILE__)

To see the extra rake tasks:

bunde exec rake -T

RPM Generation

This Gem provides the ability to generate an RPM from any Puppet module.

By default, the information for the RPM will be pulled from the Forge compatible metadata.json.

The name and version fields must be present and well formatted. The license field is also used if present.

NOTE: The dependencies in metadata.json are not used to generate RPM dependencies!

RPM Changelog

The Changelog is pulled from a file called CHANGELOG at the top level of the project. If this file does not start with a well formatted RPM changelog string, it will be ignored.

The Changelog is not fully checked before attempting to build the RPM. Your RPM build will fail if the Changelog entries are not valid per the RPM specification.

RPM Dependencies

It is likely that you will want to declare your dependencies in your RPM. To do this, you can create a build/rpm_metadata directory at the root of your project. A file named requires in the build/rpm_metadata directory will be used to declare the dependencies of the RPM. A file named release in the build/rpm_metadata directory will be used to declare the RPM release number.

The following directives may be declared in the requires file:

  • Provides
  • Requires
  • Obsoletes

Reference

simp/rake/rpm

rake pkg:rpm[chroot,unique,snapshot_release]

Builds an RPM to package the current SIMP project.

NOTE: Building RPMs requires a working Mock setup (http://fedoraproject.org/wiki/Projects/Mock)

Parameters
  • :chroot - The Mock chroot configuration to use. See the '--root' option in mock(1)."
  • :unique - Whether or not to build the RPM in a unique Mock environment. This can be very useful for parallel builds of all modules.
  • :snapshot_release - Add snapshot_release (date and time) to rpm version. Rpm spec file must have macro for this to work.

rake pkg:scrub[chroot,unique]

Scrub the current SIMP project's mock build directory.

rake pkg:srpm[chroot,unique,snapshot_release]

Build the pupmod-simp-iptables SRPM. Building RPMs requires a working Mock setup (http://fedoraproject.org/wiki/Projects/Mock)

NOTE: Building RPMs requires a working Mock setup (http://fedoraproject.org/wiki/Projects/Mock)

Parameters
  • :chroot - The Mock chroot configuration to use. See the '--root' option in mock(1)."
  • :unique - Whether or not to build the SRPM in a unique Mock environment. This can be very useful for parallel builds of all modules.
  • :snapshot_release - Add snapshot_release (date and time) to rpm version. The RPM spec file must support macros for this to work.

rake pkg:tar[snapshot_release]

Parameters

Build the pupmod-simp-iptables tar package

  • :snapshot_release - Add snapshot_release (date and time) to rpm version, rpm spec file must have macro for this to work.

Limitations

Development

Please see the SIMP Contribution Guidelines.

License

See LICENSE

History

See CHANGELOG.md

rubygem-simp-rake-helpers's People

Contributors

lamawithonel avatar lnemsick-simp avatar op-ct avatar trevor-vaughan avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.