concourse 0.29.0 → 0.34.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a29b14d0135cdcc80ce7bfd4f753268e323a3f278de62cf2675d7feda8786e71
4
- data.tar.gz: 5f57861031216b0175311871644eb3ad3599d14cbb9be1f98f6dad8df2fdb1c9
3
+ metadata.gz: baf385b29c11940d30e629579e3a49cbece674505744784cd76bc2c2ba555a57
4
+ data.tar.gz: 137a75561ca03dae7bf5d261ead42d23ad529646e4ff88af19210bed13030317
5
5
  SHA512:
6
- metadata.gz: cee0dae36acf17918b14fcd96f26e3989afab7bcbe15962ad0e585ad5d5259b6859ceac96b77c0c8b5cfa4d10a7baa3169335f010c248b77cb0eaebc1757b5db
7
- data.tar.gz: af6f1de325dcab7ca541d9fc7b0c36ce6d2128b6b82c012e5766e1c029afef59e0f4841f2d651feaff1778741e8225fc0c723d48257b934d2bd1465084185430
6
+ metadata.gz: ccf56e48803d7af6f9cebb66c88982cab01bd879360fe9035ecc86604ff14712f4ab27d4429e25e0540cb13780db30cf43f88e22136a18a29651e70b9de4ce7f
7
+ data.tar.gz: 14e5a4f401c650605da01391b2892bd636e5a8dc5ec847945a22c9fef8f41806e1c852b42e6a4bc00c014db5b82bfc0b8f020f6bdf50684cf99952ba9c87aad2
@@ -1,5 +1,31 @@
1
1
  # concourse-gem changelog
2
2
 
3
+ ## v0.34.0 / 2020-08-31
4
+
5
+ * allow injection of fly command arguments via `fly_args_<command_name>`
6
+
7
+
8
+ ## v0.33.0 / 2020-03-31
9
+
10
+ * add `format` option for formatting final pipeline files with `fly format-pipeline`
11
+
12
+
13
+ ## v0.32.0 / 2020-03-29
14
+
15
+ * avoid deprecation warning for `Bundler.with_clean_env`
16
+
17
+
18
+ ## v0.31.0 / 2020-01-11
19
+
20
+ * remove jruby 9.1 (which corresponds to ruby 2.3)
21
+
22
+
23
+ ## v0.30.0 / 2020-01-11
24
+
25
+ * remove ruby 2.3, which has reached EOL
26
+ * change ruby 2.7-rc to 2.7 (final)
27
+
28
+
3
29
  ## v0.29.0 / 2019-10-28
4
30
 
5
31
  * add `2.7-rc` to the set of MRI Rubies
data/README.md CHANGED
@@ -225,6 +225,17 @@ Concourse.new("myproject", fly_target: "myci").create_tasks! # `fly -t myci <com
225
225
  ```
226
226
 
227
227
 
228
+ ### `format`: Emit the final pipelines in `fly format-pipeline` canonical format
229
+
230
+ If you'd prefer to have your final pipeline files in `fly`'s "canonical format" (via `format-pipeline`), then set this to true!
231
+
232
+ ``` ruby
233
+ Concourse.new("myproject", format: true).create_tasks!
234
+ ```
235
+
236
+ This might be useful if you're heavily refactoring your template, and want to make sure there aren't unexpected changes to the pipeline.
237
+
238
+
228
239
  ### `pipeline_erb_filename`: Pipeline filename
229
240
 
230
241
  By default the pipeline file will be named `<myproject>.yml`, but can be set to something else:
@@ -246,6 +257,19 @@ Concourse.new("myproject", secrets_filename: "secrets.yml").create_tasks!
246
257
  ```
247
258
 
248
259
 
