capistrano-nomad 0.2.1 → 0.3.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: 817ed9b3557b3b74bfb35d3111727895286265375ded0706cac176eb32575476
4
- data.tar.gz: a07a09a0f12cf4f40241f1634bda9a45fbd5eda6eb7252c1be1192967d924ae9
3
+ metadata.gz: e1d44671f9ed79b03419c3de79d4b938652eb3f35f3553450f4e5118fadeb596
4
+ data.tar.gz: 3a6afdc265f7f434774f960e1aa2a9c5950cd8da00c02dbf21407c752ec2bb22
5
5
  SHA512:
6
- metadata.gz: 333e445e462bf9437b87563ca1a55386fd9ab6e55384b70ba293bf5cc21d3855519a84cc757db68953b020afa17f0f67e334e21f098ea42f9a29be01996767d7
7
- data.tar.gz: 81e3665eaf1e438d4a1e49654959c28b388c8daa8471fbc66d68a34f6de21b5e9db6aee67e8798b3484114367df7dd25831b075e4bd5b848f8756132275bfc34
6
+ metadata.gz: 511bf835646bbfb0f5ec7bc0fe5dd575cd34b4a72573d73457ce07830284ad01260521bbdb2cc8a829e1ad535d78cbece3d041ed32f546efbd274090934523db
7
+ data.tar.gz: d576b13a85867cc3916dd32a7a26ece7aecdda4b1b14bc20a451f24a7bbeb48f3aef1144d3952e9e5ad831f06c33cb609fd41390bb40d2a29e0754254c48f098
data/Gemfile.lock CHANGED
@@ -1,8 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- capistrano-nomad (0.2.1)
5
- activesupport (~> 7.0, <= 7.0.8)
4
+ capistrano-nomad (0.3.0)
5
+ activesupport (<= 7.0.8)
6
6
  byebug
7
7
  capistrano (~> 3.0)
8
8
  git
@@ -56,4 +56,4 @@ DEPENDENCIES
56
56
  capistrano-nomad!
57
57
 
58
58
  BUNDLED WITH
59
- 2.3.5
59
+ 2.4.20
data/README.md CHANGED
@@ -24,6 +24,32 @@ gem install capistrano-nomad
24
24
 
25
25
  ## Usage
26
26
 
27
+ Add to `Capfile`
28
+
29
+ ```ruby
30
+ require "capistrano/nomad"
31
+ install_plugin Capistrano::Nomad
32
+ ```
33
+
34
+ Define Nomad jobs within `deploy.rb`
35
+
36
+ ```ruby
37
+ nomad_job :app
38
+ nomad_job :redis
39
+
40
+ nomad_namespace :analytics do
41
+ nomad_job :grafana
42
+ end
43
+ ```
44
+
45
+ Utilize tasks
46
+
47
+ ```shell
48
+ cap production nomad:app:deploy
49
+ cap production nomad:redis:purge
50
+ cap production nomad:analytics:grafana:deploy
51
+ ```
52
+
27
53
  ## Development
28
54
 
29
55
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |spec|
4
4
  spec.name = "capistrano-nomad"
5
- spec.version = "0.2.1"
5
+ spec.version = "0.3.0"
6
6
  spec.authors = ["James Hu"]
7
7
 
8
8
  spec.summary = "Capistrano plugin for deploying and managing Nomad jobs"
@@ -27,7 +27,7 @@ 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", "<= 7.0.8"
30
+ spec.add_dependency "activesupport", "<= 7.0.8"
31
31
  spec.add_dependency "byebug"
32
32
  spec.add_dependency "capistrano", "~> 3.0"
33
33
  spec.add_dependency "git"
@@ -1,3 +1,7 @@
1
+ def capistrano_nomad_root
2
+ Pathname.new(fetch(:root) || "")
3
+ end
4
+
1
5
  def capistrano_nomad_deep_symbolize_hash_keys(hash)
2
6
  JSON.parse(JSON[hash], symbolize_names: true)
3
7
  end
@@ -61,16 +61,18 @@ def capistrano_nomad_build_docker_image(image_type, path, *args)
61
61
  capistrano_nomad_build_docker_image_alias(image_type, git_commit_id),
62
62
  capistrano_nomad_build_docker_image_alias(image_type, "latest"),
63
63
  "trunk/#{fetch(:stage)}/#{image_type}:latest",
64
- ].each do |tag|
65
- args << "--tag #{tag}"
66
- end
64
+ ]
65
+ .compact
66
+ .each do |tag|
67
+ args << "--tag #{tag}"
68
+ end
67
69
 
68
70
  # If any of these files exist then we're in the middle of rebase so we should interrupt
69
- if ["rebase-merge", "rebase-apply"].any? { |f| File.exist?("#{fetch(:git).dir.path}/.git/#{f}") }
71
+ if ["rebase-merge", "rebase-apply"].any? { |f| File.exist?("#{capistrano_nomad_git.dir.path}/.git/#{f}") }
70
72
  raise StandardError, "still in the middle of git rebase, interrupting docker image build"
71
73
  end
72
74
 
73
- system "docker build #{args.join(' ')} #{path}"
75
+ system "docker build #{args.join(' ')} .#{capistrano_nomad_root.join(path)}"
74
76
  end
75
77
  end
76
78
 
@@ -1,7 +1,7 @@
1
1
  require "git"
2
2
 
3
3
  def capistrano_nomad_git
4
- Git.open(".")
4
+ @capistrano_nomad_git ||= Git.open(".")
5
5
  end
6
6
 
7
7
  def capistrano_nomad_fetch_git_commit_id
@@ -36,9 +36,6 @@ class NomadErbNamespace
36
36
  end
37
37
 
38
38
  def capistrano_nomad_build_file_path(parent_path, basename, namespace: nil)
39
- # Remove initial slash if it exists
40
- parent_path = parent_path[1..] if parent_path[0] == "/"
41
-
42
39
  segments = [parent_path]
43
40
  segments << namespace if namespace
44
41
  segments << "#{basename}.hcl"
@@ -54,19 +51,27 @@ def capistrano_nomad_build_base_var_file_path(*args)
54
51
  capistrano_nomad_build_file_path(fetch(:nomad_var_files_path), *args)
55
52
  end
56
53
 
57
- def capistrano_nomad_build_local_job_path(name, *args)
58
- local_path = fetch(:root).join(capistrano_nomad_build_base_job_path(name, *args))
54
+ def capistrano_nomad_build_local_path(path, *args)
55
+ local_path = ".#{capistrano_nomad_root.join(path)}"
59
56
 
60
57
  # Determine if it has .erb appended or not
61
58
  [local_path, "#{local_path}.erb"].find { |path| File.exist?(path) }
62
59
  end
63
60
 
61
+ def capistrano_nomad_build_local_job_path(name, *args)
62
+ capistrano_nomad_build_local_path(capistrano_nomad_build_base_job_path(name, *args))
63
+ end
64
+
65
+ def capistrano_nomad_build_local_var_file_path(name, *args)
66
+ capistrano_nomad_build_local_path(capistrano_nomad_build_base_var_file_path(name, *args))
67
+ end
68
+
64
69
  def capistrano_nomad_build_release_job_path(*args)
65
- "#{release_path}/#{capistrano_nomad_build_base_job_path(*args)}"
70
+ "#{release_path}#{capistrano_nomad_build_base_job_path(*args)}"
66
71
  end
67
72
 
68
73
  def capistrano_nomad_build_release_var_file_path(*args)
69
- "#{release_path}/#{capistrano_nomad_build_base_var_file_path(*args)}"
74
+ "#{release_path}#{capistrano_nomad_build_base_var_file_path(*args)}"
70
75
  end
71
76
 
72
77
  def capistrano_nomad_execute_nomad_command(*args)
@@ -158,7 +163,7 @@ def capistrano_nomad_build_jobs_docker_images(names, *args)
158
163
 
159
164
  return false if image_types.empty?
160
165
 
161
- image_types.each { |i| capistrano_nomad_build_docker_image_for_type(i, *args) }
166
+ image_types.each { |i| capistrano_nomad_build_docker_image_for_type(i) }
162
167
  end
163
168
 
164
169
  def capistrano_nomad_push_jobs_docker_images(names, *args)
@@ -166,7 +171,7 @@ def capistrano_nomad_push_jobs_docker_images(names, *args)
166
171
 
167
172
  return false if image_types.empty?
168
173
 
169
- image_types.each { |i| capistrano_nomad_push_docker_image_for_type(i, *args) }
174
+ image_types.each { |i| capistrano_nomad_push_docker_image_for_type(i) }
170
175
  end
171
176
 
172
177
  def capistrano_nomad_assemble_jobs_docker_images(names, *args)
@@ -180,7 +185,7 @@ def capistrano_nomad_upload_jobs(names, *args)
180
185
 
181
186
  uniq_var_files.each do |var_file|
182
187
  capistrano_nomad_upload_file(
183
- local_path: capistrano_nomad_build_base_var_file_path(var_file, *args),
188
+ local_path: capistrano_nomad_build_local_var_file_path(var_file, *args),
184
189
  remote_path: capistrano_nomad_build_release_var_file_path(var_file, *args),
185
190
  )
186
191
  end
@@ -196,7 +201,7 @@ def capistrano_nomad_upload_jobs(names, *args)
196
201
  file_basename = nomad_job_options[:template] || name
197
202
 
198
203
  capistrano_nomad_upload_file(
199
- local_path: capistrano_nomad_build_base_job_path(file_basename, *args),
204
+ local_path: capistrano_nomad_build_local_job_path(file_basename, *args),
200
205
  remote_path: capistrano_nomad_build_release_job_path(name, *args),
201
206
  erb_vars: erb_vars,
202
207
  )
metadata CHANGED
@@ -1,22 +1,19 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-nomad
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
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-08 00:00:00.000000000 Z
11
+ date: 2023-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '7.0'
20
17
  - - "<="
21
18
  - !ruby/object:Gem::Version
22
19
  version: 7.0.8
@@ -24,9 +21,6 @@ dependencies:
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '7.0'
30
24
  - - "<="
31
25
  - !ruby/object:Gem::Version
32
26
  version: 7.0.8