miriamtech-gocd 0.2.7 → 0.2.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d1d722ba99c05bc4ee1fa260006ece0b86f16293ae46962e65032b38c4af3e5f
4
- data.tar.gz: 3aceb0eac5244fa478caaa7893677e33bc8368c72f690127034c14b5a82ccb5d
3
+ metadata.gz: 82b62a9341f4185b558cd884679d276a927590e9bf21441d5d48ba3a76008263
4
+ data.tar.gz: c65cf31ead5aeb01ac0203e9868e6567df69b276ebab508ecd4cf22cb510f5be
5
5
  SHA512:
6
- metadata.gz: df45c585d2e5629dfd6c6d6c0a0aa60fc89f3a7be0d358fd8e1cbdb20a28615824c46b831aec4ac9a2566b75f20b1c3f2ef84541455b02ba4255f9a361880e2f
7
- data.tar.gz: 194f1632e39f2b5a463b48aad89f1150c7dce5b534dbf0152b2e6ed8c02d7a19e572056cf514a6d00474c1185a2a2ab6126542c497927dc5c09b4bcb01e67cf2
6
+ metadata.gz: 29cd1f5d5eb989ab00257bbd0723c1467ac37e4bede60cf6d5f44b4333dd993f1cc0aa03ec5db834729426c890cb694065d91abf1c7ec7ad6ce740ed5ff49f0a
7
+ data.tar.gz: b3f67cbbf2ccafab37e63315bf5d589b55a8d9df92ead65cc53cfb87a4e1ab9028067f61d40fe288ad222ef0a45d849ad2feb1a258307c968a999be22da98dcb
data/.gitignore CHANGED
@@ -6,4 +6,4 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
- Gemfile.lock
9
+ /vendor/bundle
data/.rubocop.yml ADDED
@@ -0,0 +1,70 @@
1
+ require:
2
+ - rubocop-minitest
3
+
4
+ AllCops:
5
+ Exclude:
6
+ - '**/bin/*'
7
+ - '**/schema.rb'
8
+ - 'node_modules/**/*'
9
+ - 'vendor/bundle/**/*'
10
+
11
+ Layout/EmptyLineAfterGuardClause:
12
+ Enabled: false
13
+
14
+ Layout/MultilineArrayLineBreaks:
15
+ Enabled: true
16
+
17
+ Layout/MultilineHashKeyLineBreaks:
18
+ Enabled: true
19
+
20
+ Layout/MultilineMethodArgumentLineBreaks:
21
+ Enabled: true
22
+
23
+ Lint/AssignmentInCondition:
24
+ Enabled: false
25
+
26
+ Lint/UnusedBlockArgument:
27
+ AutoCorrect: false
28
+
29
+ Lint/UnusedMethodArgument:
30
+ AutoCorrect: false
31
+
32
+ Metrics/AbcSize:
33
+ Enabled: false
34
+
35
+ Metrics/CyclomaticComplexity:
36
+ Enabled: false
37
+
38
+ Metrics/ClassLength:
39
+ Exclude:
40
+ - test/**/*
41
+
42
+ Metrics/MethodLength:
43
+ Exclude:
44
+ - test/**/*
45
+
46
+ Naming/HeredocDelimiterNaming:
47
+ Enabled: false
48
+
49
+ Style/Documentation:
50
+ Enabled: false
51
+
52
+ Style/FrozenStringLiteralComment:
53
+ Enabled: false
54
+
55
+ Style/HashSyntax:
56
+ Exclude:
57
+ - Rakefile
58
+
59
+ Style/SymbolArray:
60
+ Exclude:
61
+ - Rakefile
62
+
63
+ Style/TrailingCommaInArguments:
64
+ EnforcedStyleForMultiline: comma
65
+
66
+ Style/TrailingCommaInArrayLiteral:
67
+ EnforcedStyleForMultiline: comma
68
+
69
+ Style/TrailingCommaInHashLiteral:
70
+ EnforcedStyleForMultiline: comma
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in miriamtech-gocd.gemspec
4
4
  gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,56 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ miriamtech-gocd (0.2.8)
