capistrano-nomad 0.12.0 → 0.12.2

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: d14fcb69aa16bc0815770535ac91e2eef6ef6bbbebc372b2278267912389f68d
4
- data.tar.gz: 8a031005e8a27ce2ac50a6cd8f026290b4f6bd3e482b3acc6d819adfb668cc3a
3
+ metadata.gz: 9ea1dce7c57651a12a7f34dae3d0451cb964500b28c5356b12fbe552b7811f0a
4
+ data.tar.gz: 3f4a63bb2294ad4928faecd28f1bd0003d0f09b249ccf2649e5228918e562904
5
5
  SHA512:
6
- metadata.gz: fc3c5fc5c9a43e97e3277e53120ffcf88f14e9436d34742fad563221d8a003e7d9a2d56c93cbd7dad8676f711f86235b6715cd259a037db320c5876bc8f62bf2
7
- data.tar.gz: a21adbbb7fc30eac19788733406fbeae0840c8bfab8ece91ee69fc202a35ef200ae8c62000321a6b3562d7d56bb1c4d7408189fcc6276e1d6e7fdbb8407e2494
6
+ metadata.gz: 168ea50bf0399fa51a796362555a2a29ebe0637f2d7896c2a1f1a83b451fd5d6b35eebb29907b9f6a80c675305ffd319a8acbcab28b5ffc2002c940dc49c1d31
7
+ data.tar.gz: 0e7eed0ef654d2b945d9d2dd7b7089918aebaac61e3d71b9e8210a8f5038e5cf3baf938c849746da06f80dc97b32f6f0d1fc17cefa697d639221be137fef229c
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capistrano-nomad (0.12.0)
4
+ capistrano-nomad (0.12.2)
5
5
  activesupport (<= 7.0.8)
6
6
  byebug
7
7
  capistrano (~> 3.0)
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "capistrano-nomad"
5
- spec.version = "0.12.0"
5
+ spec.version = "0.12.2"
6
6
  spec.authors = ["James Hu"]
7
7
 
