azdeploy 1.0.17 → 1.0.18

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 (5) hide show
  1. checksums.yaml +4 -4
  2. data/azdeploy.gemspec +2 -2
  3. data/lib/build.rb +29 -24
  4. data/lib/transform.rb +73 -29
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0be51d4ad7c2ac549479d84e949106a09a9869f1
4
- data.tar.gz: 05f513a4f62f30601fb170bbb1da31a99c69b83c
3
+ metadata.gz: b8e16b3c1bc5ed7c3cfc80754240cb1b103e84fe
4
+ data.tar.gz: 5b155e7da4b288d32fb718e05cda47b45fc1aa1c
5
5
  SHA512:
6
- metadata.gz: 59b43e29fbbd278f85567e51d58fef7a1d9f7d2d29217d577eb3ee1f9b33dd7b57e5340f9a385be01c64ff4e36678002c53a3c093b5eb9c71aad40c7e2283f11
7
- data.tar.gz: 90733f5f75711d7a7de41f40f99e9d72ee0f5af60f605681dcf200fb18c660fb58be793ec3f4efadaab1ee36152d52f59cfc5d21dcaa89b8f6fb3368c36973d1
6
+ metadata.gz: 0e59d0597681743a899c8827aae9c6a65b2e34d1f14835b443449c91f5d9fde241349ac4f8288ac19392680636915bffd044a70f19d3348d236f4b1a95d814d3
7
+ data.tar.gz: 4151d85bb31c515ae1a11be5a50ab553509392144615a21a53050560a1e122069c88e10ad19f2ee429e18939328e0d13aee6aeca74cbefe802c04e63bee3670a
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'azdeploy'
3
- s.version = '1.0.17'
4
- s.date = '2015-05-18'
3
+ s.version = '1.0.18'
4
+ s.date = '2015-08-04'
5
5
  s.summary = 'Setup and scripting support for .Net project builds'
6
6
  s.description = 'Azure Deployment Gem. Provides easy setup and deployment scripting support for .Net project builds'
7
7
  s.authors = ['Suresh Batta']
@@ -1,28 +1,28 @@
1
1
  $versionMap = {}
2
2
 
3
3
  def copy_output_files(fromDir, filePattern, outDir)
4
- FileUtils.mkdir_p outDir unless exists?(outDir)
5
- Dir.glob(File.join(fromDir, filePattern)){|file|
6
- copy(file, outDir) if File.file?(file)
7
- }
4
+ FileUtils.mkdir_p outDir unless exists?(outDir)
5
+ Dir.glob(File.join(fromDir, filePattern)){|file|
6
+ copy(file, outDir) if File.file?(file)
7
+ }
8
8
  end
9
9
 
10
10
  def project_outputs(props)
11
- props[:projects].map{ |p| "src/#{p}/bin/#{BUILD_CONFIG}/#{p}.dll" }.
12
- concat( props[:projects].map{ |p| "src/#{p}/bin/#{BUILD_CONFIG}/#{p}.exe" } ).
13
- find_all{ |path| exists?(path) }
11
+ props[:projects].map{ |p| "src/#{p}/bin/#{BUILD_CONFIG}/#{p}.dll" }.
12
+ concat( props[:projects].map{ |p| "src/#{p}/bin/#{BUILD_CONFIG}/#{p}.exe" } ).
13
+ find_all{ |path| exists?(path) }
14
14
  end
15
15
 
16
16
  def get_commit_hash_and_date
17
- begin
18
- commit = `git log -1 --pretty=format:%H`
19
- git_date = `git log -1 --date=iso --pretty=format:%ad`
20
- commit_date = DateTime.parse( git_date ).strftime("%Y-%m-%d %H%M%S")
21
- rescue
22
- commit = "git unavailable"
23
- end
24
-
25
- [commit, commit_date]
17
+ begin
18
+ commit = `git log -1 --pretty=format:%H`
19
+ git_date = `git log -1 --date=iso --pretty=format:%ad`
20
+ commit_date = DateTime.parse( git_date ).strftime("%Y-%m-%d %H%M%S")
21
+ rescue
22
+ commit = "git unavailable"
23
+ end
24
+
25
+ [commit, commit_date]
26
26
  end
27
27
 
28
28
  def add_files stage, what_dlls, nuspec, folder='lib'
@@ -48,14 +48,14 @@ def commit_data
48
48
  end
