ci_tasks 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|