ci_tasks 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm_install_on_use_flag=1
2
+ rvm use --create 1.9.3@common-ci-tasks
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,3 @@
1
+ Dir[File.join(File.dirname(__FILE__), 'tasks/*.rake')].each { |rake| load rake }
2
+
3
+ task :default => 'gem:build'
@@ -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
+
@@ -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
@@ -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,12 @@
1
+ module CiTasks
2
+ class Config
3
+ def self.configuration
4
+ rails? ? :rails : :sinatra
5
+ end
6
+
7
+ def self.rails?
8
+ Rails rescue nil
9
+ end
10
+
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ require 'metric_fu'
2
+ require File.expand_path(File.dirname(__FILE__) + '/config')
3
+ require File.expand_path(File.dirname(__FILE__) + "/metric_fu/#{CiTasks::Config.configuration}")
@@ -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,11 @@
1
+ require "rails/railtie"
2
+
3
+ module CiTasks
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ load "ci_tasks/tasks/ci.rake"
7
+ load 'ci_tasks/tasks/whitespace.rake'
8
+ load 'ci_tasks/tasks/magic_encoding.rake'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,5 @@
1
+ if ENV["COVERAGE"]
2
+ require 'simplecov'
3
+ require File.expand_path(File.dirname(__FILE__) + '/config')
4
+ require File.expand_path(File.dirname(__FILE__) + "/simplecov/#{CiTasks::Config.configuration}")
5
+ end
@@ -0,0 +1,4 @@
1
+ SimpleCov.start 'rails' do
2
+ add_filter '/.bundle/'
3
+ end
4
+
@@ -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,6 @@
1
+ require 'magic_encoding'
2
+
3
+ desc "Adds the magic encoding comment (Ruby 1.9) to all Ruby files"
4
+ task :magic_encoding do
5
+ AddMagicComment.process []
6
+ end
@@ -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,5 @@
1
+ module Ci
2
+ module Tasks
3
+ VERSION = "0.1.0"
4
+ end
5
+ 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: