Vlad's collection of Rake tasks
See below for gem dependencies and add the required gems to the Gemfile:
source ENV['GEM_SOURCE'] || 'https://rubygems.org'
gem 'vtasks', :git => 'https://github.com/vladgh/vtasks', require: false
gem 'example', require: false
And then execute:
$ bundle
Add the required tasks to the Rakefile:
require 'vtasks/example'
Vtasks::Example.new
Required gems:
gem 'docker-api', require: false
gem 'rspec', require: false
gem 'serverspec', require: false
Usage:
require 'vtasks/docker'
Vtasks::Docker.new
Parameters:
:repo
: [String] the docker hub namespace:has_build_args
: [Boolean] whether build arguments should be used
Tests (create a spec/spec_helper.rb
file containing):
require 'vtasks/utils/docker_shared_context'
# Configura RSpec
::RSpec.configure do |config|
config.formatter = :documentation
config.color = true
config.tty = true
end
# Longer build time out
::Docker.options[:read_timeout] = 7200
And then include the required shared context in your own tests:
include Vtasks::Utils::DockerSharedContext::Container
Available shared contexts:
Image
: builds an imageCleanUp
: kills all containers and deletes themContainer
: starts a containerRunningEntrypointContainer
: starts a container overriding the entrypoint with a continuous loopRunningCommandContainer
: starts a container overriding the command with a continuous loop
Required gems:
gem 'reek', require: false
gem 'rubocop', require: false
gem 'rubycritic', require: false
Usage:
require 'vtasks/lint'
Vtasks::Lint.new
require 'vtasks/lint'
Vtasks::Lint.new(file_list:
FileList[
'lib/**/*.rb',
'spec/**/*.rb',
'Rakefile'
].exclude('spec/fixtures/**/*'))
Rubocop can be configured by using a .rubocop.yml
file at the root of the project (https://github.com/bbatsov/rubocop). Ex.:
AllCops:
Exclude:
# Ignore HTML related things
- '**/*.erb'
# Ignore vendored gems
- 'vendor/**/*'
# Ignore code from test fixtures
- 'spec/fixtures/**/*'
# Ignore temporary code
- 'tmp/**/*'
Metrics/LineLength:
Enabled: false
Required gems:
gem 'metadata-json-lint', require: false
gem 'puppet-lint', require: false
gem 'puppet-syntax', require: false
gem 'puppetlabs_spec_helper', require: false
gem 'rspec-puppet', require: false
gem 'rspec-puppet-facts', require: false
gem 'puppet_forge', require: false
gem 'puppet-strings', require: false
gem 'r10k', require: false
gem 'beaker', require: false
gem 'beaker-puppet_install_helper', require: false
gem 'beaker-rspec', require: false
Usage:
require 'vtasks/puppet'
Vtasks::Puppet.new
require 'vtasks/puppet'
Vtasks::Puppet.new
Note: The puppetlabs_spec_helper
gem clears the default lint
task, so this needs to be called before all the lint tasks.
Required gems:
gem 'github_changelog_generator', require: false
Usage:
require 'vtasks/release'
Vtasks::Release.new
require 'vtasks/release'
Vtasks::Release.new(
write_changelog: true,
require_pull_request: true
wait_for_ci_success: true,
bug_labels: 'Type: Bug',
enhancement_labels: 'Type: Enhancement'
)
Parameters:
write_changelog
: [Boolean] whether to write the changelog (defaults tofalse
)require_pull_request
: [Boolean] in case the branch is protected and a pull request is required, the task will create a separate branch on which it will commit the changelog, and merge that into master (defaults tofalse
). .wait_for_ci_success
: [Boolean] whether a "SUCCESS" CI status is required (defaults tofalse
)bug_labels
: [STRING] Issues with the specified labels will be added to "Fixed bugs" section (defaults tobug
)enhancement_labels
: [STRING] Issues with the specified labels will be added to "Implemented enhancements" section (defaults toenhancement
)
Note: First time you have to create an annotated tag and commit the initial CHANGELOG, before creating issues or pull requests (if there these are not present it will fail)
git tag --sign v0.0.0 --message 'Release v0.0.0' && git push --follow-tags
bundle exec rake release:changes
Required gems:
gem 'dotenv', require: false
gem 'travis', require: false
Usage:
require 'vtasks/travisci'
Vtasks::TravisCI.new
After checking out the repo, run bin/setup
to install dependencies. Then, run rake spec
to run the tests. You can also run bin/console
for an interactive prompt that will allow you to experiment.
See CONTRIBUTING.md file.
Licensed under the Apache License, Version 2.0. See LICENSE file.