Add rakefile for testers and maintainers
This commit is contained in:
parent
4af61ed4d7
commit
c38f8de4d1
6
Gemfile
6
Gemfile
@ -1,9 +1,13 @@
|
||||
source 'https://rubygems.org'
|
||||
|
||||
group :rake do
|
||||
gem 'rake'
|
||||
gem 'tomlrb'
|
||||
end
|
||||
|
||||
group :lint do
|
||||
gem 'foodcritic', '~> 5.0'
|
||||
gem 'rubocop', '~> 0.34'
|
||||
gem 'rake'
|
||||
end
|
||||
|
||||
group :unit do
|
||||
|
19
MAINTAINERS.md
Normal file
19
MAINTAINERS.md
Normal file
@ -0,0 +1,19 @@
|
||||
<!-- This is a generated file. Please do not edit directly -->
|
||||
|
||||
# Maintainers
|
||||
This file lists how this cookbook project is maintained. When making changes to the system, this
|
||||
file tells you who needs to review your patch - you need a simple majority of maintainers
|
||||
for the relevant subsystems to provide a :+1: on your pull request. Additionally, you need
|
||||
to not receive a veto from a Lieutenant or the Project Lead.
|
||||
|
||||
Check out [How Cookbooks are Maintained](https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD)
|
||||
for details on the process and how to become a maintainer or the project lead.
|
||||
|
||||
# Project Maintainer
|
||||
* [Tim Smith](https://github.com/tas50)
|
||||
|
||||
# Maintainers
|
||||
* [Jennifer Davis](https://github.com/sigje)
|
||||
* [Sean OMeara](https://github.com/someara)
|
||||
* [Tim Smith](https://github.com/tas50)
|
||||
* [Thom May](https://github.com/thommay)
|
46
MAINTAINERS.toml
Normal file
46
MAINTAINERS.toml
Normal file
@ -0,0 +1,46 @@
|
||||
#
|
||||
# This file is structured to be consumed by both humans and computers.
|
||||
# It is a TOML document containing Markdown
|
||||
#
|
||||
[Preamble]
|
||||
title = "Maintainers"
|
||||
text = """
|
||||
This file lists how this cookbook project is maintained. When making changes to the system, this
|
||||
file tells you who needs to review your patch - you need a simple majority of maintainers
|
||||
for the relevant subsystems to provide a :+1: on your pull request. Additionally, you need
|
||||
to not receive a veto from a Lieutenant or the Project Lead.
|
||||
|
||||
Check out [How Cookbooks are Maintained](https://github.com/chef-cookbooks/community_cookbook_documentation/blob/master/CONTRIBUTING.MD)
|
||||
for details on the process and how to become a maintainer or the project lead.
|
||||
"""
|
||||
|
||||
[Org]
|
||||
[Org.Components]
|
||||
[Org.Components.Core]
|
||||
title = "Project Maintainer"
|
||||
|
||||
lieutenant = 'tas50'
|
||||
|
||||
maintainers = [
|
||||
'sigje',
|
||||
'someara',
|
||||
'tas50',
|
||||
'thommay'
|
||||
]
|
||||
|
||||
[people]
|
||||
[people.sigje]
|
||||
name = "Jennifer Davis"
|
||||
github = "sigje"
|
||||
|
||||
[people.someara]
|
||||
name = "Sean OMeara"
|
||||
github = "someara"
|
||||
|
||||
[people.tas50]
|
||||
name = "Tim Smith"
|
||||
github = "tas50"
|
||||
|
||||
[people.thommay]
|
||||
name = "Thom May"
|
||||
github = "thommay"
|
61
Rakefile
Normal file
61
Rakefile
Normal file
@ -0,0 +1,61 @@
|
||||
require 'rspec/core/rake_task'
|
||||
require 'rubocop/rake_task'
|
||||
require 'foodcritic'
|
||||
require 'kitchen'
|
||||
|
||||
require_relative 'tasks/maintainers'
|
||||
|
||||
# Style tests. Rubocop and Foodcritic
|
||||
namespace :style do
|
||||
desc 'Run Ruby style checks'
|
||||
RuboCop::RakeTask.new(:ruby)
|
||||
|
||||
desc 'Run Chef style checks'
|
||||
FoodCritic::Rake::LintTask.new(:chef) do |t|
|
||||
t.options = {
|
||||
fail_tags: ['any'],
|
||||
tags: ['~FC005']
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Run all style checks'
|
||||
task style: ['style:chef', 'style:ruby']
|
||||
|
||||
# Rspec and ChefSpec
|
||||
desc 'Run ChefSpec examples'
|
||||
RSpec::Core::RakeTask.new(:spec)
|
||||
|
||||
# Integration tests. Kitchen.ci
|
||||
namespace :integration do
|
||||
desc 'Run Test Kitchen with Vagrant'
|
||||
task :vagrant do
|
||||
Kitchen.logger = Kitchen.default_file_logger
|
||||
Kitchen::Config.new.instances.each do |instance|
|
||||
instance.test(:always)
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Run Test Kitchen with cloud plugins'
|
||||
task :cloud do
|
||||
run_kitchen = true
|
||||
if ENV['TRAVIS'] == 'true' && ENV['TRAVIS_PULL_REQUEST'] != 'false'
|
||||
run_kitchen = false
|
||||
end
|
||||
|
||||
if run_kitchen
|
||||
Kitchen.logger = Kitchen.default_file_logger
|
||||
@loader = Kitchen::Loader::YAML.new(project_config: './.kitchen.cloud.yml')
|
||||
config = Kitchen::Config.new(loader: @loader)
|
||||
config.instances.each do |instance|
|
||||
instance.test(:always)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Run all tests on Travis'
|
||||
task travis: ['style', 'spec', 'integration:cloud']
|
||||
|
||||
# Default
|
||||
task default: ['style', 'spec', 'integration:vagrant']
|
76
tasks/maintainers.rb
Normal file
76
tasks/maintainers.rb
Normal file
@ -0,0 +1,76 @@
|
||||
#
|
||||
# Copyright:: Copyright (c) 2015 Chef Software, Inc.
|
||||
# License:: Apache License, Version 2.0
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
|
||||
require 'rake'
|
||||
|
||||
SOURCE = File.join(File.dirname(__FILE__), '..', 'MAINTAINERS.toml')
|
||||
TARGET = File.join(File.dirname(__FILE__), '..', 'MAINTAINERS.md')
|
||||
|
||||
begin
|
||||
require 'tomlrb'
|
||||
task default: 'maintainers:generate'
|
||||
|
||||
namespace :maintainers do
|
||||
desc 'Generate MarkDown version of MAINTAINERS file'
|
||||
task :generate do
|
||||
@toml = Tomlrb.load_file SOURCE
|
||||
out = "<!-- This is a generated file. Please do not edit directly -->\n\n"
|
||||
|
||||
out << preamble
|
||||
out << project_lieutenant
|
||||
out << all_maintainers
|
||||
|
||||
File.open(TARGET, 'w') do |fn|
|
||||
fn.write out
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
rescue LoadError
|
||||
STDERR.puts "\n*** TomlRb not available.\n\n"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def preamble
|
||||
<<-EOL
|
||||
# #{@toml['Preamble']['title']}
|
||||
#{@toml['Preamble']['text']}
|
||||
EOL
|
||||
end
|
||||
|
||||
def project_lieutenant
|
||||
<<-EOL
|
||||
# #{@toml['Org']['Components']['Core']['title']}
|
||||
#{github_link(@toml['Org']['Components']['Core']['lieutenant'])}
|
||||
|
||||
EOL
|
||||
end
|
||||
|
||||
def all_maintainers
|
||||
text = "# Maintainers\n"
|
||||
@toml['Org']['Components']['Core']['maintainers'].each do |m|
|
||||
text << "#{github_link(m)}\n"
|
||||
end
|
||||
text
|
||||
end
|
||||
|
||||
def github_link(person)
|
||||
name = @toml['people'][person]['name']
|
||||
github = @toml['people'][person]['github']
|
||||
"* [#{name}](https://github.com/#{github})"
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user