capistrano-nomad 0.6.0 → 0.6.2

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: 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