capistrano-nomad 0.6.0 → 0.6.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: 0f5358b24228c869a704b8ed79aa76d76b2aeb559ffcd7bd3bced8aa7d3281d1
4
- data.tar.gz: 95f8c93adc89fdbcffe9f40bc5d18433ccfc4b743cfcb194a2b7b2e9468f6bb5
3
+ metadata.gz: 25b29aaa6c532b6656df34b6ebc7ebc23359c4acb3ae2b8c5d7320a2e79c7f66
4
+ data.tar.gz: 770838795fb494f1c4305168d6b60f51be7f1d33bec9c31e45b7d119ecd427f0
5
5
  SHA512:
6
- metadata.gz: 834ccd5183128e4c3b4bed1067457b1a2a0036ed21c8ca954f82f25298aca61d6a108460b22c17cbe9f2fa561e02e4189942ddb99d784792ed7422b70e05ba0f
7
- data.tar.gz: 1a4ade283a947f6243fb8c728ca3c3fcac55fac0471cad47b2fbabec66b66a7287fd342c29610bcad5a67d847a0251eb2ee66847ca27de449b963734d5a0d55d
6
+ metadata.gz: 24cd34d64db04c41e6b2e39ced4e84129e4fb3ff2d70a25e53d945e2bcdaf35e7a45f6783c1e5cd37d061053ba24b2717d939f6b3e0cd0939c14bc8f39def70d
7
+ data.tar.gz: e978fbbf7205ed2d160e2702ae9109ba73722c695f9de2e0c8f51cc010a248da5ffbed583d452e1bcc7a6e0ee22989202afd183430256ae73cc7f0f4515d83fa
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capistrano-nomad (0.6.0)
4
+ capistrano-nomad (0.6.2)
5
5
  activesupport (<= 7.0.8)
6
6
  byebug
7
7
  capistrano (~> 3.0)
data/README.md CHANGED
@@ -34,10 +34,21 @@ install_plugin Capistrano::Nomad
34
34
  Within `deploy.rb`
35
35
 
36
36
  ```ruby
37
+ set :nomad_jobs_path, "nomad/jobs"
38
+ set :nomad_var_files_path, "nomad/vars"
39
+
40
+ # Accessible in all .erb files
41
+ set :nomad_erb_vars, (lambda do
42
+ {
43
+ env_name: fetch(:stage).to_sym,
44
+ domain: fetch(:domain),
45
+ foo: "bar,"
46
+ }
47
+ end)
37
48
 
38
49
  # Docker image types
39
- nomad_docker_image_type :app,
40
- path: "backend",
50
+ nomad_docker_image_type :backend,
51
+ path: "local/path/backend",
41
52
  alias: ->(image_type:) { "gcr.io/axsuul/#{image_type}" },
42
53
  target: "release",
43
54
  build_args: { foo: "bar" }
@@ -46,8 +57,11 @@ nomad_docker_image_type :redis,
46
57
  alias: "gcr.io/axsuul/redis"
47
58
 
48
59
  # Jobs
49
- nomad_job :app
60
+ nomad_job :frontend
61
+ nomad_job :backend, docker_image_types: [:backend], var_files: [:rails]
50
62
  nomad_job :redis, docker_image_types: [:redis]
63
+ nomad_job :"traefik-default", template: :traefik, erb_vars: { role: :default }
64
+ nomad_job :"traefik-secondary", template: :traefik, erb_vars: { role: :secondary }
51
65
 
52
66
  nomad_namespace :analytics do
53
67
  nomad_job :grafana
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "capistrano-nomad"
5
- spec.version = "0.6.0"
5
+ spec.version = "0.6.2"
6
6
  spec.authors = ["James Hu"]
7
7
 
8
8
  spec.summary = "Capistrano plugin for deploying and managing Nomad jobs"
@@ -90,24 +90,7 @@ def nomad_job(name, attributes = {})
90
90
 
91
91
  desc "Restart #{description_name} job"
92
92
  task :restart do
93
- on(roles(:manager)) do
94
- # We can't restart the job directly so we'll need to fetch all its running allocs and restart each of one
95
- # individually instead
96
- running_alloc_ids_output = capistrano_nomad_capture_nomad_command(
97
- :job,
98
- :allocs,
99
- {
100
- namespace: namespace,
101
- t: "'{{range .}}{{if eq .ClientStatus \"running\"}}{{ println .ID}}{{end}}{{end}}'",
102
- },
103
- name,
104
- )
105
- running_alloc_ids = running_alloc_ids_output.strip.split("\n")
106
-
107
- running_alloc_ids.each do |alloc_id|
108
- capistrano_nomad_execute_nomad_command(:alloc, :restart, alloc_id)
109
- end
110
- end
93
+ capistrano_nomad_restart_jobs([name], namespace: namespace)
111
94
  end
112
95
 
113
96
  desc "Open console to #{description_name} job. Specify task by passing TASK environment variable"
@@ -35,6 +35,10 @@ class CapistranoNomadErbNamespace
35
35
  # rubocop:enable Style/MissingRespondToMissing
36
36
  end
37
37
 
38
+ def capistrano_nomad_ensure_absolute_path(path)
39
+ path[0] == "/" ? path : "/#{path}"
40
+ end
41
+
38
42
  def capistrano_nomad_build_file_path(parent_path, basename, namespace: nil)
39
43
  segments = [parent_path]
40
44
  segments << namespace if namespace
@@ -71,11 +75,11 @@ def capistrano_nomad_build_local_var_file_path(name, *args)
71
75
  end
72
76
 
73
77
  def capistrano_nomad_build_release_job_path(*args)
74
- "#{release_path}#{capistrano_nomad_build_base_job_path(*args)}"
78
+ "#{release_path}#{capistrano_nomad_ensure_absolute_path(capistrano_nomad_build_base_job_path(*args))}"
75
79
  end
76
80
 
77
81
  def capistrano_nomad_build_release_var_file_path(*args)
78
- "#{release_path}#{capistrano_nomad_build_base_var_file_path(*args)}"
82
+ "#{release_path}#{capistrano_nomad_ensure_absolute_path(capistrano_nomad_build_base_var_file_path(*args))}"
79
83
  end
80
84
 
81
85
  def capistrano_nomad_run_nomad_command(kind, *args)
@@ -317,6 +321,12 @@ def capistrano_nomad_deploy_jobs(names, *args)
317
321
  capistrano_nomad_upload_run_jobs(names, *args)
318
322
  end
319
323
 
324
+ def capistrano_nomad_restart_jobs(names, namespace: nil)
325
+ names.each do |name|
326
+ capistrano_nomad_execute_nomad_command(:job, :restart, { namespace: namespace }, name)
327
+ end
328
+ end
329
+
320
330
  def capistrano_nomad_purge_jobs(names, namespace: nil, is_detached: true)
321
331
  names.each do |name|
322
332
  capistrano_nomad_execute_nomad_command(:stop, { namespace: namespace, purge: true, detach: is_detached }, name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-nomad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0
4
+ version: 0.6.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Hu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-10-30 00:00:00.000000000 Z
11
+ date: 2023-10-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport