capistrano-nomad 0.12.0 → 0.12.1
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 +4 -4
- data/Gemfile.lock +1 -1
- data/capistrano-nomad.gemspec +9 -9
- data/lib/capistrano/nomad/helpers/dsl.rb +44 -43
- data/lib/capistrano/nomad/helpers/nomad.rb +29 -28
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d34d3ae527de70b6bd8168b0054e92cd52d098fed4d21180b1fb1f1bbd01d04
|
4
|
+
data.tar.gz: e48dc773cd3a8433c507e97ae5299cf96255afcb1d3a07386635bd28d9697303
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '078c8ca031513bc8b0f0a0cba6e1e390611981c873b5cab880025a10cf5ef898edd3034c4ee94e287f442d25e3fc049d3cec4be3a0588fc6c7bf33e8ed88f391'
|
7
|
+
data.tar.gz: 35ce5309245c29dd3f5363bce2bbd0638c9810d32993ce5d68bfad886fff22302d4be1b45757bf7562c47b9f8f41c1abb349e5d7a244eb56eb91eb2428de7b64
|
data/Gemfile.lock
CHANGED
data/capistrano-nomad.gemspec
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = "capistrano-nomad"
|
5
|
-
spec.version = "0.12.
|
5
|
+
spec.version = "0.12.1"
|
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
|
-
|
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
|
31
|
-
spec.add_dependency
|
32
|
-
spec.add_dependency
|
33
|
-
spec.add_dependency
|
34
|
-
spec.add_dependency
|
35
|
-
spec.add_dependency
|
36
|
-
spec.add_dependency
|
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
|
63
|
-
task
|
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
|
68
|
-
task
|
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
|
73
|
-
task
|
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
|
79
|
-
task
|
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
|
84
|
-
task
|
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
|
89
|
-
task
|
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
|
94
|
-
task
|
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
|
99
|
-
task
|
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
|
104
|
-
task
|
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
|
109
|
-
task
|
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
|
114
|
-
task
|
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
|
119
|
-
task
|
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
|
124
|
-
task
|
125
|
-
capistrano_nomad_revert_jobs([name],
|
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
|
132
|
-
task
|
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
|
137
|
-
task
|
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
|
142
|
-
task
|
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
|
149
|
-
task
|
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
|
155
|
-
task
|
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
|
160
|
-
task
|
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
|
165
|
-
task
|
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
|
170
|
-
task
|
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
|
@@ -305,85 +305,85 @@ end
|
|
305
305
|
|
306
306
|
def capistrano_nomad_define_group_tasks(namespace:)
|
307
307
|
define_tasks = lambda do |nomad_namespace: nil|
|
308
|
-
desc
|
309
|
-
task
|
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
|
316
|
-
task
|
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
|
323
|
-
task
|
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
|
330
|
-
task
|
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
|
337
|
-
task
|
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
|
344
|
-
task
|
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
|
351
|
-
task
|
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
|
358
|
-
task
|
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
|
365
|
-
task
|
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
|
372
|
-
task
|
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
|
379
|
-
task
|
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
|
386
|
-
task
|
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
|
@@ -546,15 +546,16 @@ def capistrano_nomad_purge_jobs(names, is_detached: true, **options)
|
|
546
546
|
end
|
547
547
|
end
|
548
548
|
|
549
|
-
def capistrano_nomad_revert_jobs(names, version, docker_image: nil, **options)
|
549
|
+
def capistrano_nomad_revert_jobs(names, version: nil, docker_image: nil, **options)
|
550
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
|
-
|
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
|