This repository has been archived by the owner on Jan 27, 2023. It is now read-only.
forked from voxpupuli/puppet-jenkins
-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
partial modulesync: switch to Rakefile from modulesync1.9.3
- Loading branch information
1 parent
7a4a735
commit c7d0979
Showing
1 changed file
with
77 additions
and
47 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,62 +1,92 @@ | ||
require 'puppetlabs_spec_helper/rake_tasks' | ||
require 'rubocop/rake_task' | ||
require 'puppet-strings/tasks' | ||
|
||
RuboCop::RakeTask.new | ||
# load optional tasks for releases | ||
# only available if gem group releases is installed | ||
begin | ||
require 'puppet_blacksmith/rake_tasks' | ||
require 'voxpupuli/release/rake_tasks' | ||
require 'puppet-strings/tasks' | ||
rescue LoadError | ||
end | ||
|
||
exclude_paths = [ | ||
'pkg/**/*', | ||
'vendor/**/*', | ||
'spec/**/*', | ||
'examples/**/*' | ||
] | ||
PuppetLint.configuration.log_format = '%{path}:%{line}:%{check}:%{KIND}:%{message}' | ||
PuppetLint.configuration.fail_on_warnings = true | ||
PuppetLint.configuration.send('relative') | ||
PuppetLint.configuration.send('disable_140chars') | ||
PuppetLint.configuration.send('disable_class_inherits_from_params_class') | ||
PuppetLint.configuration.send('disable_documentation') | ||
PuppetLint.configuration.send('disable_single_quote_string_with_variables') | ||
|
||
# Make sure we don't have the default rake task floating around | ||
Rake::Task['lint'].clear | ||
exclude_paths = %w( | ||
pkg/**/* | ||
vendor/**/* | ||
.vendor/**/* | ||
spec/**/* | ||
) | ||
PuppetLint.configuration.ignore_paths = exclude_paths | ||
PuppetSyntax.exclude_paths = exclude_paths | ||
|
||
PuppetLint.configuration.relative = true | ||
PuppetLint::RakeTask.new(:lint) do |l| | ||
l.disable_checks = %w(80chars class_inherits_from_params_class) | ||
l.ignore_paths = exclude_paths | ||
l.fail_on_warnings = true | ||
l.log_format = '%{path}:%{line}:%{check}:%{KIND}:%{message}' | ||
desc 'Auto-correct puppet-lint offenses' | ||
task 'lint:auto_correct' do | ||
PuppetLint.configuration.fix = true | ||
Rake::Task[:lint].invoke | ||
end | ||
|
||
PuppetSyntax.exclude_paths = exclude_paths | ||
desc 'Run acceptance tests' | ||
RSpec::Core::RakeTask.new(:acceptance) do |t| | ||
t.pattern = 'spec/acceptance' | ||
end | ||
|
||
namespace :travis do | ||
desc 'Syntax check travis.yml' | ||
task :lint do | ||
# warnings are currently non-fatal due to suspected problems with | ||
# validation of matrix::include | ||
#sh "travis lint --exit-code" do |ok, res| | ||
sh 'travis lint --skip-completion-check' do |ok, res| | ||
unless ok | ||
# exit without verbose rake error message | ||
exit res.exitstatus | ||
end | ||
end | ||
desc 'Run tests metadata_lint, release_checks' | ||
task test: [ | ||
:metadata_lint, | ||
:release_checks, | ||
] | ||
|
||
desc "Run main 'test' task and report merged results to coveralls" | ||
task test_with_coveralls: [:test] do | ||
if Dir.exist?(File.expand_path('../lib', __FILE__)) | ||
require 'coveralls/rake/task' | ||
Coveralls::RakeTask.new | ||
Rake::Task['coveralls:push'].invoke | ||
else | ||
puts 'Skipping reporting to coveralls. Module has no lib dir' | ||
end | ||
end | ||
|
||
sh_scripts = %w( | ||
templates/jenkins-slave-run.erb | ||
) | ||
desc 'Syntax check shellscripts' | ||
task :shellcheck do | ||
sh "shellcheck #{sh_scripts.join(' ')}" do |ok, res| | ||
unless ok | ||
# exit without verbose rake error message | ||
exit res.exitstatus | ||
desc "Print supported beaker sets" | ||
task 'beaker_sets', [:directory] do |t, args| | ||
directory = args[:directory] | ||
|
||
metadata = JSON.load(File.read('metadata.json')) | ||
|
||
(metadata['operatingsystem_support'] || []).each do |os| | ||
(os['operatingsystemrelease'] || []).each do |release| | ||
if directory | ||
beaker_set = "#{directory}/#{os['operatingsystem'].downcase}-#{release}" | ||
else | ||
beaker_set = "#{os['operatingsystem'].downcase}-#{release}-x64" | ||
end | ||
|
||
filename = "spec/acceptance/nodesets/#{beaker_set}.yml" | ||
|
||
puts beaker_set if File.exists? filename | ||
end | ||
end | ||
end | ||
|
||
default_tasks = [ | ||
:lint, | ||
:validate, | ||
:parallel_spec, | ||
:rubocop | ||
] | ||
|
||
task :default => default_tasks | ||
begin | ||
require 'github_changelog_generator/task' | ||
GitHubChangelogGenerator::RakeTask.new :changelog do |config| | ||
version = (Blacksmith::Modulefile.new).version | ||
config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/ | ||
config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\nEach new release typically also includes the latest modulesync defaults.\nThese should not affect the functionality of the module." | ||
config.exclude_labels = %w{duplicate question invalid wontfix wont-fix modulesync skip-changelog} | ||
config.user = 'voxpupuli' | ||
metadata_json = File.join(File.dirname(__FILE__), 'metadata.json') | ||
metadata = JSON.load(File.read(metadata_json)) | ||
config.project = metadata['name'] | ||
end | ||
rescue LoadError | ||
end | ||
# vim: syntax=ruby |