5
+ rake (>= 10.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ ast (2.4.2)
11
+ diff-lcs (1.4.4)
12
+ minitest (5.11.3)
13
+ parallel (1.20.1)
14
+ parser (3.0.1.0)
15
+ ast (~> 2.4.1)
16
+ rainbow (3.0.0)
17
+ rake (13.0.3)
18
+ regexp_parser (2.1.1)
19
+ rexml (3.2.5)
20
+ rspec-expectations (3.9.2)
21
+ diff-lcs (>= 1.2.0, < 2.0)
22
+ rspec-support (~> 3.9.0)
23
+ rspec-mocks (3.9.1)
24
+ diff-lcs (>= 1.2.0, < 2.0)
25
+ rspec-support (~> 3.9.0)
26
+ rspec-support (3.9.3)
27
+ rubocop (1.13.0)
28
+ parallel (~> 1.10)
29
+ parser (>= 3.0.0.0)
30
+ rainbow (>= 2.2.2, < 4.0)
31
+ regexp_parser (>= 1.8, < 3.0)
32
+ rexml
33
+ rubocop-ast (>= 1.2.0, < 2.0)
34
+ ruby-progressbar (~> 1.7)
35
+ unicode-display_width (>= 1.4.0, < 3.0)
36
+ rubocop-ast (1.4.1)
37
+ parser (>= 2.7.1.5)
38
+ rubocop-minitest (0.11.1)
39
+ rubocop (>= 0.90, < 2.0)
40
+ ruby-progressbar (1.11.0)
41
+ unicode-display_width (2.0.0)
42
+
43
+ PLATFORMS
44
+ ruby
45
+
46
+ DEPENDENCIES
47
+ bundler (~> 2.0)
48
+ minitest (~> 5.0)
49
+ miriamtech-gocd!
50
+ rspec-expectations
51
+ rspec-mocks
52
+ rubocop
53
+ rubocop-minitest
54
+
55
+ BUNDLED WITH
56
+ 2.0.2
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
3
 
4
4
  Rake::TestTask.new(:test) do |t|
5
- t.libs << "test"
6
- t.libs << "lib"
7
- t.test_files = FileList["test/**/*_test.rb"]
5
+ t.libs << 'test'
6
+ t.libs << 'lib'
7
+ t.test_files = FileList['test/**/*_test.rb']
8
8
  end
9
9
 
10
10
  task :default => :test
data/bin/rubocop ADDED
@@ -0,0 +1,29 @@
1
+ #!/usr/bin/env ruby2.5
2
+ # frozen_string_literal: true
3
+
4
+ #
5
+ # This file was generated by Bundler.
6
+ #
7
+ # The application 'rubocop' is installed as part of a gem, and
8
+ # this file is here to facilitate running it.
9
+ #
10
+
11
+ require "pathname"
12
+ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
+ Pathname.new(__FILE__).realpath)
14
+
15
+ bundle_binstub = File.expand_path("../bundle", __FILE__)
16
+
17
+ if File.file?(bundle_binstub)
18
+ if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
+ load(bundle_binstub)
20
+ else
21
+ abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
+ Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
+ end
24
+ end
25
+
26
+ require "rubygems"
27
+ require "bundler/setup"
28
+
29
+ load Gem.bin_path("rubocop", "rubocop")
@@ -1,2 +1,2 @@
1
- require "miriamtech/gocd/version"
2
- require "miriamtech/gocd/dsl"
1
+ require 'miriamtech/gocd/version'
2
+ require 'miriamtech/gocd/dsl'
@@ -1,17 +1,15 @@
1
1
  module MiriamTech
2
2
  module GoCD
3
3
  module DSL