49
49
 
50
50
  def waitfor(&block)
51
- checks = 0
51
+ checks = 0
52
52
 
53
- until block.call || checks >10
54
- sleep 0.5
55
- checks += 1
56
- end
53
+ until block.call || checks >10
54
+ sleep 0.5
55
+ checks += 1
56
+ end
57
57
 
58
- raise 'Waitfor timeout expired. Make sure that you aren\'t running something from the build output folders, or that you have browsed to it through Explorer.' if checks > 10
58
+ raise 'Waitfor timeout expired. Make sure that you aren\'t running something from the build output folders, or that you have browsed to it through Explorer.' if checks > 10
59
59
  end
60
60
 
61
61
  def cleantask(props)
@@ -78,6 +78,11 @@ def cleantask(props)
78
78
  end
79
79
  end
80
80
 
81
+ def restore_nuget(nuget_exe)
82
+ sh 'powershell', '-Command', "& { Invoke-RestMethod https://www.nuget.org/nuget.exe -OutFile '#{nuget_exe}' }"
83
+ sh nuget_exe, 'restore', "src/#{PRODUCT}.sln"
84
+ end
85
+
81
86
  def restore_project_pkgs(proj)
82
87
  msbuild :nuget_restore do |msb|
83
88
  msb.use :net4
@@ -88,8 +93,8 @@ end
88
93
 
89
94
  def clean_build(msb, solution)
90
95
  msb.properties :Configuration => 'Release',
91
- :Platform => 'Any CPU',
92
- :VisualStudioVersion => '12.0'
96
+ :Platform => 'Any CPU',
97
+ :VisualStudioVersion => '12.0'
93
98
  msb.use :net4
94
99
  msb.solution = solution
95
100
  end
@@ -5,7 +5,12 @@ class Transform
5
5
  attr_accessor :table
6
6
  attr_accessor :settings
7
7
  attr_accessor :config_files
8
-
8
+
9
+ NO = 'no'
10
+ ROWKEY = 'RowKey'
11
+ SETTING = 'setting'
12
+ VALUE = 'value'
13
+
9
14
  def get(key)
10
15
  begin
11
16
  result = @svc.get_entity(@table, @env, key)
@@ -34,8 +39,8 @@ class Transform
34
39
  def get_value(key)
35
40
  value = ''
36
41
  @settings.each { |i|
37
- if i.properties['RowKey'] == key
38
- value = i.properties['setting']
42
+ if i.properties[ROWKEY] == key
43
+ value = i.properties[SETTING]
39
44
  break
40
45
  end
41
46
  }
@@ -43,23 +48,35 @@ class Transform
43
48
  value
44
49
  end
45
50
 
51
+ def transform_connstring(connstr)
52
+ @config_files.each{|file|
53
+ doc = Nokogiri::XML(File.read(file))
54
+ puts "Processing file: #{file}"
55
+ node = doc.at_css "appSettings/add[@key='connectionString']"
56
+ if !node.nil?
57
+ node[VALUE] = connstr
58
+ File.write(file, doc.to_xml)
59
+ end
60
+ }
61
+ end
62
+
46
63
  def transform_appsettings
47
64
  # go to each file and replace value of matching appSettings key
48
65
  @config_files.each{|file|
49
66
  doc = Nokogiri::XML(File.read(file))
50
67
  puts "Processing file: #{file}"
51
68
  @settings.each { |i|
52
- key = i.properties['RowKey']
69
+ key = i.properties[ROWKEY]
53
70
  node = doc.at_css "appSettings/add[@key='#{key}']"
54
71
  if !node.nil?
55
- oldVal = node['value']
72
+ oldVal = node[VALUE]
56
73
  #puts "Old value: #{oldVal}"
57
- node['value'] = i.properties['setting']
58
- newVal = node['value']
74
+ node[VALUE] = i.properties[SETTING]
75
+ newVal = node[VALUE]
59
76
  #puts "New value: #{newVal}"
77
+ File.write(file, doc.to_xml)
60
78
  end
61
- }
62
- File.write(file, doc.to_xml)
79
+ }
63
80
  }
64
81
  end
65
82
 
@@ -68,13 +85,15 @@ class Transform
68
85
  doc = Nokogiri::XML(File.read(file))
69
86
  doc.xpath('//system.serviceModel').each do |node|
70
87
  #puts node
71
- if file.end_with?('app.config') || file.end_with?('App.config')
72
- node.replace(get_value('system.ServiceModel.Client')) if !node.nil?
73
- elsif file.end_with?('Web.config')
74
- node.replace(get_value('system.ServiceModel.Service')) if !node.nil?
88
+ if !node.nil?
89
+ if file.end_with?('app.config') || file.end_with?('App.config')
90
+ node.replace(get_value('system.ServiceModel.Client'))
91
+ elsif file.end_with?('Web.config')
92
+ node.replace(get_value('system.ServiceModel.Service'))
93
+ end
94
+ File.write(file, doc.to_xml)
75
95
  end
76
96
  end
77
- File.write(file, doc.to_xml)
78
97
  }
79
98
  end
80
99
 
@@ -193,23 +212,53 @@ class Transform
193
212
  end
194
213
 
195
214
  def transform
196
-
215
+
216
+ # find all App.config and web.config files
217
+ @config_files = Dir.glob('**/app.config')
218
+ @config_files.concat(Dir.glob('**/appSettings.config'))
219
+ @config_files.concat(Dir.glob('**/web.config'))
220
+
221
+ settings_account_name = ENV['SettingsAccount'] || NO
222
+ if (settings_account_name == NO)
223
+ puts "No settings storage account name found"
224
+ return false
225
+ end
226
+ settings_access_key = ENV['SettingsAccountKey'] || NO
227
+ if (settings_access_key == NO)
228
+ puts "No settings storage account key found"
229
+ return false
230
+ end
231
+ config_table = ENV['ConfigSettingsTable'] || NO
232
+ if (config_table == NO)
233
+ puts "No configuration table found"
234
+ return false
235
+ end
236
+
237
+ puts 'updating settings connection string...'
238
+ settings_connstr = "DefaultEndpointsProtocol=https;AccountName=#{settings_account_name};AccountKey=#{settings_access_key}"
239
+ should_update_settings_connstr = ENV['should_update_settings_connstr'] || NO
240
+ if should_update_settings_connstr == NO
241
+ puts 'Flag for Setttings Connection String Update not set.'
242
+ else
243
+ transform_connstring(settings_connstr)
244
+ end
245
+
197
246
  # environment invoked
198
- @env = ENV['env'] || 'noenv'
199
- if @env == 'noenv'
247
+ @env = ENV['env'] || NO
248
+ if @env == NO
200
249
  puts 'Environment name required to transform. No configuration changes will be done...'
201
250
  return false
202
251
  end
203
-
204
- is_service = ENV['ServiceName'] || 'nosvc'
205
- puts 'Target to transform is not a service...' if is_service == 'nosvc'
252
+
253
+ is_service = ENV['ServiceName'] || NO
254
+ puts 'Target to transform is not a service...' if is_service == NO
206
255
 
207
256
  puts "Transforming config for environment: #{@env} ..."
208
257
 
209
258
  # azure table storage account where settings reside
210
- Azure.config.storage_account_name = ENV['StorageAccount']
211
- Azure.config.storage_access_key = ENV['StorageAccountKey']
212
- @table = ENV['ConfigSettingsTable']
259
+ Azure.config.storage_account_name = settings_account_name
260
+ Azure.config.storage_access_key = settings_access_key
261
+ @table = config_table
213
262
 
214
263
  # table service
215
264
  @svc = Azure::TableService.new
@@ -217,11 +266,6 @@ class Transform
217
266
  # get all settings for environment
218
267
  @settings = get_all
219
268
 
220
- # find all App.config and web.config files
221
- @config_files = Dir.glob('**/app.config')
222
- @config_files.concat(Dir.glob('**/appSettings.config'))
223
- @config_files.concat(Dir.glob('**/web.config'))
224
-
225
269
  if is_service
226
270
 
227
271
  puts 'Obtaining cloud configuration templates...'
@@ -246,7 +290,7 @@ class Transform
246
290
  transform_servicemodelconfig
247
291
 
248
292
  end
249
-
293
+
250
294
  puts 'Replacing app settings...'
251
295
  transform_appsettings
252
296
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: azdeploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.17
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Suresh Batta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-18 00:00:00.000000000 Z
11
+ date: 2015-08-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Azure Deployment Gem. Provides easy setup and deployment scripting support
14
14
  for .Net project builds