deploy-context 2.2.0.3.gec16643.4.g20d2d42.4.g17e8559.12.g831d0a8.4.gbb2ab14.12.g0bc028d → 2.13.0

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.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/bin/deploy-context +3 -1
  4. data/libraries/context-manager.rb +103 -6
  5. data/libraries/deploy-context/cookbook-studio.rb +43 -0
  6. data/libraries/deploy-context/cucumber-studio.rb +9 -0
  7. data/libraries/deploy-context/default-studio.rb +58 -0
  8. data/libraries/deploy-context/deploy/context.rb +0 -70
  9. data/libraries/deploy-context/deploy/cookbook.rb +20 -4
  10. data/libraries/deploy-context/deploy/cucumber.rb +7 -3
  11. data/libraries/deploy-context/deploy/deployer.rb +20 -38
  12. data/libraries/deploy-context/deploy/git.rb +16 -14
  13. data/libraries/deploy-context/deploy/habitat.rb +112 -0
  14. data/libraries/deploy-context/deploy/ruby.rb +34 -9
  15. data/libraries/deploy-context/habitat-studio.rb +38 -0
  16. data/libraries/deploy-context/helpers/command.rb +7 -4
  17. data/libraries/deploy-context/helpers/rake_tasks.rb +143 -39
  18. data/libraries/deploy-context/ruby-studio.rb +24 -0
  19. data/libraries/deploy-context/steps/deploy.rb +53 -0
  20. data/libraries/deploy-context/studio/base.rb +155 -0
  21. data/libraries/deploy-context/studio/default.rb +65 -0
  22. data/libraries/deploy-context/studio/deployer.rb +20 -0
  23. data/libraries/deploy-context.rb +9 -13
  24. data.tar.gz.sig +0 -0
  25. metadata +184 -29
  26. metadata.gz.sig +0 -0
  27. data/.gitignore +0 -25
  28. data/.kitchen/logs/kitchen.log +0 -149
  29. data/CHANGELOG.md +0 -10
  30. data/Gemfile +0 -3
  31. data/Policyfile.rb +0 -16
  32. data/Rakefile +0 -3
  33. data/VERSION +0 -1
  34. data/chefignore +0 -115
  35. data/compliance/README.md +0 -25
  36. data/config/cucumber.yml +0 -5
  37. data/deploy-context.gemspec +0 -69
  38. data/features/code_update.feature +0 -13
  39. data/features/step_definitions/deploy-context.rb +0 -2
  40. data/features/support/env.rb +0 -6
  41. data/features/update_deployer.feature +0 -10
  42. data/features/updated_git.feature +0 -10
  43. data/kitchen.yml +0 -31
  44. data/libraries/deploy-context/deploy.rb +0 -36
  45. data/libraries/deploy-context/helpers/binary.rb +0 -7
  46. data/libraries/deploy-context/step_definitions/deploy-context.rb +0 -39
  47. data/metadata.rb +0 -23
  48. data/recipes/default.rb +0 -8
  49. data/test/integration/default/default_test.rb +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a018785a1f930ce498c5136c670cac36ce3fb429da5b4bbfabd3f072ceb4258b
4
- data.tar.gz: fa7d9c9180dfc46a76ee6a2148c85ba1ef9a81aac90d8dbfa9a80888585027f8
3
+ metadata.gz: '08c8c739173724f9a7dda28787085273acb385fd70d56968f3f026920e5f03ea'
4
+ data.tar.gz: 49b9d0954862b99645578d67a35a67a5308f19905249ef9775755b495bd8ffd2
5
5
  SHA512:
6
- metadata.gz: 1727d365a1482b7085e90c51727d4154d787678f152f2b407867309dd9a6b266de4772c1d8069f18eee84107de7516c6159918051f1b1f51fd19fd6043666897
7
- data.tar.gz: f71199ef9d1be1948283418a88fb820c39e8feb59e657538b14457cce10f9e7e1cae23ea4312a03450a2653f740bf56b75c96e7f0c6a206eaf1b6a92409aaaa5
6
+ metadata.gz: 9d81e5c113c71186b685e2e220fe5986b89666eeadcc24f0c2d79fa8bad2e5f3e98902f64e8a5806ac415277b5188d5931486e390edaa88fbb040aabed35d5ef
7
+ data.tar.gz: b003f2b7fee9374c14f8898646b4eba2e10968bb4bc3ea41a0035a5efb2f1f4281ab81cc8d50b7f600e7c52c52c852bcb0d29323546bcaf587811e01a69f5438
checksums.yaml.gz.sig CHANGED
Binary file
data/bin/deploy-context CHANGED
@@ -1,2 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
- require 'deploy-context/helpers/binary'
2
+ require_relative '../libraries/deploy-context'
3
+
4
+ Context::DeployContext.deployer.send(ARGV[0])
@@ -1,11 +1,108 @@
1
+
2
+ require_relative 'deploy-context/habitat-studio'
3
+
1
4
  module Context
2
- class Manager
3
- attr_reader :deployers
5
+ class Manager < HabitatStudio
6
+ attr_reader :contexts
7
+
8
+ def initialize(organisation_name, context_name, deploycontext_folder)
9
+ super(organisation_name, context_name, deploycontext_folder)
10
+
11
+ @contexts = Array.new
4
12
 
5
- def get_deployer(context_name, context_path)
6
- @deployers = Hash.new if @deployers.nil?
7
- @deployers['deploycontext'] = Context::DeployContext.new(context_path) unless deployers.key?(context_name)
8
- deployers[context_name]
13
+ abort("No context_name :(") if context_name.nil? || context_name.empty?
14
+ end
15
+
16
+ # 2
17
+ def do_download
18
+ super
19
+ contexts.each do |context|
20
+ context.do_download
21
+ end
22
+ true
23
+ end
24
+
25
+ # 3
26
+ def do_verify
27
+ super
28
+ contexts.each do |context|
29
+ context.do_verify
30
+ end
31
+ true
32
+ end
33
+
34
+ # 4
35
+ def do_clean
36
+ super
37
+ contexts.each do |context|
38
+ context.do_clean
39
+ end
40
+ true
41
+ end
42
+
43
+ # 5
44
+ def do_unpack
45
+ super
46
+ contexts.each do |context|
47
+ context.do_unpack
48
+ end
49
+ true
50
+ end
51
+
52
+ # 6
53
+ def do_prepare
54
+ super
55
+ contexts.each do |context|
56
+ context.do_prepare
57
+ end
58
+ true
59
+ end
60
+
61
+ # 7
62
+ def do_build
63
+ super
64
+ contexts.each do |context|
65
+ context.do_build
66
+ end
67
+ true
68
+ end
69
+
70
+ # 8
71
+ def do_check
72
+ super
73
+ contexts.each do |context|
74
+ context.do_check
75
+ end
76
+ true
77
+ end
78
+
79
+ # 9
80
+ def do_install
81
+ super
82
+ contexts.each do |context|
83
+ context.do_install
84
+ end
85
+ true
86
+ end
87
+
88
+ # 10
89
+ def do_strip
90
+ super
91
+ def do_install
92
+ contexts.each do |context|
93
+ context.do_strip
94
+ end
95
+ true
96
+ end
97
+ end
98
+
99
+ # 11
100
+ def do_end
101
+ super
102
+ contexts.each do |context|
103
+ context.do_end
104
+ end
105
+ true
9
106
  end
10
107
  end
11
108
  end
@@ -0,0 +1,43 @@
1
+ require_relative 'cucumber-studio'
2
+
3
+ module Context
4
+ class CookbookStudio < CucumberStudio
5
+ def initialize(organisation_name, context_name, deploycontext_folder)
6
+ super(organisation_name, context_name, deploycontext_folder)
7
+ end
8
+
9
+ # 7
10
+ def do_build
11
+ super
12
+ cookbook_build(self)
13
+ true
14
+ end
15
+
16
+ # 8
17
+ def do_check
18
+ super
19
+ cookbook_test(self)
20
+ true
21
+ end
22
+
23
+ # 9
24
+ def do_install
25
+ super
26
+ cookbook_install(self)
27
+ true
28
+ end
29
+
30
+ def do_strip
31
+ super
32
+ cookbook_push(self)
33
+ true
34
+ end
35
+
36
+ def do_end
37
+ super
38
+ cookbook_result = do_mix_cookbook
39
+ log "Mix the cookbook #{context_name}: #{cookbook_result.class}"
40
+ true
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,9 @@
1
+ require_relative 'ruby-studio'
2
+
3
+ module Context
4
+ class CucumberStudio < RubyStudio
5
+ def initialize(organisation_name, context_name, deploycontext_folder)
6
+ super(organisation_name, context_name, deploycontext_folder)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,58 @@
1
+ require_relative 'helpers/command'
2
+ require_relative 'helpers/rake_tasks'
3
+
4
+ require_relative 'deploy/context'
5
+ require_relative 'deploy/cookbook'
6
+ require_relative 'deploy/cucumber'
7
+ require_relative 'deploy/deployer'
8
+ require_relative 'deploy/git'
9
+ require 'rubygems'
10
+ require 'bundler'
11
+ require 'fileutils'
12
+ require 'json'
13
+
14
+ require_relative 'deploy/context'
15
+ require_relative 'deploy/cookbook'
16
+ require_relative 'deploy/cucumber'
17
+ require_relative 'deploy/deployer'
18
+ require_relative 'deploy/git'
19
+ require_relative 'deploy/habitat'
20
+ require_relative 'deploy/ruby'
21
+ require_relative 'deploy/vagrant'
22
+
23
+ require_relative 'studio/default'
24
+ require_relative 'studio/deployer'
25
+
26
+ require_relative 'helpers/command'
27
+ require_relative 'helpers/rake_tasks'
28
+
29
+ require_relative 'steps/deploy'
30
+
31
+ module Context
32
+ class DefaultStudio
33
+ include CommandHelper
34
+ include DeployHelpers::DeployerHelper
35
+ include DeployHelpers::GitHelper
36
+ include DeployHelpers::RubyHelper
37
+ include DeployHelpers::ContextHelper
38
+ include DeployHelpers::CookbookHelper
39
+ include DeployHelpers::HabitatHelper
40
+ include Studio::Base
41
+ include Studio::Default
42
+ include Steps::Deploy
43
+
44
+ attr_reader :context_name
45
+ attr_reader :context_folder
46
+
47
+ attr_accessor :existing_cucumber_runtime
48
+ attr_accessor :existing_cucumber_configuration
49
+
50
+ attr_reader :organisation_name
51
+
52
+ def initialize(organisation_name, context_name, deploycontext_folder)
53
+ @context_name = context_name
54
+ @context_folder = deploycontext_folder # move_folder(deploycontext_folder)
55
+ @organisation_name = organisation_name
56
+ end
57
+ end
58
+ end
@@ -21,80 +21,10 @@ module Context
21
21
  FileUtils.mkdir_p(context_folder) unless present_localy?
22
22
  end
23
23
 
24
- def version
25
- git_build(self)
26
- log "Getting version info for #{context_folder} and version should be #{GitVersionBump.version(true)}"
27
- Gem::Version.new(GitVersionBump.version(true))
28
- end
29
-
30
- def cycle
31
- ruby_cycle(self)
32
- end
33
-
34
- def test_context_successful?
35
- log "Check if #{context_name} is install #{version}"
36
- if gem_installed?(self)
37
- log "Test context #{context_name} was successfully install on version #{version}"
38
- true
39
- else
40
- log "Test context #{context_name} has failed to install #{version}"
41
- false
42
- end
43
- cookbook_test(self)
44
- cucumber_test(self)
45
- end
46
-
47
- def build
48
- ruby_build(self)
49
- cookbook_build(self)
50
- check_folder get_context_file(self, 'contexts')
51
- end
52
-
53
- def commit
54
- git_commit(self)
55
- cookbook_install(self)
56
- end
57
-
58
- def release
59
- log "\n\nRelease #{context_name} at version #{version}"
60
- cookbook_push(self)
61
- ruby_release(self)
62
- git_release(self)
63
- end
64
-
65
- def install
66
- ruby_install(self)
67
- end
68
-
69
- def clean
70
- clean_folder(self, 'contexts')
71
- ruby_clean(self)
72
- cookbook_clean(self)
73
- end
74
-
75
24
  def show_new_version(level)
76
25
  log "#{level} bump #{context_name} at newer version #{version}"
77
26
  end
78
27
 
79
- def patch_bump
80
- GitVersionBump.tag_version("#{GitVersionBump.major_version(true)}.#{GitVersionBump.minor_version(true)}.#{GitVersionBump.patch_version(true) + 1}")
81
- show_new_version('Patch')
82
- end
83
-
84
- def minor_bump
85
- GitVersionBump.tag_version("#{GitVersionBump.major_version(true)}.#{GitVersionBump.minor_version(true) + 1}.0")
86
- show_new_version('Minor')
87
- end
88
-
89
- def major_bump
90
- GitVersionBump.tag_version("#{GitVersionBump.major_version(true) + 1}.0.0")
91
- show_new_version('Major')
92
- end
93
-
94
- def wait_until_release_available
95
- wait_until_release_available unless is_present_publicly?
96
- end
97
-
98
28
  def is_present_publicly?
99
29
  ruby_check_if_available_public(self)
100
30
  end
@@ -2,6 +2,7 @@ module Context
2
2
  module DeployHelpers
3
3
  module CookbookHelper
4
4
  def chef(context, commands)
5
+ context.log "Executing chef command #{commands}"
5
6
  context.execute_command(%w(chef) + commands)
6
7
  end
7
8
 
@@ -34,7 +35,7 @@ module Context
34
35
  context.log("\n\nBuilding cookbook #{context.context_name}\n\n")
35
36
  context.git_build(context)
36
37
  Dir.chdir File.dirname(context.context_folder)
37
- context.generate_cookbook(context, [context.context_name])
38
+ context.generate_cookbook(context, [context.context_name]) unless Dir.exist?(context.get_context_file(context, 'recipes'))
38
39
  context.set_cookbook_version(context)
39
40
  Dir.chdir context.context_folder
40
41
  end
@@ -45,6 +46,12 @@ module Context
45
46
  context.kitchen(context)
46
47
  end
47
48
 
49
+ def cookbook_test_successful?(context)
50
+ result = cookbook_test(context)
51
+ context.log "\n\nCookbook test result: #{result}"
52
+ result
53
+ end
54
+
48
55
  def cookbook_install(context)
49
56
  cookbook_build(context)
50
57
  context.log "\n\nInstalling cookbook in folder #{Dir.pwd}\nAnd context #{context.context_name} is created in folder #{context.context_folder} at version #{context.version}"
@@ -66,19 +73,28 @@ module Context
66
73
 
67
74
  def clean_file(context, file)
68
75
  clean_file = context.get_context_file(context, file)
69
- puts "Clean file #{clean_file}"
76
+ context.log "Clean file #{clean_file}"
70
77
  FileUtils.rm(clean_file) if File.exist?(clean_file)
71
78
  end
72
79
 
73
80
  def cookbook_clean(context)
74
- cookbook_build(context)
81
+ context.cookbook_build(context)
75
82
  context.log "\n\nCleaningcookbook in folder #{Dir.pwd}\nAnd context #{context.context_name} is created in folder #{context.context_folder} at version #{context.version}"
76
- clean_file(context, 'Policyfile.lock.json')
83
+ context.clean_file(context, 'Policyfile.lock.json')
84
+ end
85
+
86
+ def mix_run_list(context, run_list)
87
+ context.execute_command(['chef-client', '-o', run_list])
88
+ end
89
+
90
+ def cookbook_version(context)
91
+ File.write(context.get_context_file(context, 'VERSION'))
77
92
  end
78
93
 
79
94
  def set_cookbook_version(context)
80
95
  context.git_build(context)
81
96
  File.write(context.get_context_file(context, 'VERSION'), context.shorten_version(context).strip)
97
+ File.write(context.get_context_file(context, 'DATE'), GVB.date)
82
98
  end
83
99
  end
84
100
  end
@@ -14,11 +14,9 @@ module Context
14
14
  end
15
15
 
16
16
  def cucumber(context, commands = [])
17
- # context.chef_exec(context,['cucumber'] + commands)
18
-
19
17
  context.existing_cucumber_runtime = cucumber_runtime(context, commands)
20
- # The dup is to keep ARGV intact, so that tools like ruby-debug can respawn.
21
18
  cucumber_runtime(context, commands).run!
19
+ # context.chef_exec(context,['cucumber'] + commands)
22
20
  end
23
21
 
24
22
  def cucumber_test(context)
@@ -26,6 +24,12 @@ module Context
26
24
  context.log "Working in folder #{Dir.pwd}\nAnd context #{context.context_name} is created in folder #{context.context_folder} at version #{context.version}"
27
25
  context.cucumber(context)
28
26
  end
27
+
28
+ def cucumber_test_successful?(context)
29
+ result = cucumber_test(context)
30
+ context.log "\n\nCucumber test result: #{result}"
31
+ result
32
+ end
29
33
  end
30
34
  end
31
35
  end
@@ -15,6 +15,11 @@ module Context
15
15
 
16
16
  def show_help(context)
17
17
  help_message = <<MESSAGE_END
18
+ #{
19
+ context.actions_permitted.each do |action|
20
+ puts "Available action '#{action}'"
21
+ end
22
+ }
18
23
  Use not option or the option 'cycle' to cycle through the deployer once
19
24
  Use the option 'agent' to made a continual loop of the cycle
20
25
  Use the option 'bump' to bump the patch version
@@ -27,56 +32,33 @@ MESSAGE_END
27
32
  context.error_log(context.context_name, help_message)
28
33
  end
29
34
 
35
+ def actions_permitted?(action)
36
+ log "Is Default action '#{action}' permitted?"
37
+ action_is_permit = actions_permitted.include?(action)
38
+
39
+ log "The answer is #{action_is_permit} through '#{actions_permitted}'"
40
+ action_is_permit
41
+ end
42
+
30
43
  def execute_action(context, action)
31
44
  state_action = if action.nil?
32
45
  show_help(context)
33
46
  false
34
47
  else
35
- case action
36
- when 'cycle'
37
- context.log "\nExecute only the cycle once\n"
38
- context.cycle
39
- true
40
- when 'agent'
41
- context.log "\nAlways in execution\n"
42
- while true do
43
- context.cycle
44
- end
45
- true
46
- when 'bump'
47
- context.log "\nBump minor version\n"
48
- context.patch_bump
49
- true
50
- when 'release'
51
- context.log "\nBump major version\n"
52
- context.minor_bump
53
- true
54
- when 'upgrade'
55
- context.log "\nBump major version\n"
56
- context.major_bump
57
- true
58
- when 'test'
59
- context.log "\nExecute tests\n"
60
- context.test_context_successful?
61
- when 'reset'
62
- context.log "\nReset versionning\n"
63
- system('rake')
64
- # context.cucumber_test(deployer)
65
- true
66
- when 'help'
67
- context.show_help(context)
68
- true
48
+ if context.respond_to?(action)
49
+ context.log("\n\nStarting Action '#{action}'")
50
+ context.send(action)
69
51
  else