4
- def capture_artifacts(prefix = project_name, workdir:, path:, &block)
4
+ def capture_artifacts(prefix = project_name, workdir:, path:)
5
5
  with_artifacts_volume(prefix) do |volume_name|
6
- begin
7
6
  yield "-v #{volume_name}:#{workdir}/#{path}"
8
- ensure
9
- copy_artifacts_from_volume(volume_name, local_path: path)
10
- end
7
+ ensure
8
+ copy_artifacts_from_volume(volume_name, local_path: path)
11
9
  end
12
10
  end
13
11
 
14
- def with_artifacts_volume(prefix = project_name, &block)
12
+ def with_artifacts_volume(prefix = project_name)
15
13
  artifacts_volume = sanitized_volume_name("#{prefix}#{build_tag}")
16
14
  docker "volume create #{artifacts_volume}"
17
15
  yield artifacts_volume
@@ -20,7 +18,7 @@ module MiriamTech
20
18
  end
21
19
 
22
20
  def copy_artifacts_from_volume(volume, local_path:)
23
- container_id = `docker create -v #{volume}:/artifacts_volume #{WORKER_IMAGE} cp -a /artifacts_volume /artifacts_tmp`.chomp
21
+ container_id = `docker create -v #{volume}:/artifacts #{WORKER_IMAGE} cp -a /artifacts /artifacts_tmp`.chomp
24
22
  begin
25
23
  docker "start -i #{container_id}"
26
24
  cd root_path do
@@ -34,7 +32,7 @@ module MiriamTech
34
32
  private
35
33
 
36
34
  def sanitized_volume_name(name)
37
- name.gsub(/[^-_\.A-Za-z0-9]/, '_')
35
+ name.gsub(/[^-_.A-Za-z0-9]/, '_')
38
36
  end
39
37
  end
40
38
  end
@@ -1,5 +1,6 @@
1
1
  module MiriamTech
2
2
  module GoCD
3
+ FALSY_ENV_VALUES = (%w[0 f false n no] + ['']).freeze
3
4
  module DSL
4
5
  def project_name(env = ENV)
5
6
  (env['GO_PIPELINE_NAME'] || root_path.basename.to_s).downcase
@@ -13,6 +14,13 @@ module MiriamTech
13
14
  sh "docker #{string}"
14
15
  end
15
16
 
17
+ def docker_build_arguments(env = ENV)
18
+ args = ['--force-rm']
19
+ no_cache_arg = env['DOCKER_BUILD_NO_CACHE']
20
+ args << '--no-cache' if no_cache_arg && !FALSY_ENV_VALUES.include?(no_cache_arg)
21
+ args
22
+ end
23
+
16
24
  def docker_compose(string)
17
25
  cd root_path do
18
26
  sh "docker-compose -p #{project_name} -f docker-compose.yml #{string}"
@@ -22,10 +30,12 @@ module MiriamTech
22
30
  private
23
31
 
24
32
  def generate_build_tag(env)
25
- if revision = env['GO_PIPELINE_COUNTER']
26
- @build_tag =":#{revision}"
33
+ revision = env['GO_PIPELINE_COUNTER']
34
+ if revision
35
+ @build_tag = revision ? ":#{revision}" : ''
27
36
  else
28
- @build_tag = ""
37
+ @build_tag = ''
38
+ ''
29
39
  end
30
40
  end
31
41
  end
@@ -5,4 +5,10 @@ require_relative 'lambda'
5
5
  require_relative 'paths'
6
6
  require_relative 'tasks'
7
7
 
8
- self.extend MiriamTech::GoCD::DSL
8
+ # Add our DSL methods to the top level namespace without polluting the Object inheritance tree.
9
+ # This technique comes from `rake`, see e.g.
10
+ # https://github.com/ruby/rake/blob/11973e8d31f29aee2e40d874206c9240956f86ed/lib/rake/dsl_definition.rb#L195
11
+ #
12
+ # rubocop:disable Style/MixinUsage
13
+ extend MiriamTech::GoCD::DSL
14
+ # rubocop:enable Style/MixinUsage
@@ -1,7 +1,7 @@
1
1
  module MiriamTech