8
8
  spec.summary = "Capistrano plugin for deploying and managing Nomad jobs"
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  # Specify which files should be added to the gem when it is released.
19
19
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
20
20
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
21
- `git ls-files -z`.split("\x0").reject do |f|
21
+ %x(git ls-files -z).split("\x0").reject do |f|
22
22
  (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
23
23
  end
24
24
  end
@@ -27,13 +27,13 @@ Gem::Specification.new do |spec|
27
27
  spec.require_paths = ["lib"]
28
28
 
29
29
  # Uncomment to register a new dependency of your gem
30
- spec.add_dependency "activesupport", "<= 7.0.8"
31
- spec.add_dependency "byebug"
32
- spec.add_dependency "capistrano", "~> 3.0"
33
- spec.add_dependency "git"
34
- spec.add_dependency "rake", "~> 13.0"
35
- spec.add_dependency "sshkit"
36
- spec.add_dependency "sshkit-interactive"
30
+ spec.add_dependency("activesupport", "<= 7.0.8")
31
+ spec.add_dependency("byebug")
32
+ spec.add_dependency("capistrano", "~> 3.0")
33
+ spec.add_dependency("git")
34
+ spec.add_dependency("rake", "~> 13.0")
35
+ spec.add_dependency("sshkit")
36
+ spec.add_dependency("sshkit-interactive")
37
37
 
38
38
  # For more information and examples about making a new gem, check out our
39
39
  # guide at: https://bundler.io/guides/creating_gem.html
@@ -59,115 +59,116 @@ def nomad_job(name, attributes = {})
59
59
  description_name << name.to_s
60
60
 
61
61
  namespace(name) do
62
- desc "Build #{description_name} job Docker images"
63
- task :build do
62
+ desc("Build #{description_name} job Docker images")
63
+ task(:build) do
64
64
  capistrano_nomad_build_jobs_docker_images([name], namespace: namespace)
65
65
  end
66
66
 
67
- desc "Push #{description_name} job Docker images"
68
- task :push do
67
+ desc("Push #{description_name} job Docker images")
68
+ task(:push) do
69
69
  capistrano_nomad_push_jobs_docker_images([name], namespace: namespace)
70
70
  end
71
71
 
72
- desc "Build and push #{description_name} job Docker images"
73
- task :assemble do
72
+ desc("Build and push #{description_name} job Docker images")
73
+ task(:assemble) do
74
74
  capistrano_nomad_build_jobs_docker_images([name], namespace: namespace)
75
75
  capistrano_nomad_push_jobs_docker_images([name], namespace: namespace)
76
76
  end
77
77
 
78
- desc "Upload #{description_name} job and related files"
79
- task :upload do
78
+ desc("Upload #{description_name} job and related files")
79
+ task(:upload) do
80
80
  capistrano_nomad_upload_jobs([name], namespace: namespace)
81
81
  end
82
82
 
83
- desc "Run #{description_name} job"
84
- task :run do
83
+ desc("Run #{description_name} job")
84
+ task(:run) do
85
85
  capistrano_nomad_run_jobs([name], namespace: namespace, is_detached: false)
86
86
  end
87
87
 
88
- desc "Purge and run #{description_name} job again"
89
- task :rerun do
88
+ desc("Purge and run #{description_name} job again")
89
+ task(:rerun) do
90
90
  capistrano_nomad_rerun_jobs([name], namespace: namespace, is_detached: false)
91
91
  end
92
92
 
93
- desc "Upload and plan #{description_name} job"
94
- task :upload_plan do
93
+ desc("Upload and plan #{description_name} job")
94
+ task(:upload_plan) do
95
95
  capistrano_nomad_upload_plan_jobs([name], namespace: namespace)
96
96
  end
97
97
 
98
- desc "Upload and run #{description_name} job"
99
- task :upload_run do
98
+ desc("Upload and run #{description_name} job")
99
+ task(:upload_run) do
100
100
  capistrano_nomad_upload_run_jobs([name], namespace: namespace, is_detached: false)
101
101
  end
102
102
 
103
- desc "Upload and re-run #{description_name} job"
104
- task :upload_rerun do
103
+ desc("Upload and re-run #{description_name} job")
104
+ task(:upload_rerun) do
105
105
  capistrano_nomad_upload_rerun_jobs([name], namespace: namespace, is_detached: false)
106
106
  end
107
107
 
108
- desc "Deploy #{description_name} job"
109
- task :deploy do
108
+ desc("Deploy #{description_name} job")
109
+ task(:deploy) do
110
110
  capistrano_nomad_deploy_jobs([name], namespace: namespace, is_detached: false)
111
111
  end
112
112
 
113
- desc "Stop #{description_name} job"
114
- task :stop do
113
+ desc("Stop #{description_name} job")
114
+ task(:stop) do
115
115
  capistrano_nomad_stop_jobs([name], namespace: namespace)
116
116
  end
117
117
 
118
- desc "Restart #{description_name} job"
119
- task :restart do
118
+ desc("Restart #{description_name} job")
119
+ task(:restart) do
120
120
  capistrano_nomad_restart_jobs([name], namespace: namespace)
121
121
  end
122
122
 
123
- desc "Revert #{description_name} job. Specify version with VERSION. Specify targeting tasks with docker image with DOCKER_IMAGE. If none specified, it will revert to previous version"
124
- task :revert do
125
- capistrano_nomad_revert_jobs([name], ENV["VERSION"].presence,
123
+ desc("Revert #{description_name} job. Specify version with VERSION. Specify targeting tasks with docker image with DOCKER_IMAGE. If none specified, it will revert to previous version")
124
+ task(:revert) do
125
+ capistrano_nomad_revert_jobs([name],
126
126
  namespace: namespace,
127
+ version: ENV["VERSION"],
127
128
  docker_image: ENV["DOCKER_IMAGE"],
128
129
  )
129
130
  end
130
131
 
131
- desc "Purge #{description_name} job"
132
- task :purge do
132
+ desc("Purge #{description_name} job")
133
+ task(:purge) do
133
134
  capistrano_nomad_purge_jobs([name], namespace: namespace, is_detached: false)
134
135
  end
135
136
 
136
- desc "Display status of #{description_name} job"
137
- task :status do
137
+ desc("Display status of #{description_name} job")
138
+ task(:status) do
138
139
  capistrano_nomad_display_job_status(name, namespace: namespace)
139
140
  end
140
141
 
141
- desc "Open console to #{description_name} job. Specify task with TASK, command with CMD"
142
- task :console do
142
+ desc("Open console to #{description_name} job. Specify task with TASK, command with CMD")
143
+ task(:console) do
143
144
  command = ENV["CMD"].presence || "/bin/sh"
144
145
 
145
146
  capistrano_nomad_exec_within_job(name, command, namespace: namespace, task: ENV["TASK"])
146
147
  end
147
148
 
148
- desc "Display stdout and stderr of #{description_name} job. Specify task with TASK"
149
- task :logs do
149
+ desc("Display stdout and stderr of #{description_name} job. Specify task with TASK")
150
+ task(:logs) do
150
151
  capistrano_nomad_tail_job_logs(name, namespace: namespace, stdout: true)
151
152
  capistrano_nomad_tail_job_logs(name, namespace: namespace, stderr: true)
152
153
  end
153
154
 
154
- desc "Display stdout of #{description_name} job. Specify task with TASK"
155
- task :stdout do
155
+ desc("Display stdout of #{description_name} job. Specify task with TASK")
156
+ task(:stdout) do
156
157
  capistrano_nomad_tail_job_logs(name, namespace: namespace, stdout: true)
157
158
  end
158
159
 
159
- desc "Display stderr of #{description_name} job. Specify task with TASK"
160
- task :stderr do
160
+ desc("Display stderr of #{description_name} job. Specify task with TASK")
161
+ task(:stderr) do
161
162
  capistrano_nomad_tail_job_logs(name, namespace: namespace, stderr: true)
162
163
  end
163
164
 
164
- desc "Follow logs of #{description_name} job. Specify task with TASK"
165
- task :follow do
165
+ desc("Follow logs of #{description_name} job. Specify task with TASK")
166
+ task(:follow) do
166
167
  capistrano_nomad_display_job_logs(name, namespace: namespace, f: true)
167
168
  end
168
169
 
169
- desc "Open job in web UI"
170
- task :ui do
170
+ desc("Open job in web UI")
171
+ task(:ui) do
171
172
  capistrano_nomad_open_job_ui(name, namespace: namespace)
172
173
  end
173
174
  end
@@ -30,7 +30,7 @@ def capistrano_nomad_ensure_absolute_path(path)
30
30
  end
31
31
 
32
32
  def capistrano_nomad_build_file_path(parent_path, basename, kind: nil, **options)
33
- capistrano_nomad_ensure_options!(**options)
33
+ capistrano_nomad_ensure_options!(options)
34
34
  namespace = options[:namespace]
35
35
  segments = [parent_path]
36
36
 
@@ -135,7 +135,7 @@ def capistrano_nomad_capture_nomad_command(*args, **options)
135
135
  end
136
136
 
137
137
  def capistrano_nomad_find_job_task_details(name, task: nil, **options)
138
- capistrano_nomad_ensure_options!(**options)
138
+ capistrano_nomad_ensure_options!(options)
139
139
  task = task.presence || name
140
140
 
141
141
  # Find alloc id that contains task that is also running
@@ -178,7 +178,7 @@ def capistrano_nomad_find_job_task_details(name, task: nil, **options)
178
178
  end
179
179
 
180
180
  def capistrano_nomad_exec_within_job(name, command, task: nil, **options)
181
- capistrano_nomad_ensure_options!(**options)
181
+ capistrano_nomad_ensure_options!(options)
182
182
 
183
183
  capistrano_nomad_run_remotely do
184
184
  if (task_details = capistrano_nomad_find_job_task_details(name, task: task, **options))
@@ -251,18 +251,18 @@ def capistrano_nomad_upload(local_path:, remote_path:, erb_vars: {})
251
251
  end
252
252
  end
253
253
 
254
- def capistrano_nomad_ensure_options!(**options)
254
+ def capistrano_nomad_ensure_options!(options)
255
255
  options[:namespace] ||= :default
256
256
  end
257
257
 
258
258
  def capistrano_nomad_fetch_namespace_options(**options)
259
- capistrano_nomad_ensure_options!(**options)
259
+ capistrano_nomad_ensure_options!(options)
260
260
 
261
261
  fetch(:nomad_namespaces)&.dig(options[:namespace])
262
262
  end
263
263
 
264
264
  def capistrano_nomad_fetch_job_options(name, *args, **options)
265
- capistrano_nomad_ensure_options!(**options)
265
+ capistrano_nomad_ensure_options!(options)
266
266
 
267
267
  fetch(:nomad_jobs).dig(options[:namespace], name.to_sym, *args)
268
268
  end
@@ -272,7 +272,7 @@ def capistrano_nomad_fetch_job_var_files(name, **options)
272
272
  end
273
273
 
274
274
  def capistrano_nomad_fetch_jobs_names_by_namespace(**options)
275
- capistrano_nomad_ensure_options!(**options)
275
+ capistrano_nomad_ensure_options!(options)
276
276
  namespace = options[:namespace]
277
277
 
278
278
  # Can pass tags via command line (e.g. TAG=foo or TAGS=foo,bar)
@@ -298,92 +298,92 @@ def capistrano_nomad_fetch_jobs_names_by_namespace(**options)
298
298
  end
299
299
 
300
300
  def capistrano_nomad_fetch_jobs_docker_image_types(names, **options)
301
- capistrano_nomad_ensure_options!(**options)
301
+ capistrano_nomad_ensure_options!(options)
302
302
 
303
303
  names.map { |n| fetch(:nomad_jobs).dig(options[:namespace], n.to_sym, :docker_image_types) }.flatten.compact.uniq
304
304
  end
305
305
 
306
306
  def capistrano_nomad_define_group_tasks(namespace:)
307
307
  define_tasks = lambda do |nomad_namespace: nil|
308
- desc "Build #{nomad_namespace} job Docker images"
309
- task :build do
308
+ desc("Build #{nomad_namespace} job Docker images")
309
+ task(:build) do
310
310
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
311
311
  capistrano_nomad_push_jobs_docker_images(names, namespace: jobs_namespace)
312
312
  end
313
313
  end
314
314
 
315
- desc "Push #{nomad_namespace} job Docker images"
316
- task :push do
315
+ desc("Push #{nomad_namespace} job Docker images")
316
+ task(:push) do
317
317
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
318
318
  capistrano_nomad_push_jobs_docker_images(names, namespace: jobs_namespace)
319
319
  end
320
320
  end
321
321
 
322
- desc "Build and push #{nomad_namespace} job Docker images"
323
- task :assemble do
322
+ desc("Build and push #{nomad_namespace} job Docker images")
323
+ task(:assemble) do
324
324
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
325
325
  capistrano_nomad_assemble_jobs_docker_images(names, namespace: jobs_namespace)
326
326
  end
327
327
  end
328
328
 
329
- desc "Upload #{nomad_namespace} jobs"
330
- task :upload do
329
+ desc("Upload #{nomad_namespace} jobs")
330
+ task(:upload) do
331
331
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
332
332
  capistrano_nomad_upload_jobs(names, namespace: jobs_namespace)
333
333
  end
334
334
  end
335
335
 
336
- desc "Run #{nomad_namespace} jobs"
337
- task :run do
336
+ desc("Run #{nomad_namespace} jobs")
337
+ task(:run) do
338
338
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
339
339
  capistrano_nomad_run_jobs(names, namespace: jobs_namespace)
340
340
  end
341
341
  end
342
342
 
343
- desc "Upload and run #{nomad_namespace} jobs"
344
- task :upload_run do
343
+ desc("Upload and run #{nomad_namespace} jobs")
344
+ task(:upload_run) do
345
345
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
346
346
  capistrano_nomad_upload_run_jobs(names, namespace: jobs_namespace)
347
347
  end
348
348
  end
349
349
 
350
- desc "Deploy #{nomad_namespace} jobs"
351
- task :deploy do
350
+ desc("Deploy #{nomad_namespace} jobs")
351
+ task(:deploy) do
352
352
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
353
353
  capistrano_nomad_deploy_jobs(names, namespace: jobs_namespace)
354
354
  end
355
355
  end
356
356
 
357
- desc "Rerun #{nomad_namespace} jobs"
358
- task :rerun do
357
+ desc("Rerun #{nomad_namespace} jobs")
358
+ task(:rerun) do
359
359
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
360
360
  capistrano_nomad_rerun_jobs(names, namespace: jobs_namespace)
361
361
  end
362
362
  end
363
363
 
364
- desc "Restart #{nomad_namespace} jobs"
365
- task :restart do
364
+ desc("Restart #{nomad_namespace} jobs")
365
+ task(:restart) do
366
366
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
367
367
  capistrano_nomad_restart_jobs(names, namespace: jobs_namespace)
368
368
  end
369
369
  end
370
370
 
371
- desc "Revert #{nomad_namespace} jobs"
372
- task :revert do
371
+ desc("Revert #{nomad_namespace} jobs")
372
+ task(:revert) do
373
373
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
374
374
  capistrano_nomad_revert_jobs(names, namespace: jobs_namespace)
375
375
  end
376
376
  end
377
377
 
378
- desc "Stop #{nomad_namespace} jobs"
379
- task :stop do
378
+ desc("Stop #{nomad_namespace} jobs")
379
+ task(:stop) do
380
380
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
381
381
  capistrano_nomad_stop_jobs(names, namespace: jobs_namespace)
382
382
  end
383
383
  end
384
384
 
385
- desc "Purge #{nomad_namespace} jobs"
386
- task :purge do
385
+ desc("Purge #{nomad_namespace} jobs")
386
+ task(:purge) do
387
387
  capistrano_nomad_fetch_jobs_names_by_namespace(namespace: nomad_namespace).each do |jobs_namespace, names|
388
388
  capistrano_nomad_purge_jobs(names, namespace: jobs_namespace)
389
389
  end
@@ -459,7 +459,7 @@ def capistrano_nomad_plan_jobs(names, **options)
459
459
  end
460
460
 
461
461
  def capistrano_nomad_run_jobs(names, is_detached: true, **options)
462
- capistrano_nomad_ensure_options!(**options)
462
+ capistrano_nomad_ensure_options!(options)
463
463
 
464
464
  names.each do |name|
465
465
  run_options = {
@@ -521,7 +521,7 @@ def capistrano_nomad_deploy_jobs(names, **options)
521
521
  end
522
522
 
523
523
  def capistrano_nomad_restart_jobs(names, **options)
524
- capistrano_nomad_ensure_options!(**options)
524
+ capistrano_nomad_ensure_options!(options)
525
525
 
526
526
  names.each do |name|
527
527
  # Automatic yes to prompts. If set, the command automatically restarts multi-region jobs only in the region targeted
@@ -531,7 +531,7 @@ def capistrano_nomad_restart_jobs(names, **options)
531
531
  end
532
532
 
533
533
  def capistrano_nomad_stop_jobs(names, **options)
534
- capistrano_nomad_ensure_options!(**options)
534
+ capistrano_nomad_ensure_options!(options)
535
535
 
536
536
  names.each do |name|
537
537
  capistrano_nomad_execute_nomad_command(:job, :stop, options, name)
@@ -539,22 +539,23 @@ def capistrano_nomad_stop_jobs(names, **options)
539
539
  end
540
540
 
541
541
  def capistrano_nomad_purge_jobs(names, is_detached: true, **options)
542
- capistrano_nomad_ensure_options!(**options)
542
+ capistrano_nomad_ensure_options!(options)
543
543
 
544
544
  names.each do |name|
545
545
  capistrano_nomad_execute_nomad_command(:stop, options.reverse_merge(purge: true, detach: is_detached), name)
546
546
  end
547
547
  end
548
548
 
549
- def capistrano_nomad_revert_jobs(names, version, docker_image: nil, **options)
550
- capistrano_nomad_ensure_options!(**options)
549
+ def capistrano_nomad_revert_jobs(names, version: nil, docker_image: nil, **options)
550
+ capistrano_nomad_ensure_options!(options)
551
551
  versions_by_job_name = {}
552
552
 
553
553
  names.each do |name|
554
554
  history_output_json = capistrano_nomad_display_job_history(name, **options.reverse_merge(json: true))
555
555
  history_output = JSON.parse(history_output_json)
556
-
557
- versions_by_job_name[name] = if docker_image
556
+ versions_by_job_name[name] = if version.presence
557
+ version
558
+ elsif docker_image.presence
558
559
  # Find job history with matching docker image
559
560
  docker_image_job_history = history_output.find do |job_history|
560
561
  task_images = job_history.dig("TaskGroups")
@@ -570,8 +571,8 @@ def capistrano_nomad_revert_jobs(names, version, docker_image: nil, **options)
570
571
  end
571
572
 
572
573
  docker_image_job_history.dig("Version")
574
+ # Revert to previous version if nothing specified
573
575
  else
574
- # If no version specified then revert to previous version
575
576
  history_output[1].dig("Version")
576
577
  end
577
578
  end
@@ -582,13 +583,13 @@ def capistrano_nomad_revert_jobs(names, version, docker_image: nil, **options)
582
583
  end
583
584
 
584
585
  def capistrano_nomad_display_job_history(name, **options)
585
- capistrano_nomad_ensure_options!(**options)
586
+ capistrano_nomad_ensure_options!(options)
586
587
 
587
588
  capistrano_nomad_capture_nomad_command(:job, :history, options, name)
588
589
  end
589
590
 
590
591
  def capistrano_nomad_display_job_status(name, **options)
591
- capistrano_nomad_ensure_options!(**options)
592
+ capistrano_nomad_ensure_options!(options)
592
593
 
593
594
  capistrano_nomad_execute_nomad_command(:status, options, name)
594
595
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-nomad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.12.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Hu