70
- context.error_log context.context_name, "Unknown setting #{action}"
71
- show_help(context)
52
+ context.error_log(context, "Action '#{action}' is unavailable")
72
53
  false
73
54
  end
74
55
  end
75
- context.commit
56
+ # context.commit
76
57
  if state_action
77
58
  context.log "\n\nAction #{action} executed correctly in context #{context}"
59
+ state_action.perform unless state_action.kind_of?(TrueClass) || state_action.kind_of?(Integer)
78
60
  else
79
- context.error_log(context.context_name, "Failed to execute action #{action} in context #{context}")
61
+ context.error_log(context.context_name, "Failed to execute action #{action} in context #{context.context_name} resulting to a #{state_action}")
80
62
  end
81
63
  end
82
64
  end
@@ -9,17 +9,19 @@ module Context
9
9
  if context.present_localy?
10
10
  Dir.chdir(context.context_folder)
11
11
  context.git_pull(context)
12
+ true
12
13
  else
13
14
  context.error_log context.context_name, "Cloning from source in #{Dir.pwd}"
14
15
  local_dir = File.join(Dir.pwd, context.context_name)
15
16
  context.git context, ["clone git@github.com:JimboDragonGit/#{context.context_name}.git"] unless ::Dir.exist?(local_dir)
16
17
  context.move_folder(local_dir)
18
+ true
17
19
  end
18
20
  end
19
21
 
20
22
  def git_pull(context)
21
23
  context.git_build(context) unless context.actual_working_directory?
22
- context.git context, %w(pull)
24
+ log "Git pull result: #{context.git context, %w(pull)}"
23
25
  end
24
26
 
25
27
  def git_commit(context)
@@ -28,21 +30,21 @@ module Context
28
30
  context.git context, ["commit -m 'Create #{context.context_name} automatic commit'"]
29
31
  end
30
32
 
31
- def git_release(context)
32
- context.git_build(context)
33
- context.git context, ['push', '--follow-tags']
34
- end
33
+ # def git_release(context)
34
+ # context.git_build(context)
35
+ # context.git context, ['push', '--follow-tags']
36
+ # end
35
37
 
36
- def git_bump(context, level)
37
- context.git_build(context)
38
- context.git context, ['version-bump', level]
39
- context.git_commit(context)
40
- end
38
+ # def git_bump(context, level)
39
+ # context.git_build(context)
40
+ # context.git context, ['version-bump', level]
41
+ # context.git_commit(context)
42
+ # end
41
43
 
42
- def patch_reset(context)
43
- context.git_build(context)
44
- context.git_bump(context, 'minor')
45
- end
44
+ # def patch_reset(context)
45
+ # context.git_build(context)
46
+ # context.git_bump(context, 'minor')
47
+ # end
46
48
 
47
49
  def git_update_available?(context)
48
50
  context.git_build(context)
