Home

Awesome

puppet-blacksmith

License Test codecov Release RubyGem Version RubyGem Downloads Donated by Carlos Sanchez

Ruby Gem with several Puppet Module utilities

I don't always release my Puppet modules, but when I do I push them directly to the Forge

Rake tasks

Installation

Install the gem

$ gem install puppet-blacksmith

Add to your Rakefile

require 'puppet_blacksmith/rake_tasks'

And you can start using the Rake tasks. Note that you might have to delete .rake_t_cache before the tasks appear in the output of rake -T.

Tasks

Rake tasks included:

taskdescription
module:buildBuild the module using puppet-modulebuilder
module:bumpBump module version to the next patch
module:bump:patchBump module version to the next patch
module:bump:minorBump module version to the next minor version
module:bump:majorBump module version to the next major version
module:bump:fullBump module version to the version set in the BLACKSMITH_FULL_VERSION env variable
module:bump_commitBump version and git commit
module:bump_commit:patchBump module version to the next patch and git commit
module:bump_commit:minorBump module version to the next minor version and git commit
module:bump_commit:majorBump module version to the next major version and git commit
module:bump_commit:fullBump module version to the version set in the BLACKSMITH_FULL_VERSION env variable and git commit
module:bump_to_version[:new_version]Bump module version to new_version
module:cleanRuns clean again
module:dependency[modulename, version]Updates the module version of a specific dependency
module:pushPush module to the Puppet Forge
module:releaseRelease the Puppet module, doing a clean, build, bump_commit, tag, push and git push
module:tagGit tag with the current module version
module:versionGet the current module version
module:version:nextGet the next patch module version
module:version:next:patchGet the next patch module version
module:version:next:minorGet the next minor module version
module:version:next:majorGet the next major module version

Full release

Do everything needed to push to the Forge with just one command

$ rake module:release

Bump the version of a module

Bump your metadata.json to the next version

$ rake module:bump

Push a module to a repository

Run rake. Ensure you are doing it in a clean working folder or the puppet module builder will package all the unnecessary files.

$ rake module:push

Configuring to push a module to the Puppet Forge

Configure your credentials in ~/.puppetforge.yml. Forge API keys may be created and revoked from a user's profile on the Forge website, where other profile details are managed.

---
api_key: myAPIkey

Or set the equivalent environment variable in your shell

export BLACKSMITH_FORGE_API_KEY=myAPIkey

Configuring to push a module to a JFrog Artifactory

Configure your credentials in ~/.puppetforge.yml or within the project's root directory in ./puppetforge.yml

---
url: https://artifactory.example.com
forge_type: artifactory
username: myuser
password: mypassword

Or set the equivalent environment variables in your shell

export BLACKSMITH_FORGE_URL=https://artifactory.example.com
export BLACKSMITH_FORGE_TYPE=artifactory
export BLACKSMITH_FORGE_USERNAME=myuser
export BLACKSMITH_FORGE_PASSWORD=mypassword

Alternatively, you can generate an API Key on the Artifactory profile page and us that in puppetforge.yml.

---
url: https://artifactory.example.com
forge_type: artifactory
api_key: myAPIkey

Or via an environment variable:

export BLACKSMITH_FORGE_API_KEY=myAPIkey

Customizing tasks

In your Rakefile:

require 'puppet_blacksmith/rake_tasks'
Blacksmith::RakeTask.new do |t|
  t.tag_pattern = "v%s" # Use a custom pattern with git tag. %s is replaced with the version number.
  t.build = false # do not build the module nor push it to the Forge, just do the tagging [:clean, :tag, :bump_commit]
end

GPG signed tags

In your Rakefile:

require 'puppet_blacksmith/rake_tasks'
Blacksmith::RakeTask.new do |t|
  t.tag_message_pattern = "Version %s" # Signed tags must have a message
  t.tag_sign = true # enable GPG signing
end

Testing blacksmith

bundle install
bundle exec rake

Transfer Notice

This plugin was originally authored by Carlos Sanchez. The maintainer preferred that Vox Pupuli take ownership of the module for future improvement and maintenance. Existing pull requests and issues were transferred over, please fork and continue to contribute at https://github.com/voxpupuli/beaker-vmware

Previously: https://github.com/puppetlabs/beaker-vmware

License

This gem is licensed under the Apache-2 license.

Release information

To make a new release, please do: