deploy-context 2.13.11 → 2.13.17

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +4 -0
  3. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/context-knife-context.rb +26 -0
  4. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/context-manager.rb +100 -0
  5. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/cookbook-studio.rb +72 -0
  6. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/cucumber-studio.rb +45 -0
  7. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/cucumber-suite.rb +179 -0
  8. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/default-studio.rb +174 -0
  9. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/chef.rb +57 -0
  10. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/context.rb +42 -0
  11. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/cookbook.rb +121 -0
  12. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/cucumber.rb +42 -0
  13. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/deployer.rb +83 -0
  14. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/git.rb +62 -0
  15. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/habitat.rb +112 -0
  16. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/ruby.rb +138 -0
  17. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/deploy/vagrant.rb +7 -0
  18. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/habitat-studio.rb +50 -0
  19. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/helpers/command.rb +91 -0
  20. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/helpers/gemspec.rb +91 -0
  21. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/helpers/rake_tasks.rb +150 -0
  22. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/knife/default_knife_context.rb +35 -0
  23. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/knife/dummy_knife.rb +43 -0
  24. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/ruby-studio.rb +56 -0
  25. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/steps/deploy.rb +61 -0
  26. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/studio/base.rb +167 -0
  27. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/studio/default.rb +38 -0
  28. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context/studio/deployer.rb +24 -0
  29. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-context.rb +65 -0
  30. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-definitions/deploy-context-cucumber.rb +18 -0
  31. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-definitions/deploy-context-git.rb +47 -0
  32. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-definitions/deploy-context-habitat.rb +82 -0
  33. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-definitions/deploy-context-kitchen.rb +67 -0
  34. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-definitions/deploy-context-knife.rb +45 -0
  35. data/home/jimboadmin/deploy-context/habitat/plan.sh/x86_64-linux/lib/deploy-definitions/deploy-context-rake.rb +12 -0
  36. data.tar.gz.sig +0 -0
  37. metadata +64 -6
  38. metadata.gz.sig +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f8e90ad3861e5104982efc42655af8b9aba20b7b79be2fc6d1bfa89ad1f6924
4
- data.tar.gz: 66d5a3c8e731cbd7065560d98e38e3f5612c28e97dce64820de69dc867fb6c21
3
+ metadata.gz: eedb55204296d3a40fb764fc98405ba649b9b7bd72591173d321219dff1959f2
4
+ data.tar.gz: 4d7335e2950bd7d0a23b7fcdc1491ac0018dffda89b7f85a2ed69caefa34265e
5
5
  SHA512:
6
- metadata.gz: e3c9931f174543641980ac94eedff1c67d5f31fa43dece4291f27c52caaf5cc994e60a316c78ec907b47a090ace572ce532c01d88e9e5ea577e5afc0ca5eefac
7
- data.tar.gz: c61fa41887592cf3cde27303cd0f6e910f3eaa961c79b18a26a8dac0effb4087663b3e73af7bb41dea249e73db8d2bbc3a388b5fea618acf517ec834fa7dbf21
6
+ metadata.gz: 983ab1d0979cdfb638738cec8b745fae58977dba8a8aacd1e7351fe4110d605fb8d77aa9da9624faa2be65f9a4a95f22c3a38acc05f422d84e1de5c2c6544816
7
+ data.tar.gz: 9ccfadc63cdfda64fa2f4989d31693c84825ab26ee20521575880d0a243d1d68679a92fefa6055607682c8333131dc05243a8d8cf95f295a00e6c028a24d2e6c
checksums.yaml.gz.sig ADDED
@@ -0,0 +1,4 @@
1
+ ^�ߠ�:Ж�Z���N�U�E�a����u��b�����-V�Eȫ~K�B�5��
2
+ =f��8���2��i�!���Ŀ�u?�r����,4*�t�-�p
3
+ ь5bt ��F3?k�!��[w�}s@��F� x{��FJae����ă
4
+ �@6��9�=X���1N�T+2�J��S�'\�;�!�rV��4G��$�"��9I϶I���#��d�����n�G���܇K��Ռ�s�c�xW���r���Ɔ��k��q�:�޾Z��#�?D�4<�E+�#��Gbw����z�f��c��>xk��J����^��1��O��P=皹��ɬ�ԟ�\G��V'P\6i&1���?՜�nT�W扑������
@@ -0,0 +1,26 @@
1
+
2
+ require_relative 'context-manager'
3
+
4
+ module Context
5
+ class ContextKnifeContext < DefaultStudio
6
+ banner "knife context knife context"
7
+
8
+ deps do
9
+ Knife::DefaultKnifeContext.load_deps
10
+ end
11
+
12
+ option :context,
13
+ :description => "Load an object internally on it"
14
+
15
+ def run
16
+ # Context::DeployContext.deployer.send(config[:omg])
17
+ if config[:omg]
18
+ # Oh yeah, we are pumped.
19
+ puts "OMG HELLO WORLD!!!8!!88"
20
+ else
21
+ # meh
22
+ puts "I am just a fucking example. 8"
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,100 @@
1
+
2
+ require_relative 'deploy-context/cucumber-studio'
3
+
4
+ module Context
5
+ class Manager < DefaultStudio
6
+ attr_reader :contexts
7
+
8
+ # 2
9
+ def do_download
10
+ super
11
+ contexts.each do |context|
12
+ context.do_download
13
+ end
14
+ true
15
+ end
16
+
17
+ # 3
18
+ def do_verify
19
+ super
20
+ contexts.each do |context|
21
+ context.do_verify
22
+ end
23
+ true
24
+ end
25
+
26
+ # 4
27
+ def do_clean
28
+ super
29
+ contexts.each do |context|
30
+ context.do_clean
31
+ end
32
+ true
33
+ end
34
+
35
+ # 5
36
+ def do_unpack
37
+ super
38
+ contexts.each do |context|
39
+ context.do_unpack
40
+ end
41
+ true
42
+ end
43
+
44
+ # 6
45
+ def do_prepare
46
+ super
47
+ contexts.each do |context|
48
+ context.do_prepare
49
+ end
50
+ true
51
+ end
52
+
53
+ # 7
54
+ def do_build
55
+ super
56
+ contexts.each do |context|
57
+ context.do_build
58
+ end
59
+ true
60
+ end
61
+
62
+ # 8
63
+ def do_check
64
+ super
65
+ contexts.each do |context|
66
+ context.do_check
67
+ end
68
+ true
69
+ end
70
+
71
+ # 9
72
+ def do_install
73
+ super
74
+ contexts.each do |context|
75
+ context.do_install
76
+ end
77
+ true
78
+ end
79
+
80
+ # 10
81
+ def do_strip
82
+ super
83
+ def do_install
84
+ contexts.each do |context|
85
+ context.do_strip
86
+ end
87
+ true
88
+ end
89
+ end
90
+
91
+ # 11
92
+ def do_end
93
+ super
94
+ contexts.each do |context|
95
+ context.do_end
96
+ end
97
+ true
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,72 @@
1
+ require_relative 'ruby-studio'
2
+
3
+ module Context
4
+ class ContextCookbookStudio < DefaultStudio
5
+ banner "knife context cookbook studio"
6
+
7
+ deps do
8
+ Knife::DefaultKnifeContext.load_deps
9
+ end
10
+
11
+ def run
12
+ case name_args[0]
13
+ when 'converge'
14
+ kitchen(self, name_args)
15
+ when 'verify'
16
+ kitchen(self, name_args)
17
+ when 'destroy'
18
+ kitchen(self, name_args)
19
+ end
20
+ end
21
+
22
+ # 4
23
+ def do_clean
24
+ super
25
+ delete_file_only_if_exist(get_context_file(self, 'Policyfile.lock.json'))
26
+ kitchen(%w(destroy))
27
+ true
28
+ end
29
+
30
+ # 6
31
+ def do_prepare
32
+ cookbook_build(self)
33
+ true
34
+ end
35
+
36
+ # 7
37
+ def do_build
38
+ cookbook_install(self)
39
+ true
40
+ end
41
+
42
+ # 8
43
+ def do_check
44
+ cookbook_test(self)
45
+ true
46
+ end
47
+
48
+ # 9
49
+ def do_install
50
+ knife_push(self)
51
+ true
52
+ end
53
+
54
+ # 10
55
+ def do_strip
56
+ super
57
+ cookbook_push(self)
58
+ true
59
+ end
60
+
61
+ # 11
62
+ def do_end
63
+ super
64
+ supermarket_push(self)
65
+ true
66
+ end
67
+
68
+ def studio_available?
69
+ is_binary_available?('kitchen') && is_binary_available?('knife') && super
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,45 @@
1
+ require_relative 'habitat-studio'
2
+
3
+ module Context
4
+ class ContextCucumberStudio < DefaultStudio
5
+ banner "knife context cucumber studio"
6
+
7
+ deps do
8
+ Knife::DefaultKnifeContext.load_deps
9
+ end
10
+
11
+ def run
12
+ case name_args[1]
13
+ when 'destroy'
14
+ execute_command(%w(knife context cookbook studio destroy)) if name_args[0] == 'kitchen'
15
+ when 'enter'
16
+ execute_command(%w(knife context habitat studio enter)) if name_args[0] == 'habitat'
17
+ when 'build'
18
+ execute_command(%w(knife context habitat studio build) + name_args) if name_args[0] == 'habitat'
19
+ else
20
+ if name_args[0]
21
+ additionnal_tag = name_args[1].nil? ? [] : ['--tags', "@#{name_args[1]}"]
22
+ case name_args[0]
23
+ when 'cycle'
24
+ cucumber(self, ['--profile', 'preinit'] + additionnal_tag)
25
+ cucumber(self, ['--profile', 'initialize'] + additionnal_tag)
26
+ cucumber(self, ['--profile', 'planning'] + additionnal_tag)
27
+ cucumber(self, ['--profile', 'execution'] + additionnal_tag)
28
+ cucumber(self, ['--profile', 'closure'] + additionnal_tag)
29
+ cucumber(self, ['--profile', 'post_mortem'] + additionnal_tag)
30
+ when 'bump'
31
+ execute_command(%w(chef exec git version-bump patch))
32
+ else
33
+ cucumber(self, ['--profile', name_args[0]] + additionnal_tag)
34
+ end
35
+ else
36
+ cucumber(self)
37
+ end
38
+ end
39
+ end
40
+
41
+ def studio_available?
42
+ is_binary_available?('cucumber') && super
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,179 @@
1
+
2
+ require_relative 'deploy/context'
3
+ require_relative 'deploy/chef'
4
+ require_relative 'deploy/cookbook'
5
+ require_relative 'deploy/cucumber'
6
+ require_relative 'deploy/deployer'
7
+ require_relative 'deploy/git'
8
+ require_relative 'deploy/habitat'
9
+ require_relative 'deploy/ruby'
10
+ require_relative 'deploy/vagrant'
11
+
12
+ module Context
13
+ module CucumberSuiteHelper
14
+ include Context::CommandHelper
15
+ include DeployHelpers::DeployerHelper
16
+ include DeployHelpers::ChefHelper
17
+ include DeployHelpers::GitHelper
18
+ include DeployHelpers::RubyHelper
19
+ include DeployHelpers::ContextHelper
20
+ include DeployHelpers::CookbookHelper
21
+ include DeployHelpers::HabitatHelper
22
+ include DeployHelpers::CucumberHelper
23
+
24
+ include Studio::Base
25
+ include Studio::Default
26
+ include Steps::Deploy
27
+
28
+ def context_suite
29
+ if @context_suite.nil?
30
+ @context_suite = OpenStruct.new
31
+ @context_suite.status_file = 'deploy-status.json'
32
+ # @context_suite.suite_kitchen = "patatae"
33
+ @context_suite.status = :initialisation
34
+ end
35
+ @context_suite
36
+ end
37
+
38
+ def verify_kitchen_status
39
+ context_suite.status = case kitchen_status['last_action']
40
+ when "verify"
41
+ kitchen_status['last_error'].nil? ? :verified : :verification_fail
42
+ when "converge"
43
+ kitchen_status['last_error'].nil? ? :converged : :converge_fail
44
+ when nil
45
+ :destroyed
46
+ else
47
+ warning_context_log("Kitchen status", kitchen_status['last_action'].inspect)
48
+ :unknown
49
+ end
50
+ end
51
+
52
+ def dirty_branch?
53
+ `git status --porcelain`.split('\n').count > 0
54
+ end
55
+
56
+ def branch_exist?
57
+ system("git branch --list #{context_suite.branch_name}")
58
+ end
59
+
60
+ def git_commit_successfully?
61
+ system("git commit -m 'Automatic cucumber commit on branch #{context_suite.branch_name}'")
62
+ end
63
+
64
+ def merge_with_branch_successfull?(source_branch)
65
+ system("git merge #{source_branch} #{context_suite.branch_name}")
66
+ end
67
+
68
+ def merge_to_master_successfull?
69
+ merge_with_branch_successfull?(context_suite.branch_name, 'master')
70
+ end
71
+
72
+ def switch_branch_successful?
73
+ system("git checkout #{context_suite.branch_name}")
74
+ end
75
+
76
+ def kitchen_suite_exist?
77
+ system("kitchen list #{context_suite.suite_kitchen}")
78
+ end
79
+
80
+ def verify_kitchen?
81
+ system("kitchen verify #{context_suite.suite_kitchen}")
82
+ end
83
+
84
+ def verify_secret?(secret_key)
85
+ system("hab origin secret list | grep #{secret_key}")
86
+ end
87
+
88
+ def kitchen_converged_successfully?
89
+ system("kitchen converge #{context_suite.suite_kitchen}")
90
+ end
91
+
92
+ def kitchen_destroyed_correctly?
93
+ system("kitchen destroy #{context_suite.suite_kitchen}")
94
+ end
95
+
96
+ def kitchen_tested_successfully?
97
+ system("kitchen test #{context_suite.suite_kitchen}")
98
+ end
99
+
100
+ def habitat_task_different?
101
+ jop_id = last_job_status[1]
102
+ jop_id != File.read('HAB_BUILD_ID')
103
+ end
104
+
105
+ def habitat_task_completed?
106
+ jop_status = last_job_status[2]
107
+ jop_status == 'Complete'
108
+ end
109
+
110
+ def job_status_raw
111
+ `hab bldr job status --origin #{context_suite.organisation_name} | grep #{context_suite.organisation_name}/#{context_suite.application_name}`
112
+ end
113
+
114
+ def last_job_status
115
+ job_status_arr = job_status_raw.split('\n')
116
+ jop_status = job_status_arr[0].split(' ')
117
+ end
118
+
119
+ def habitat_new_task?
120
+ jop_status = last_job_status[2]
121
+ jop_status == 'Dispatching'
122
+ end
123
+
124
+ def write_build_id
125
+ jop_id = last_job_status[1]
126
+ File.write('HAB_BUILD_ID', jop_id)
127
+ end
128
+
129
+ def write_cookbook_version
130
+ short_version = Gem::Version.new(GVB.version).canonical_segments[0..2].join('.')
131
+ File.write('VERSION', short_version)
132
+ File.write('DATE', GVB.date)
133
+ File.write('habitat/plan.sh/VERSION', short_version)
134
+ File.write('habitat/plan.sh/DATE', GVB.date)
135
+ end
136
+
137
+ def verify_habitat?
138
+ system("hab studio run echo")
139
+ end
140
+
141
+ def plan_build_successfully?
142
+ system("hab studio build #{context_suite.plan_path}")
143
+ end
144
+
145
+ def context_status
146
+ JSON.parse(File.read(context_suite.status_file))[:status]
147
+ end
148
+
149
+ def kitchen_status
150
+ JSON.parse(`kitchen list #{context_suite.suite_kitchen} --json`).detect{|suite| suite['instance'].include?(context_suite.suite_kitchen)}
151
+ end
152
+
153
+ def command_available?(app_name, sub_command)
154
+ system("knife #{app_name} #{sub_command}")
155
+ end
156
+
157
+ def stop_test(message, status)
158
+ wrap_message = "#{status}:: #{message}"
159
+ update_status status
160
+ abort(wrap_message)
161
+ end
162
+
163
+ def update_status(new_status)
164
+ context_suite.status = new_status
165
+ update_status_file
166
+ end
167
+
168
+ def update_status_file
169
+ File.write(context_suite.status_file, JSON.pretty_generate({
170
+ status_file: context_suite.status_file,
171
+ kitchen_suite: context_suite.kitchen_suite,
172
+ plan_path: context_suite.plan_path,
173
+ branch_name: context_suite.branch_name,
174
+ status: context_suite.status,
175
+ }
176
+ ))
177
+ end
178
+ end
179
+ end
@@ -0,0 +1,174 @@
1
+ require 'rubygems'
2
+ require 'bundler'
3
+ require 'fileutils'
4
+ require 'json'
5
+
6
+ require 'git-version-bump'
7
+
8
+ require_relative 'helpers/command'
9
+ require_relative 'helpers/rake_tasks'
10
+
11
+ require_relative 'studio/default'
12
+ require_relative 'studio/deployer'
13
+
14
+ require_relative 'steps/deploy'
15
+
16
+ require_relative 'knife/default_knife_context'
17
+ require_relative 'cucumber-suite'
18
+
19
+ # require_relative 'ruby-studio'
20
+ # require_relative 'cookbook-studio'
21
+ # require_relative 'habitat-studio'
22
+ # require_relative 'cucumber-studio'
23
+
24
+ module Context
25
+ class DefaultStudio < Knife::DefaultKnifeContext
26
+ include CucumberSuiteHelper
27
+
28
+ # attr_reader :context_name
29
+ # attr_reader :context_folder
30
+
31
+ # attr_accessor :existing_cucumber_runtime
32
+ # attr_accessor :existing_cucumber_configuration
33
+
34
+ # attr_reader :organisation_name
35
+
36
+ attr_reader :ruby_studio
37
+ attr_reader :cookbook_studio
38
+ attr_reader :habitat_studio
39
+ attr_reader :cucumber_studio
40
+
41
+ # attr_reader :context_state
42
+
43
+ banner 'knife default studio'
44
+
45
+ deps do
46
+ end
47
+
48
+ option :context_name,
49
+ :short => '-N',
50
+ :long => '--context-name',
51
+ :description => "Name of the context"
52
+
53
+ option :ruby_studio,
54
+ :short => '-B',
55
+ :long => '--ruby-studio',
56
+ :description => "Path of the ruby studio"
57
+
58
+ option :cookbook_studio,
59
+ :short => '-B',
60
+ :long => '--cookbook-studio',
61
+ :description => "Path of the cookbook studio"
62
+
63
+ option :habitat_studio,
64
+ :short => '-H',
65
+ :long => '--habitat-studio',
66
+ :description => "Path of the habitat studio"
67
+
68
+ option :cucumber_studio,
69
+ :short => '-C',
70
+ :long => '--cucumber-studio',
71
+ :description => "Path of the cucumber studio"
72
+
73
+ option :context_state,
74
+ :short => '-S',
75
+ :long => '--context-state',
76
+ :description => "Set the value of the state before run"
77
+
78
+ # def initialize(argv)
79
+ # end
80
+
81
+ # def initialize(context_organisation_name, deployer_context_name, deploycontext_folder, default_ruby_studio = nil)
82
+ # @context_name = deployer_context_name
83
+ # @context_folder = deploycontext_folder # move_folder(deploycontext_folder)
84
+ # @organisation_name = context_organisation_name
85
+ # @ruby_studio = default_ruby_studio
86
+ # end
87
+
88
+ def context_name
89
+ config[:context_name]
90
+ end
91
+
92
+ def context_folder
93
+ config[:context_folder]
94
+ end
95
+
96
+ def existing_cucumber_runtime
97
+ config[:existing_cucumber_runtime]
98
+ end
99
+
100
+ def existing_cucumber_configuration
101
+ config[:existing_cucumber_configuration]
102
+ end
103
+
104
+ def organisation_name
105
+ config[:organisation_name]
106
+ end
107
+
108
+ def ruby_studio
109
+ @ruby_studio = RubyStudio.new if @ruby_studio.nil?
110
+ @ruby_studio
111
+ end
112
+
113
+ def cookbook_studio
114
+ @cookbook_studio = CookbookStudio.new if @cookbook_studio.nil?
115
+ @cookbook_studio
116
+ end
117
+
118
+ def habitat_studio
119
+ @habitat_studio = HabitatStudio.new if @habitat_studio.nil?
120
+ @habitat_studio
121
+ end
122
+
123
+ def cucumber_studio
124
+ @cucumber_studio = CucumberStudio.new if @cucumber_studio.nil?
125
+ @cucumber_studio
126
+ end
127
+
128
+ def studio_order
129
+ [ruby_studio, cookbook_studio, habitat_studio, cucumber_studio]
130
+ end
131
+
132
+ def do_begin
133
+ # @ruby_studio = Context::RubyStudio.new(organisation_name, context_name, context_folder) if ruby_studio.nil?
134
+
135
+ # @cookbook_studio = Context::CookbookStudio.new(organisation_name, context_name, context_folder, ruby_studio) if cookbook_studio.nil?
136
+
137
+ # @habitat_studio = Context::HabitatStudio.new(organisation_name, context_name, context_folder, ruby_studio) if habitat_studio.nil?
138
+
139
+ # @cucumber_studio = Context::CucumberStudio.new(organisation_name, context_name, context_folder, ruby_studio) if cucumber_studio.nil?
140
+
141
+ studio_order
142
+ end
143
+
144
+ # 2
145
+ def do_download
146
+ git_build(self)
147
+ end
148
+
149
+ # 3
150
+ def do_verify
151
+ git_build(self)
152
+ end
153
+
154
+ # 4
155
+ def do_clean
156
+ delete_file_only_if_exist(get_context_file(self, 'respond.txt'))
157
+ true
158
+ end
159
+
160
+ # 10
161
+ def do_strip
162
+ git_build(self)
163
+ end
164
+
165
+ # 11
166
+ def do_end
167
+ git_commit(self)
168
+ end
169
+
170
+ def studio_available?
171
+ is_binary_available?('git')
172
+ end
173
+ end
174
+ end
@@ -0,0 +1,57 @@
1
+ module Context
2
+ module DeployHelpers
3
+ module ChefHelper
4
+ def prepare_workplan
5
+ FileUtils.mkdir 'workstation-space' unless Dir.exist?('workstation-space')
6
+ prepare_chef
7
+ prepare_gem
8
+ prepare_ssh
9
+ prepare_git
10
+ end
11
+
12
+ def prepare_chef
13
+ FileUtils.cp_r '/etc/chef', 'workstation-space/chef-client'
14
+
15
+ chef_user_keys_folder = 'workstation-space/chef_user_keys'
16
+
17
+ FileUtils.mkdir chef_user_keys_folder unless Dir.exist?(chef_user_keys_folder)
18
+
19
+ FileUtils.cp File.join(ENV['HOME'],'.chef/credentials'), 'workstation-space/chef_credentials'
20
+ client_keys = File.read('workstation-space/chef_credentials').split("\n").select do |line_str|
21
+ line_str.include?('client_key')
22
+ end
23
+ client_keys.each do |key_line|
24
+ key_file = key_line.split('=')[1].strip.split("'")[1]
25
+ debug_context_log 'Knife keys', "Copy file #{key_file} to #{chef_user_keys_folder}"
26
+ FileUtils.cp key_file, File.join(chef_user_keys_folder, File.basename(key_file))
27
+ end
28
+ end
29
+
30
+ def prepare_gem
31
+ FileUtils.cp File.join(ENV['HOME'],'.local/share/gem/credentials'), 'workstation-space/gem_credentials'
32
+ end
33
+
34
+ def prepare_ssh
35
+ FileUtils.cp_r File.join(ENV['HOME'],'.ssh'), 'workstation-space/ssh'
36
+ end
37
+
38
+ def prepare_git
39
+ FileUtils.cp File.join(ENV['HOME'],'.gitconfig'), 'workstation-space/gitconfig'
40
+ end
41
+
42
+ def generate_user_json
43
+ warning_context_log 'Habitat origin secrets', JSON.pretty_generate({
44
+ HAB_STUDIO_SECRET_CHEF_SERVER_URL: 'https://api.chef.io/organizations/jimbodragon',
45
+ HAB_STUDIO_SECRET_CHEFVALIDATORKEY: File.read('workstation-space/chef-client/validation.pem'),
46
+ HAB_STUDIO_SECRET_SSHPRIVATEKEY: File.read('workstation-space/ssh/id_rsa'),
47
+ HAB_STUDIO_SECRET_SSHPUBLICKEY: File.read('workstation-space/ssh/id_rsa.pub'),
48
+ HAB_STUDIO_SECRET_CLIENT_NAME: 'jprovencher',
49
+ HAB_STUDIO_SECRET_CLIENT_KEY: File.read('workstation-space/chef_user_keys/jprovencher.pem'),
50
+ HAB_STUDIO_SECRET_GEMAPI: File.read('workstation-space/gem_credentials'),
51
+ HAB_STUDIO_SECRET_EMAIL: 'jimmy.provencher@hotmail.ca',
52
+ HAB_STUDIO_SECRET_FULLNAME: 'Jimmy Provencher'
53
+ })
54
+ end
55
+ end
56
+ end
57
+ end