Skip to content
This repository has been archived by the owner on May 10, 2021. It is now read-only.

Commit

Permalink
Adding coverage reporter (#130)
Browse files Browse the repository at this point in the history
* adding publisher definitions for github status reporter

* adding conditional logic for master/compare coverage actions

* removing rubocop pinning

* first round of rubocop fixes, test fixes

* fixing failures

* adding .rubocop_todo.yml

* pinning rubocop ruby version support

* removing weird pending element

* Revert "removing weird pending element"

This reverts commit cdde933.

* moving test back to pending
  • Loading branch information
citizenken authored and JustMcAfee committed Dec 20, 2017
1 parent e502c08 commit b02d75b
Show file tree
Hide file tree
Showing 26 changed files with 272 additions and 181 deletions.
8 changes: 8 additions & 0 deletions .rubocop.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
AllCops:
TargetRubyVersion: 2.1.5

inherit_from: .rubocop_todo.yml

#######
# WIP These should all go back to defaults at some point
Metrics/AbcSize:
Expand Down Expand Up @@ -33,3 +38,6 @@ Style/VariableName:

Style/SymbolProc:
IgnoredMethods: new

Style/FrozenStringLiteralComment:
Enabled: false
59 changes: 59 additions & 0 deletions .rubocop_todo.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2017-12-13 09:51:35 -0500 using RuboCop version 0.52.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.

# Offense count: 6
Lint/UriEscapeUnescape:
Exclude:
- 'lib/jenkins_pipeline_builder/promotion.rb'

# Offense count: 1
Lint/Void:
Exclude:
- 'lib/jenkins_pipeline_builder.rb'

# Offense count: 132
# Configuration parameters: CountComments, ExcludedMethods.
Metrics/BlockLength:
Max: 420

# Offense count: 5
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect.
Performance/HashEachMethods:
Exclude:
- 'lib/jenkins_pipeline_builder/cli/list.rb'
- 'lib/jenkins_pipeline_builder/compiler.rb'
- 'lib/jenkins_pipeline_builder/extensions.rb'
- 'lib/jenkins_pipeline_builder/utils.rb'

# Offense count: 1
# Configuration parameters: MinBodyLength.
Style/GuardClause:
Exclude:
- 'lib/jenkins_pipeline_builder/pull_request_generator.rb'

# Offense count: 1
Style/MultipleComparison:
Exclude:
- 'lib/jenkins_pipeline_builder/extensions/publishers.rb'

# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect, EnforcedStyle.
# SupportedStyles: predicate, comparison
Style/NumericPredicate:
Exclude:
- 'spec/**/*'
- 'lib/jenkins_pipeline_builder/compiler.rb'
- 'lib/jenkins_pipeline_builder/module_registry.rb'
- 'lib/jenkins_pipeline_builder/remote_dependencies.rb'

Layout/EmptyLinesAroundArguments:
Exclude:
- 'lib/jenkins_pipeline_builder/extensions/triggers.rb'

2 changes: 1 addition & 1 deletion Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -45,4 +45,4 @@ namespace :doc do
end
end

task default: [:spec, :rubocop]
task default: %i[spec rubocop]
30 changes: 15 additions & 15 deletions jenkins_pipeline_builder.gemspec
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# coding: utf-8

lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'jenkins_pipeline_builder/version'
Expand All @@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
spec.name = 'jenkins_pipeline_builder'
spec.version = JenkinsPipelineBuilder::VERSION
spec.authors = ['Igor Moochnick', 'Joseph Henrich']
spec.email = %w([email protected] [email protected])
spec.email = %w[[email protected] [email protected]]
spec.description = 'This is a simple and easy-to-use Jenkins Pipeline generator with features focused on
automating Job & Pipeline creation from the YAML files checked-in with your application source code'
spec.summary = 'This gem is will boostrap your Jenkins pipelines'
Expand All @@ -21,27 +21,27 @@ automating Job & Pipeline creation from the YAML files checked-in with your appl

ENV['NOKOGIRI_USE_SYSTEM_LIBRARIES'] = 'true'

spec.add_dependency 'nokogiri', '~> 1.6.0'
spec.add_dependency 'activesupport', '~> 4.2.6'
spec.add_dependency 'jenkins_api_client', '~> 1.0.0'
spec.add_dependency 'minitar'
spec.add_dependency 'mixlib-shellout', '= 2.2.7' # maintaining backwards compatibility with ruby 2.1.5
spec.add_dependency 'nokogiri', '~> 1.6.0'
spec.add_dependency 'thor', '>= 0.18.0'
spec.add_dependency 'activesupport', '~> 4.2.6'
spec.add_dependency 'minitar'

spec.add_development_dependency 'rake'
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'bump'
spec.add_development_dependency 'json'
spec.add_development_dependency 'gem-release'
spec.add_development_dependency 'byebug'
spec.add_development_dependency 'simplecov'
spec.add_development_dependency 'simplecov-rcov'
spec.add_development_dependency 'kwalify'
spec.add_development_dependency 'equivalent-xml'
spec.add_development_dependency 'yard-thor'
spec.add_development_dependency 'yard'
spec.add_development_dependency 'gem-release'
spec.add_development_dependency 'json'
spec.add_development_dependency 'kwalify'
spec.add_development_dependency 'pry'
spec.add_development_dependency 'rake'
spec.add_development_dependency 'rspec', '~> 3.0'
spec.add_development_dependency 'rspec_junit_formatter'
spec.add_development_dependency 'rubocop'
spec.add_development_dependency 'simplecov'
spec.add_development_dependency 'simplecov-rcov'
spec.add_development_dependency 'webmock', '~> 1.0'
spec.add_development_dependency 'rubocop', '= 0.40.0'
spec.add_development_dependency 'yard'
spec.add_development_dependency 'yard-thor'
end
8 changes: 4 additions & 4 deletions lib/jenkins_pipeline_builder/cli/helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class << self
attr_accessor :jenkins_api_creds
end

DEFAULT_FILE_FORMATS = %w(rb json yml yaml).freeze
DEFAULT_FILE_FORMATS = %w[rb json yml yaml].freeze

# Sets up the credentials and initializes the Jenkins Pipeline Builder
#
Expand Down Expand Up @@ -68,7 +68,7 @@ def self.process_creds(options)
else
msg = 'Credentials are not set. Please pass them as parameters or'
msg << ' set them in the default credentials file'
$stderr.puts msg
warn msg
exit 1
end
end
Expand All @@ -87,12 +87,12 @@ def self.process_cli_creds(options)
self.jenkins_api_creds = {}.with_indifferent_access.merge options
if jenkins_api_creds[:server] =~ Resolv::AddressRegex
jenkins_api_creds[:server_ip] = jenkins_api_creds.delete :server
elsif jenkins_api_creds[:server] =~ URI.regexp
elsif jenkins_api_creds[:server] =~ URI::DEFAULT_PARSER.make_regexp
jenkins_api_creds[:server_url] = jenkins_api_creds.delete :server
else
msg = "server given (#{jenkins_api_creds[:server]}) is neither a URL nor an IP."
msg << ' Please pass either a valid IP address or valid URI'
$stderr.puts msg
warn msg
exit 1
end
end
Expand Down
8 changes: 3 additions & 5 deletions lib/jenkins_pipeline_builder/compiler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def get_settings_bag(item_bag, settings_bag = {})
def compile_job(item, settings = {})
new_item = compile(item, settings)
[true, new_item]
rescue => e
rescue StandardError => e
return [false, [e.message]]
end

Expand All @@ -70,9 +70,7 @@ def handle_enable(item, settings)
if enable_block_present? item
enabled_switch = resolve_value(item[:enabled], settings)
return {} if enabled_switch == 'false'
if enabled_switch != 'true'
raise "Invalid value for #{item[:enabled]}: #{enabled_switch}"
end
raise "Invalid value for #{item[:enabled]}: #{enabled_switch}" if enabled_switch != 'true'
if item[:parameters].is_a? Hash
item = item.merge item[:parameters]
item.delete :parameters
Expand All @@ -92,7 +90,7 @@ def enable_block_present?(item)

def compile_string(item, settings)
resolve_value(item, settings)
rescue => e
rescue StandardError => e
raise "Failed to resolve #{item} because: #{e.message}"
end

Expand Down
16 changes: 8 additions & 8 deletions lib/jenkins_pipeline_builder/extension_set.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
module JenkinsPipelineBuilder
class ExtensionSet
SET_METHODS = [
:name,
:plugin_id,
:jenkins_name,
:description,
:announced,
:type
SET_METHODS = %i[
name
plugin_id
jenkins_name
description
announced
type
].freeze

SET_METHODS.each do |method_name|
Expand Down Expand Up @@ -113,7 +113,7 @@ def version(ver, &block)
yield block
end

[:after, :before].each do |method_name|
%i[after before].each do |method_name|
define_method method_name do |version: '0', &block|
if @min_version
version = @min_version
Expand Down
10 changes: 6 additions & 4 deletions lib/jenkins_pipeline_builder/extensions.rb
Original file line number Diff line number Diff line change
Expand Up @@ -59,10 +59,12 @@ def valid?
def execute(value, n_xml)
errors = check_parameters value
raise ArgumentError, errors.join("\n") if errors.any?
raise ArgumentError, %(Extension #{name} has no valid path
Check ModuleRegistry#entries and the definition of the extension
Note: job_attributes have no implicit path and must be set in the builder
).squeeze(' ') unless path
unless path
raise ArgumentError, %(Extension #{name} has no valid path
Check ModuleRegistry#entries and the definition of the extension
Note: job_attributes have no implicit path and must be set in the builder
).squeeze(' ')
end

n_builders = n_xml.xpath(path).first
n_builders.instance_exec(value, &before) if before
Expand Down
30 changes: 16 additions & 14 deletions lib/jenkins_pipeline_builder/extensions/build_steps.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,27 +54,29 @@
end
end
else
configs(class: 'empty-list') {}
configs(class: 'empty-list'){}
end

projects state[:name]
condition 'ALWAYS'
triggerWithNoParameters false

block do
buildStepFailureThreshold do
state.generate_for_threshold(self,
state.resolve_block_condition(:build_step_failure_threshold) || :failure)
end
unstableThreshold do
state.generate_for_threshold(self,
state.resolve_block_condition(:unstable_threshold) || :unstable)
end
failureThreshold do
state.generate_for_threshold(self,
state.resolve_block_condition(:failure_threshold) || :failure)
if state.block_condition?
block do
buildStepFailureThreshold do
state.generate_for_threshold(self,
state.resolve_block_condition(:build_step_failure_threshold) || :failure)
end
unstableThreshold do
state.generate_for_threshold(self,
state.resolve_block_condition(:unstable_threshold) || :unstable)
end
failureThreshold do
state.generate_for_threshold(self,
state.resolve_block_condition(:failure_threshold) || :failure)
end
end
end if state.block_condition?
end

buildAllNodesWithLabel false
end
Expand Down
Loading

0 comments on commit b02d75b

Please sign in to comment.