260
+ ### `fly_args_<fly_command>`: fly command arguments
261
+
262
+ Rarely, you may need to inject additional commandline arguments into `fly` to get the behavior you want. For example, I wanted to inject `--enable-across-step` into my `validate-pipeline` commands when I started exploring matrix builds via [the `across` step](https://github.com/vito/rfcs/blob/spatial-resources/029-across-step/proposal.md).
263
+
264
+ You can pass in additional keys named `fly_args_<command-name-with-underscores>` like this:
265
+
266
+ ``` ruby
267
+ Concourse.new("myproject", fly_args_validate_pipeline: "--enable-across-step --another-flag")
268
+ ```
269
+
270
+ With the above initializer call, whenever the `concourse` gem invokes `validate-pipeline`, it will inject `--enable-across-step --another-flag`.
271
+
272
+
249
273
  ## Rake Tasks
250
274
 
251
275
 
@@ -1,29 +1,29 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'concourse/version'
4
+ require "concourse/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "concourse"
8
- spec.version = Concourse::VERSION
9
- spec.authors = ["Mike Dalessio"]
10
- spec.email = ["mike.dalessio@gmail.com"]
7
+ spec.name = "concourse"
8
+ spec.version = Concourse::VERSION
9
+ spec.authors = ["Mike Dalessio"]
10
+ spec.email = ["mike.dalessio@gmail.com"]
11
11
 
12
- spec.summary = "Rake tasks for Concourse pipelines."
13
- spec.description = "Provide Rake tasks to ease management of Concourse pipelines. See https://concourse.ci/ to learn about Concourse."
14
- spec.homepage = "https://github.com/flavorjones/concourse-gem"
15
- spec.license = "MIT"
12
+ spec.summary = "Rake tasks for Concourse pipelines."
13
+ spec.description = "Provide Rake tasks to ease management of Concourse pipelines. See https://concourse.ci/ to learn about Concourse."
14
+ spec.homepage = "https://github.com/flavorjones/concourse-gem"
15
+ spec.license = "MIT"
16
16
 
17
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
18
18
  f.match(%r{^(test|spec|features)/})
19
19
  end
20
- spec.bindir = "exe"
21
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "term-ansicolor"
25
25
 
26
- spec.add_development_dependency "bundler", "~> 1.14"
27
- spec.add_development_dependency "rake", "~> 12.0"
26
+ spec.add_development_dependency "bundler", "~> 2.1.4"
27
+ spec.add_development_dependency "rake", "~> 13.0"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
29
  end
@@ -11,10 +11,10 @@ class Concourse
11
11
 
12
12
  # these numbers/names align with public docker image names
13
13
  RUBIES = {
14
- mri: %w[2.3 2.4 2.5 2.6 2.7-rc], # docker repository: "ruby"
15
- jruby: %w[9.1 9.2], # docker repository: "jruby"
16
- rbx: %w[latest], # docker repository: "rubinius/docker"
17
- windows: %w[2.3 2.4 2.5 2.6], # windows-ruby-dev-tools-release
14
+ mri: %w[2.4 2.5 2.6 2.7], # docker repository: "ruby"
15
+ jruby: %w[9.2], # docker repository: "jruby"
16
+ rbx: %w[latest], # docker repository: "rubinius/docker"
17
+ windows: %w[2.3 2.4 2.5 2.6], # windows-ruby-dev-tools-release
18
18
  }
19
19
 
20
20
  DEFAULT_DIRECTORY = "concourse"
@@ -25,7 +25,9 @@ class Concourse
25
25
  attr_reader :directory
26
26
  attr_reader :pipelines
27
27
  attr_reader :fly_target
28
+ attr_reader :fly_args
28
29
  attr_reader :secrets_filename
30
+ attr_reader :format
29
31
 
30
32
  CONCOURSE_DOCKER_COMPOSE = "docker-compose.yml"
31
33
 
@@ -56,6 +58,12 @@ class Concourse
56
58
 
57
59
  @directory = options[:directory] || DEFAULT_DIRECTORY
58
60
  @fly_target = options[:fly_target] || DEFAULT_FLY_TARGET
61
+ @format = options.has_key?(:format) ? options[:format] : false
62
+ @fly_args = options.keys.grep(/^fly_args_/).inject({}) do |hash, key|
63
+ fly_command = key.to_s.gsub(/^fly_args_/, "").gsub("_", "-")
64
+ hash[fly_command] = options[key]
65
+ hash
66
+ end
59
67
 
60
68
  base_secrets_filename = options[:secrets_filename] || DEFAULT_SECRETS
61
69
  @secrets_filename = File.join(@directory, base_secrets_filename)
@@ -89,14 +97,15 @@ class Concourse
89
97
  File.open pipeline.filename, "w" do |f|
90
98
  f.write erbify_file(pipeline.erb_filename, working_directory: directory)
91
99
  end
92
- fly "validate-pipeline -c #{pipeline.filename}"
100
+ fly "validate-pipeline", "-c #{pipeline.filename}"
101
+ fly "format-pipeline", "-c #{pipeline.filename} -w" if format
93
102
  end
94
103
 
95
104
  def ensure_docker_compose_file
96
105
  return if File.exist?(docker_compose_path)
97
106
  note "fetching docker compose file ..."
98
107
  File.open(docker_compose_path, "w") do |f|
99
- f.write open("https://concourse-ci.org/docker-compose.yml").read
108
+ f.write URI.open("https://concourse-ci.org/docker-compose.yml").read
100
109
  sh "docker pull concourse/concourse"
101
110
  end
102
111
  end
@@ -104,7 +113,7 @@ class Concourse
104
113
  def rake_concourse_local
105
114
  ensure_docker_compose_file
106
115
  @fly_target = "local"
107
- fly "login -u test -p test -c http://127.0.0.1:8080"
116
+ fly "login", "-u test -p test -c http://127.0.0.1:8080"
108
117
  end
109
118
 
110
119
  def rake_concourse_local_up
@@ -167,7 +176,7 @@ class Concourse
167
176
  note "using #{secrets_filename} to resolve template vars in #{pipeline.filename}"
168
177
  options << "-l '#{secrets_filename}'"
169
178
  end
170
- fly "set-pipeline #{options.join(" ")}"
179
+ fly "set-pipeline", options.join(" ")
171
180
  end
172
181
  end
173
182
 
@@ -178,7 +187,7 @@ class Concourse
178
187
  pipelines.each do |pipeline|
179
188
  desc "#{command} the #{pipeline.name} pipeline"
180
189
  task "#{command}:#{pipeline.name}" do
181
- fly "#{command}-pipeline -p #{pipeline.name}"
190
+ fly "#{command}-pipeline", "-p #{pipeline.name}"
182
191
  end
183
192
  end
184
193
  end
@@ -229,8 +238,8 @@ class Concourse
229
238
  Tempfile.create("concourse-task") do |f|
230
239
  f.write concourse_task["config"].to_yaml
231
240
  f.close
232
- Bundler.with_clean_env do
233
- fly "execute #{fly_execute_args} -c #{f.path}"
241
+ Bundler.with_unbundled_env do
242
+ fly "execute", "#{fly_execute_args} -c #{f.path}"
234
243
  end
235
244
  end
236
245
  end
@@ -244,7 +253,7 @@ class Concourse
244
253
  pipeline_job, build_id, status = *line.split(/\s+/)[1, 3]
245
254
  next unless status == "started"
246
255
 
247
- fly "abort-build -j #{pipeline_job} -b #{build_id}"
256
+ fly "abort-build", "-j #{pipeline_job} -b #{build_id}"
248
257
  end
249
258
  end
250
259
 
@@ -255,7 +264,7 @@ class Concourse
255
264
  task "prune-stalled-workers" do
256
265
  `fly -t #{fly_target} workers | fgrep stalled`.each_line do |line|
257
266
  worker_id = line.split.first
258
- fly "prune-worker -w #{worker_id}"
267
+ fly "prune-worker", "-w #{worker_id}"
259
268
  end
260
269
  end
261
270
 
@@ -18,8 +18,9 @@ class Concourse
18
18
  File.open(GITIGNORE_FILE, "a") { |f| f.puts file_glob }
19
19
  end
20
20
 
21
- def fly command
22
- sh "fly -t #{fly_target} #{command}"
21
+ def fly command, args
22
+ command_args = Array(fly_args[command])
23
+ sh "fly -t #{fly_target} #{command} #{command_args.join(" ")} #{args}"
23
24
  end
24
25
 
25
26
  def docker_compose command
@@ -2,5 +2,5 @@ require "rake"
2
2
  require "erb"
3
3
 
4
4
  class Concourse
5
- VERSION = "0.29.0"
5
+ VERSION = "0.34.0"
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concourse
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.0
4
+ version: 0.34.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Dalessio
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-28 00:00:00.000000000 Z
11
+ date: 2020-08-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: term-ansicolor
@@ -30,28 +30,28 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.14'
33
+ version: 2.1.4
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.14'
40
+ version: 2.1.4
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '12.0'
47
+ version: '13.0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '12.0'
54
+ version: '13.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  - !ruby/object:Gem::Version
108
108
  version: '0'
109
109
  requirements: []
110
- rubygems_version: 3.0.3
110
+ rubygems_version: 3.1.2
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Rake tasks for Concourse pipelines.