2
2
  module GoCD
3
3
  module DSL
4
- WORKER_IMAGE = 'debian:buster'
4
+ WORKER_IMAGE = 'debian:buster'.freeze
5
5
 
6
6
  def pull(image_name)
7
7
  docker "pull #{image_name}#{build_tag}"
@@ -17,14 +17,13 @@ module MiriamTech
17
17
  end
18
18
 
19
19
  def cleanup_old_images(image_name, number_to_keep)
20
- revision_number = ENV["GO_PIPELINE_COUNTER"].to_i
20
+ revision_number = ENV['GO_PIPELINE_COUNTER'].to_i
21
21
  return unless revision_number > number_to_keep
22
22
  images = `docker images --format "{{.Repository}}:{{.Tag}}" #{image_name}`.split(/\s+/)
23
23
  images.each do |image|
24
24
  next unless image.match(/:(\d+)\z/)
25
- if $1.to_i < revision_number - number_to_keep
26
- docker "image rm #{image}"
27
- end
25
+ next unless Regexp.last_match(1).to_i < revision_number - number_to_keep
26
+ docker "image rm #{image}"
28
27
  end
29
28
  end
30
29
  end
@@ -6,10 +6,11 @@ module MiriamTech
6
6
  def root_path
7
7
  cwd = Pathname.new(File.expand_path('.'))
8
8
  path = Pathname.new(cwd)
9
- begin
9
+ loop do
10
+ break if path.root?
10
11
  return path if path.join('Dockerfile').exist?
11
12
  path = path.parent
12
- end until path.root?
13
+ end
13
14
  cwd
14
15
  end
15
16
 
@@ -4,9 +4,12 @@ require 'rake/clean'
4
4
  module MiriamTech
5
5
  module GoCD
6
6
  module DSL
7
+ # rubocop:disable Style/HashSyntax, Style/SymbolArray, Metrics/MethodLength
8
+
7
9
  def define_gocd_tasks(
8
10
  image_name,
9
- revisions_to_keep: 10)
11
+ revisions_to_keep: 10
12
+ )
10
13
 
11
14
  task :default => [:test]
12
15
  task :full => [:clobber, :build]
@@ -15,17 +18,17 @@ module MiriamTech
15
18
  ENV['BUILD_TAG'] = build_tag
16
19
  end
17
20
 
18
- CLEAN.add(root_path + 'test/reports')
21
+ CLEAN.add("#{root_path}/test/reports")
19
22
  task :clean => [:environment]
20
23
  task :clobber => [:environment, :cleanup_old_images]
21
24
 
22
25
  if compose_file.exist?
23
26
  task :clean do
24
- docker_compose "stop"
27
+ docker_compose 'stop'
25
28
  end
26
29
 
27
30
  task :clobber do
28
- docker_compose "rm -fv"
31
+ docker_compose 'rm -fv'
29
32
  end
30
33
  end
31
34
 
@@ -34,7 +37,7 @@ module MiriamTech
34
37
  end
35
38
 
36
39
  task :build => :environment do
37
- docker "build --force-rm -t #{image_name}#{build_tag} #{root_path}"
40
+ docker "build #{docker_build_arguments.join(' ')} -t #{image_name}#{build_tag} #{root_path}"
38
41
  end
39
42
 
40
43
  task :test => :environment
@@ -53,6 +56,8 @@ module MiriamTech
53
56
  docker("run -it --rm #{image_name} bash")
54
57
  end
55
58
  end
59
+
60
+ # rubocop:enable Style/HashSyntax, Style/SymbolArray, Metrics/MethodLength
56
61
  end
57
62
  end
58
63
  end
@@ -1,5 +1,5 @@
1
1
  module MiriamTech
2
2
  module GoCD
