ci_tasks 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/.rvmrc +2 -0
- data/Gemfile +3 -0
- data/Rakefile +3 -0
- data/Readme.md +29 -0
- data/ci_tasks.gemspec +31 -0
- data/lib/ci_tasks.rb +17 -0
- data/lib/ci_tasks/config.rb +12 -0
- data/lib/ci_tasks/metric_fu.rb +3 -0
- data/lib/ci_tasks/metric_fu/rails.rb +8 -0
- data/lib/ci_tasks/metric_fu/sinatra.rb +9 -0
- data/lib/ci_tasks/railtie.rb +11 -0
- data/lib/ci_tasks/simplecov.rb +5 -0
- data/lib/ci_tasks/simplecov/rails.rb +4 -0
- data/lib/ci_tasks/simplecov/sinatra.rb +19 -0
- data/lib/ci_tasks/tasks/ci.rake +20 -0
- data/lib/ci_tasks/tasks/magic_encoding.rake +6 -0
- data/lib/ci_tasks/tasks/whitespace.rake +65 -0
- data/lib/ci_tasks/version.rb +5 -0
- data/tasks/gemserver.rake +30 -0
- metadata +166 -0
data/.gitignore
ADDED
data/.rvmrc
ADDED
data/Gemfile
ADDED
data/Rakefile
ADDED
data/Readme.md
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
__Using__
|
2
|
+
|
3
|
+
add following in the development, test group in Gemfile
|
4
|
+
|
5
|
+
gem 'rack-test'
|
6
|
+
Add Tasks via Rakefile
|
7
|
+
|
8
|
+
require 'ci_tasks'
|
9
|
+
require 'ci_tasks/metric_fu/sinatra'
|
10
|
+
|
11
|
+
Add to spec_helper.rb
|
12
|
+
require 'ci_tasks/simplecov/sinatra'
|
13
|
+
|
14
|
+
|
15
|
+
For Rails use the rails version of the files at
|
16
|
+
|
17
|
+
require 'ci_tasks/simplecov/rails'
|
18
|
+
require 'ci_tasks/metric_fu/rails'
|
19
|
+
|
20
|
+
__Build__
|
21
|
+
|
22
|
+
Update Gemversion in version.rb, Ensure all files are commited and run
|
23
|
+
rake build
|
24
|
+
__Sample push to gemserver__
|
25
|
+
|
26
|
+
gem inabox pkg/ci-tasks-0.0.1.gem --host http://gemserver.dev
|
27
|
+
|
28
|
+
|
29
|
+
|
data/ci_tasks.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "ci_tasks/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "ci_tasks"
|
7
|
+
s.version = Ci::Tasks::VERSION
|
8
|
+
s.authors = ["Carlos Villela, Rajat Vig, Irfan Shah et al"]
|
9
|
+
s.email = ["opensource@thoughtworks.com"]
|
10
|
+
s.homepage = ""
|
11
|
+
s.summary = %q{CI Tasks}
|
12
|
+
s.description = %q{Common tasks to be executed in Continuous Integration environments. VERY ALPHA!}
|
13
|
+
|
14
|
+
s.rubyforge_project = "ci_tasks"
|
15
|
+
|
16
|
+
s.files = `git ls-files`.split("\n")
|
17
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
18
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
|
21
|
+
s.add_runtime_dependency "rspec"
|
22
|
+
s.add_runtime_dependency "rake"
|
23
|
+
s.add_runtime_dependency "metric_fu"
|
24
|
+
s.add_runtime_dependency "simplecov"
|
25
|
+
s.add_runtime_dependency "fattr"
|
26
|
+
s.add_runtime_dependency "arrayfields"
|
27
|
+
s.add_runtime_dependency "map"
|
28
|
+
s.add_runtime_dependency "magic_encoding"
|
29
|
+
|
30
|
+
s.add_development_dependency "geminabox"
|
31
|
+
end
|
data/lib/ci_tasks.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'ci_tasks/version'
|
2
|
+
|
3
|
+
require 'rake'
|
4
|
+
|
5
|
+
require 'ci_tasks/config'
|
6
|
+
|
7
|
+
if CiTasks::Config.rails?
|
8
|
+
require 'ci_tasks/railtie'
|
9
|
+
else
|
10
|
+
require 'rspec/core/rake_task'
|
11
|
+
require 'rspec/core/version'
|
12
|
+
|
13
|
+
load 'ci_tasks/tasks/ci.rake'
|
14
|
+
load 'ci_tasks/tasks/whitespace.rake'
|
15
|
+
load 'ci_tasks/tasks/magic_encoding.rake'
|
16
|
+
end
|
17
|
+
|
@@ -0,0 +1,8 @@
|
|
1
|
+
begin
|
2
|
+
MetricFu::Configuration.run do |config|
|
3
|
+
config.metrics = [:churn, :stats, :flog, :flay, :reek, :rails_best_practices]
|
4
|
+
config.graphs = [:flog, :flay, :stats, :reek]
|
5
|
+
end
|
6
|
+
rescue LoadError
|
7
|
+
puts 'metric_fu not found: metrics collection and generation disabled'
|
8
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
begin
|
2
|
+
MetricFu::Configuration.run do |config|
|
3
|
+
config.metrics = [:churn, :flog, :flay, :reek]
|
4
|
+
config.graphs = [:flog, :flay, :reek]
|
5
|
+
config.reek = { :dirs_to_reek => ['lib'] }
|
6
|
+
end
|
7
|
+
rescue LoadError
|
8
|
+
puts 'metric_fu not found: metrics collection and generation disabled'
|
9
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'simplecov'
|
2
|
+
|
3
|
+
SimpleCov.adapters.define 'sinatra' do
|
4
|
+
add_filter '/spec/'
|
5
|
+
add_filter '/config/'
|
6
|
+
add_filter '/vendor/'
|
7
|
+
add_filter '/.bundle/'
|
8
|
+
|
9
|
+
add_group 'Models', 'lib/'
|
10
|
+
end
|
11
|
+
|
12
|
+
if ENV["COVERAGE"]
|
13
|
+
SimpleCov.start 'sinatra'
|
14
|
+
|
15
|
+
SimpleCov.at_exit do
|
16
|
+
SimpleCov.result.format!
|
17
|
+
puts "Code coverage: #{SimpleCov.result.covered_percent.round(2)}%"
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
task :set_ci_env do
|
2
|
+
ENV['COVERAGE'] ||= '1'
|
3
|
+
ENV['CC_BUILD_ARTIFACTS'] = 'On'
|
4
|
+
end
|
5
|
+
|
6
|
+
unless CiTasks::Config.rails?
|
7
|
+
desc 'Run all examples'
|
8
|
+
RSpec::Core::RakeTask.new(:spec)
|
9
|
+
end
|
10
|
+
|
11
|
+
namespace :spec do
|
12
|
+
desc 'Run coverage'
|
13
|
+
task :cov => [ 'set_ci_env', 'spec' ]
|
14
|
+
end
|
15
|
+
|
16
|
+
ci_tasks = [ 'set_ci_env', 'spec', 'metrics:all']
|
17
|
+
ci_tasks.push 'jasmine:ci', 'spinach' if CiTasks::Config.rails?
|
18
|
+
|
19
|
+
desc 'Runs specs, coverage, features and metrics. Should be run on the ci loop'
|
20
|
+
task :ci => ci_tasks
|
@@ -0,0 +1,65 @@
|
|
1
|
+
class WhitespaceCheck < Struct.new(:pattern, :message)
|
2
|
+
def lines
|
3
|
+
@lines ||= []
|
4
|
+
end
|
5
|
+
|
6
|
+
def check(line, number)
|
7
|
+
lines << number if line =~ pattern
|
8
|
+
end
|
9
|
+
|
10
|
+
def error_for(file)
|
11
|
+
"#{file} #{message} on lines #{lines.join(',')}" unless lines.empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.whitespace_errors_for(files)
|
15
|
+
@whitespace_errors ||= files.inject([]) do |errors, filename|
|
16
|
+
whitespace_checks = [
|
17
|
+
WhitespaceCheck.new(/\s+\n$/, "has EOL spaces"),
|
18
|
+
WhitespaceCheck.new(/\r/, "has DOS EOL characters"),
|
19
|
+
WhitespaceCheck.new(/\t/, "has tab characters")
|
20
|
+
]
|
21
|
+
|
22
|
+
File.readlines(filename).each_with_index do |line, number|
|
23
|
+
whitespace_checks.each {|w| w.check(line, number+1)}
|
24
|
+
end
|
25
|
+
|
26
|
+
errors += whitespace_checks.map {|m| m.error_for(filename)}.compact
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
desc "Checks for whitespace problems"
|
32
|
+
task :whitespace do
|
33
|
+
INCLUDE = [
|
34
|
+
/\.rb$/,
|
35
|
+
/\.erb$/,
|
36
|
+
/\.haml$/,
|
37
|
+
/\.js$/,
|
38
|
+
/\.yml$/,
|
39
|
+
/\.slim$/,
|
40
|
+
/\.css$/,
|
41
|
+
/\.sass$/,
|
42
|
+
/\.scss$/,
|
43
|
+
/\.gemspec$/,
|
44
|
+
/\.rake$/,
|
45
|
+
/Gemfile$/,
|
46
|
+
/Capfile$/,
|
47
|
+
/Rakefile$/,
|
48
|
+
]
|
49
|
+
EXCLUDE = [
|
50
|
+
/^vendor\//,
|
51
|
+
/^coverage\//,
|
52
|
+
/^tmp\//,
|
53
|
+
]
|
54
|
+
|
55
|
+
files = `git ls-files -c -m -o`.split("\n").select do |f|
|
56
|
+
INCLUDE.any? {|filter| f =~ filter } &&
|
57
|
+
EXCLUDE.none? {|filter| f =~ filter }
|
58
|
+
end
|
59
|
+
|
60
|
+
errors = WhitespaceCheck.whitespace_errors_for(files)
|
61
|
+
if errors.any?
|
62
|
+
puts errors.join("\n")
|
63
|
+
raise "This project has whitespace errors. Please fix them before proceeding."
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
|
3
|
+
namespace :gem do
|
4
|
+
|
5
|
+
Bundler::GemHelper.install_tasks
|
6
|
+
|
7
|
+
task :server do
|
8
|
+
raise "Please set your GEM_SERVER variable" unless ENV['GEM_SERVER']
|
9
|
+
end
|
10
|
+
|
11
|
+
desc "Push the latest gem to the server"
|
12
|
+
task :push => :server do
|
13
|
+
sh "bundle exec gem inabox #{built_gem_path} --host #{ENV['GEM_SERVER']}"
|
14
|
+
end
|
15
|
+
|
16
|
+
desc "Delete the latest gem from the server"
|
17
|
+
task :delete => :server do
|
18
|
+
sh "curl -X DELETE #{ENV['GEM_SERVER']}/gems/#{built_gem_path.gsub('pkg/','')}"
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "Update the gem (build, delete and push)"
|
22
|
+
task :update => [ :build, :delete, :push ]
|
23
|
+
|
24
|
+
private
|
25
|
+
|
26
|
+
def built_gem_path
|
27
|
+
Dir[File.join("pkg/ci_tasks-*.gem")].sort_by{|f| File.mtime(f)}.last
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ci_tasks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Carlos Villela, Rajat Vig, Irfan Shah et al
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-12-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rspec
|
16
|
+
requirement: &70302789731500 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *70302789731500
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
requirement: &70302789731080 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *70302789731080
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: metric_fu
|
38
|
+
requirement: &70302789730660 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *70302789730660
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: simplecov
|
49
|
+
requirement: &70302789730240 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *70302789730240
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: fattr
|
60
|
+
requirement: &70302789729820 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *70302789729820
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: arrayfields
|
71
|
+
requirement: &70302789729400 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *70302789729400
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: map
|
82
|
+
requirement: &70302789728980 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *70302789728980
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: magic_encoding
|
93
|
+
requirement: &70302789728560 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ! '>='
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *70302789728560
|
102
|
+
- !ruby/object:Gem::Dependency
|
103
|
+
name: geminabox
|
104
|
+
requirement: &70302789728140 !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *70302789728140
|
113
|
+
description: Common tasks to be executed in Continuous Integration environments. VERY
|
114
|
+
ALPHA!
|
115
|
+
email:
|
116
|
+
- opensource@thoughtworks.com
|
117
|
+
executables: []
|
118
|
+
extensions: []
|
119
|
+
extra_rdoc_files: []
|
120
|
+
files:
|
121
|
+
- .gitignore
|
122
|
+
- .rvmrc
|
123
|
+
- Gemfile
|
124
|
+
- Rakefile
|
125
|
+
- Readme.md
|
126
|
+
- ci_tasks.gemspec
|
127
|
+
- lib/ci_tasks.rb
|
128
|
+
- lib/ci_tasks/config.rb
|
129
|
+
- lib/ci_tasks/metric_fu.rb
|
130
|
+
- lib/ci_tasks/metric_fu/rails.rb
|
131
|
+
- lib/ci_tasks/metric_fu/sinatra.rb
|
132
|
+
- lib/ci_tasks/railtie.rb
|
133
|
+
- lib/ci_tasks/simplecov.rb
|
134
|
+
- lib/ci_tasks/simplecov/rails.rb
|
135
|
+
- lib/ci_tasks/simplecov/sinatra.rb
|
136
|
+
- lib/ci_tasks/tasks/ci.rake
|
137
|
+
- lib/ci_tasks/tasks/magic_encoding.rake
|
138
|
+
- lib/ci_tasks/tasks/whitespace.rake
|
139
|
+
- lib/ci_tasks/version.rb
|
140
|
+
- tasks/gemserver.rake
|
141
|
+
homepage: ''
|
142
|
+
licenses: []
|
143
|
+
post_install_message:
|
144
|
+
rdoc_options: []
|
145
|
+
require_paths:
|
146
|
+
- lib
|
147
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
148
|
+
none: false
|
149
|
+
requirements:
|
150
|
+
- - ! '>='
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
|
+
none: false
|
155
|
+
requirements:
|
156
|
+
- - ! '>='
|
157
|
+
- !ruby/object:Gem::Version
|
158
|
+
version: '0'
|
159
|
+
requirements: []
|
160
|
+
rubyforge_project: ci_tasks
|
161
|
+
rubygems_version: 1.8.12
|
162
|
+
signing_key:
|
163
|
+
specification_version: 3
|
164
|
+
summary: CI Tasks
|
165
|
+
test_files: []
|
166
|
+
has_rdoc:
|