@@ -0,0 +1,112 @@
1
+ module Context
2
+ module DeployHelpers
3
+ module HabitatHelper
4
+ def habitat_organisation_name(context)
5
+ 'jimbodragon'
6
+ end
7
+
8
+ def habitat(context, commands = [])
9
+ context.chef_exec(context, ['hab'] + commands)
10
+ end
11
+
12
+ def intialize_habitat(context, commands = [])
13
+ context.habitat(context, ['plan', 'init'] + commands)
14
+ end
15
+
16
+ def render_habitat(context, commands = [])
17
+ context.habitat(context, ['plan', 'render'] + commands)
18
+ end
19
+
20
+ def build_habitat(context, commands = [])
21
+ context.habitat(context, ['studio', 'build', 'habitat/plan.sh'] + commands)
22
+ context.set_hab_build_id(context)
23
+ end
24
+
25
+ def start_habitat_job(context, commands = [])
26
+ context.log("Starting an Habitat job #{context.get_shell_data(['hab', 'bldr', 'job', 'start', 'habitat/plan.sh'])}")
27
+ true
28
+ end
29
+
30
+ def promote_habitat(context, job_id = File.read(get_context_file(context, 'HAB_BUILD_ID')), channel = 'unstable')
31
+ if ! context.already_promoted?(context) && context.latest_hab_build_succeed?(context)
32
+ context.habitat(context, ['bldr', 'job', 'promote', job_id, channel])
33
+ else
34
+ context.error_log(context, "Promote context #{context.context_name} impossible")
35
+ end
36
+ end
37
+
38
+ def load_habitat(context, commands = [])
39
+ supervisor_command = %w(hab svc load) + ["#{habitat_organisation_name(context)}/#{context.context_name}", '--strategy at-once']
40
+ if context.is_admin?
41
+ context.habitat(context, supervisor_command + commands)
42
+ else
43
+ context.execute_command(%w(sudo hab) + supervisor_command + commands) unless Gem.win_platform?
44
+ end
45
+ end
46
+
47
+ def run_habitat_supervisor(context, commands = [])
48
+ supervisor_command = %w(sup run)
49
+ if context.is_admin?
50
+ context.habitat(context, supervisor_command + commands)
51
+ else
52
+ context.execute_command(%w(sudo hab) + supervisor_command + commands) unless Gem.win_platform?
53
+ end
54
+ end
55
+
56
+ def install_habitat_supervisor(context, commands = [])
57
+ supervisor_command = %w(sup run)
58
+ if context.is_admin?
59
+ context.habitat(context, supervisor_command + commands)
60
+ else
61
+ context.execute_command(%w(sudo hab) + supervisor_command + commands) unless Gem.win_platform?
62
+ end
63
+ end
64
+
65
+ def hab_latest_build_status(context)
66
+ build_result = OpenStruct.new
67
+ build_result.command = [
68
+ 'hab bldr job status',
69
+ '--showjobs -l 25 --origin',
70
+ context.organisation_name,
71
+ "| grep '#{context.context_name}' | head -n 1",
72
+ ]
73
+ # build_result.result_file = File.join(context.temp_dir, 'raw_return.txt')
74
+ # context.log "Getting data from command #{build_result.command} and result at #{build_result.result_file}"
75
+ # File.write(build_result.result_file, context.get_shell_data(build_result.command))
76
+ # build_result.build_id_raw = "#{File.read(build_result.result_file)}"
77
+ # context.log "And raw return from file is #{build_result.build_id_raw}"
78
+ # build_result.return_arr = build_result.build_id_raw.split("\n")
79
+ # context.log "And return array is #{build_result.return_arr}"
80
+ # build_result.return_str = build_result.return_arr[3]
81
+ # context.log "And return string is #{build_result.return_str}"
82
+ # build_result.result_arr = build_result.return_str.split(' ')
83
+ # context.log "And result array is #{build_result.result_arr}"
84
+
85
+ result_array = context.get_shell_data(build_result.command).split("\n")[0].split(' ')
86
+ build_result.id = result_array[1]
87
+ build_result.status = result_array[2]
88
+ build_result
89
+ end
90
+
91
+ def hab_build_id(context)
92
+ File.read(context.get_context_file(context, 'HAB_BUILD_ID'))
93
+ end
94
+
95
+ def already_promoted?(context)
96
+ context.hab_latest_build_status(context).id == context.hab_build_id(context)
97
+ end
98
+
99
+ def latest_hab_build_succeed?(context)
100
+ context.hab_latest_build_status(context).status == 'Complete'
101
+ end
102
+
103
+ def set_hab_build_id(context)
104
+ context.git_build(context)
105
+ # , "#{organisation_name}/#{context_name}"
106
+ log "Setting the build ID to #{context.hab_build_id(context)}"
107
+
108
+ File.write(context.get_context_file(context, 'HAB_BUILD_ID'), context.hab_build_id(context))
109
+ end
110
+ end
111
+ end
112
+ end