3
- VERSION = "0.2.7"
3
+ VERSION = '0.2.8'.freeze
4
4
  end
5
5
  end
@@ -1,35 +1,38 @@
1
- lib = File.expand_path("lib", __dir__)
1
+ lib = File.expand_path('lib', __dir__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require "miriamtech/gocd/version"
3
+ require 'miriamtech/gocd/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "miriamtech-gocd"
6
+ spec.name = 'miriamtech-gocd'
7
7
  spec.version = MiriamTech::GoCD::VERSION
8
- spec.authors = ["Ken Treis"]
9
- spec.email = ["ken@miriamtech.com"]
8
+ spec.authors = ['Ken Treis']
9
+ spec.email = ['ken@miriamtech.com']
10
10
 
11
- spec.summary = %q{Utilities for building apps in Docker containers with GoCD}
12
- spec.homepage = "https://www.miriamtech.com"
11
+ spec.summary = 'Utilities for building apps in Docker containers with GoCD'
12
+ spec.homepage = 'https://www.miriamtech.com'
13
13
 
14
- spec.metadata["allowed_push_host"] = "https://rubygems.org"
14
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
15
15
 
16
- spec.metadata["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = "https://github.com/miriamtech/gocd"
18
- spec.metadata["changelog_uri"] = "https://github.com/miriamtech/gocd/blob/master/CHANGELOG.md"
16
+ spec.metadata['homepage_uri'] = spec.homepage
17
+ spec.metadata['source_code_uri'] = 'https://github.com/miriamtech/gocd'
18
+ spec.metadata['changelog_uri'] = 'https://github.com/miriamtech/gocd/blob/master/CHANGELOG.md'
19
19
 
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
22
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
23
23
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
24
24
  end
25
- spec.bindir = "exe"
25
+ spec.bindir = 'exe'
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
- spec.require_paths = ["lib"]
27
+ spec.require_paths = ['lib']
28
28
 
29
- spec.add_dependency "rake", ">= 10.0"
29
+ spec.required_ruby_version = '~> 2.5'
30
+ spec.add_dependency 'rake', '>= 10.0'
30
31
 
31
- spec.add_development_dependency "bundler", "~> 2.0"
32
- spec.add_development_dependency "minitest", "~> 5.0"
32
+ spec.add_development_dependency 'bundler', '~> 2.0'
33
+ spec.add_development_dependency 'minitest', '~> 5.0'
33
34
  spec.add_development_dependency 'rspec-expectations'
34
35
  spec.add_development_dependency 'rspec-mocks'
36
+ spec.add_development_dependency 'rubocop'
37
+ spec.add_development_dependency 'rubocop-minitest'
35
38
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miriamtech-gocd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Treis
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-24 00:00:00.000000000 Z
11
+ date: 2021-04-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -80,6 +80,34 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-minitest
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
83
111
  description:
84
112
  email:
85
113
  - ken@miriamtech.com
@@ -88,12 +116,15 @@ extensions: []
88
116
  extra_rdoc_files: []
89
117
  files:
90
118
  - ".gitignore"
119
+ - ".rubocop.yml"
91
120
  - ".travis.yml"
92
121
  - CHANGELOG.md
93
122
  - Gemfile
123
+ - Gemfile.lock
94
124
  - README.md
95
125
  - Rakefile
96
126
  - bin/console
127
+ - bin/rubocop
97
128
  - bin/run_tests.sh
98
129
  - bin/setup
99
130
  - lib/miriamtech/gocd.rb
@@ -119,9 +150,9 @@ require_paths:
119
150
  - lib
120
151
  required_ruby_version: !ruby/object:Gem::Requirement
121
152
  requirements:
122
- - - ">="
153
+ - - "~>"
123
154
  - !ruby/object:Gem::Version
124
- version: '0'
155
+ version: '2.5'
125
156
  required_rubygems_version: !ruby/object:Gem::Requirement
126
157
  requirements:
127
158
  - - ">="