azdeploy 1.0.31 → 1.0.32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/azdeploy.gemspec +2 -2
- data/lib/build.rb +76 -76
- data/lib/dependency.rb +18 -18
- data/lib/semantic_versioning.rb +18 -17
- data/lib/transform.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7a8147ddcc47320a4d4f85e5af9b0665805afa14
|
4
|
+
data.tar.gz: 4ddce1a21bb9acb5b17607f7f1f740a1f3cf00ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2611a5fb86cdc4725627ced19aabaf091260830d575ced18bd4185c77e4e3619fd49740561e1f6006da73c793e8d7b4d624f3037b84c930870ea5c9641e97b59
|
7
|
+
data.tar.gz: ecc037759a214e79a45209fe33ef3076ce119fb2b8deb8a01b29aebf485b7bdfcbd6caca8e463c28cbc0a59fd1bed7e566725128d0b783dfe1b98b797a4200fa
|
data/azdeploy.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'azdeploy'
|
3
|
-
s.version = '1.0.
|
4
|
-
s.date = '2015-12-
|
3
|
+
s.version = '1.0.32'
|
4
|
+
s.date = '2015-12-17'
|
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']
|
data/lib/build.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
1
|
$versionMap = {}
|
2
2
|
|
3
3
|
def copy_output_files(fromDir, filePattern, outDir)
|
4
|
-
|
5
|
-
|
6
|
-
|
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
|
-
|
12
|
-
|
13
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
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
24
|
|
25
|
-
|
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
|
-
|
51
|
+
checks = 0
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
53
|
+
until block.call || checks >10
|
54
|
+
sleep 0.5
|
55
|
+
checks += 1
|
56
|
+
end
|
57
57
|
|
58
|
-
|
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)
|
@@ -79,8 +79,8 @@ def cleantask(props)
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def restore_nuget(nuget_exe)
|
82
|
-
|
83
|
-
|
82
|
+
sh 'powershell', '-Command', "& { Invoke-RestMethod https://www.nuget.org/nuget.exe -OutFile '#{Dir.pwd}/#{nuget_exe}' }"
|
83
|
+
sh "#{Dir.pwd}/#{nuget_exe}", 'restore', "src/#{PRODUCT}.sln"
|
84
84
|
end
|
85
85
|
|
86
86
|
def restore_project_pkgs(proj)
|
@@ -100,49 +100,49 @@ def clean_build(msb, solution)
|
|
100
100
|
end
|
101
101
|
|
102
102
|
def versioning project=nil, file=nil
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
103
|
+
if (!project.nil? && !file.nil?)
|
104
|
+
v = SemVer.new
|
105
|
+
path = File.join VERSIONING, file
|
106
|
+
v.load path
|
107
|
+
ver = v
|
108
|
+
commitData = commit_data()
|
109
|
+
# nuget (not full semver 2.0.0-rc.1 support) see http://nuget.codeplex.com/workitem/1796
|
110
|
+
ENV["#{project}_NUGET_VERSION"] = ver.format('%M.%m.%p%s')
|
111
|
+
|
112
|
+
revision = (ENV['BUILD_NUMBER'] || ver.patch).to_i
|
113
|
+
|
114
|
+
# extensible number w/ git hash
|
115
|
+
ENV["#{project}_BUILD_VERSION"] = ver.format('%M.%m.%p%s') + ".#{commitData[0]}"
|
116
|
+
|
117
|
+
# purely M.m.p format
|
118
|
+
ENV["#{project}_FORMAL_VERSION"] = "#{ SemVer.new(ver.major, ver.minor, revision).format '%M.%m.%p'}"
|
119
|
+
else
|
120
|
+
ver = SemVer.find
|
121
|
+
revision = (ENV['BUILD_NUMBER'] || ver.patch).to_i
|
122
|
+
var = SemVer.new(ver.major, ver.minor, revision, ver.special)
|
123
|
+
|
124
|
+
commitData = commit_data()
|
125
|
+
|
126
|
+
# extensible number w/ git hash
|
127
|
+
ENV['BUILD_VERSION'] = $versionMap[:build_version] = ver.format('%M.%m.%p%s') + ".#{commitData[0]}"
|
128
|
+
|
129
|
+
# nuget (not full semver 2.0.0-rc.1 support) see http://nuget.codeplex.com/workitem/1796
|
130
|
+
ENV['NUGET_VERSION'] = $versionMap[:nuget_version] = ver.format('%M.%m.%p%s')
|
131
|
+
|
132
|
+
ENV['PLATFORM_VERSION'] = $versionMap[:platform_version] = Time.new.strftime('%y.%-m.%-d') + ".#{(ENV['BUILD_NUMBER'] || '0')}"
|
133
|
+
|
134
|
+
ENV['PLATFORM_BUILD_VERSION'] = $versionMap[:platform_build_version] = Time.new.strftime('%y.%-m.%-d') + ".#{commitData[0]}"
|
135
|
+
|
136
|
+
ENV['FORMAL_VERSION'] = $versionMap[:formal_version] = "#{ SemVer.new(ver.major, ver.minor, revision).format '%M.%m.%p'}"
|
137
|
+
|
138
|
+
teamcity_build_number
|
139
|
+
end
|
140
140
|
end
|
141
141
|
|
142
142
|
desc 'Tell teamcity our decision to set the build.number environment variable'
|
143
143
|
def teamcity_build_number
|
144
|
-
|
145
|
-
|
144
|
+
platform_version = Time.new.strftime('%y.%-m.%-d') + ".#{(ENV['BUILD_NUMBER'] || '0')}"
|
145
|
+
puts "##teamcity[buildNumber '#{platform_version}']"
|
146
146
|
end
|
147
147
|
|
148
148
|
def set_framework_version(asm)
|
@@ -160,8 +160,8 @@ def set_version(asm, version, file_version, assembly_version, output_file, outpu
|
|
160
160
|
asm.version = version
|
161
161
|
asm.file_version = file_version
|
162
162
|
asm.custom_attributes :AssemblyInformationalVersion => assembly_version,
|
163
|
-
|
164
|
-
|
163
|
+
:ComVisibleAttribute => false,
|
164
|
+
:CLSCompliantAttribute => true
|
165
165
|
asm.copyright = COPYRIGHT
|
166
166
|
asm.output_file = "#{output_file_src}/#{output_file}.Version.cs"
|
167
167
|
asm.namespaces 'System', 'System.Reflection', 'System.Runtime.InteropServices'
|
@@ -212,7 +212,7 @@ def copy_runtime_artifacts(package)
|
|
212
212
|
end
|
213
213
|
}
|
214
214
|
puts config_version
|
215
|
-
|
215
|
+
|
216
216
|
# copy artifacts
|
217
217
|
source = "#{ENV['RuntimePath']}/#{config_version}"
|
218
218
|
dest = File.join(File.expand_path('.'), 'RuntimeService')
|
@@ -223,14 +223,14 @@ end
|
|
223
223
|
|
224
224
|
desc 'Gathers all rake files and runs the task list'
|
225
225
|
def package rake_files_path, task_list
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
end
|
226
|
+
if(task_list.nil?)
|
227
|
+
puts "No task to execute"
|
228
|
+
else
|
229
|
+
Dir.glob("#{rake_files_path}/*.rb").each {
|
230
|
+
|r| load r
|
231
|
+
}
|
232
|
+
task_list.each { |eachtask|
|
233
|
+
Rake::Task["#{eachtask}"].invoke
|
234
|
+
}
|
235
|
+
end
|
236
|
+
end
|
data/lib/dependency.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
def auto_add_dependencies(project, nuspec)
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
2
|
+
@Dependencies = Array.new
|
3
|
+
|
4
|
+
each_package_dependency(project) do |package|
|
5
|
+
@Dependencies << package
|
6
|
+
end
|
7
|
+
|
8
|
+
@Dependencies.each do |dep|
|
9
|
+
nuspec.dependency dep.Name, dep.Version
|
10
|
+
end
|
11
11
|
end
|
12
12
|
|
13
13
|
|
@@ -26,18 +26,18 @@ def each_package(packages_config)
|
|
26
26
|
doc = REXML::Document.new xml
|
27
27
|
doc.elements.each 'packages/package' do |package|
|
28
28
|
if block_given?
|
29
|
-
|
29
|
+
yield package.attributes['id'], package.attributes['version']
|
30
30
|
else
|
31
|
-
|
31
|
+
"no package block"
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
class Dependency
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end
|
37
|
+
attr_accessor :Name, :Version
|
38
|
+
|
39
|
+
def initialize(name, version)
|
40
|
+
@Name = name
|
41
|
+
@Version = version
|
42
|
+
end
|
43
|
+
end
|
data/lib/semantic_versioning.rb
CHANGED
@@ -2,6 +2,7 @@ class SemverVersioning
|
|
2
2
|
|
3
3
|
# url template of file to check for version info with repo, branch and file path to replace
|
4
4
|
URLTEMPLATE ||= "%s/raw/%s/%s"
|
5
|
+
SEMVER = 'semver'
|
5
6
|
|
6
7
|
def open url
|
7
8
|
Net::HTTP.get(URI.parse url)
|
@@ -38,15 +39,15 @@ class SemverVersioning
|
|
38
39
|
version_remote = ''
|
39
40
|
version_local = ''
|
40
41
|
|
41
|
-
semvers = get_file_list VERSIONING,
|
42
|
-
if
|
42
|
+
semvers = get_file_list VERSIONING, SEMVER
|
43
|
+
if semvers.empty?
|
43
44
|
raise "************Error - no semver files found at #{VERSIONING}********"
|
44
45
|
end
|
45
46
|
|
46
47
|
semvers.each { |semver|
|
47
48
|
v1 = get_repo_version semver
|
48
49
|
v2 = get_current_version VERSIONING, semver.gsub("#{VERSIONING}/", '')
|
49
|
-
if (!same_versions
|
50
|
+
if (!same_versions v1, v2)
|
50
51
|
puts "#{semver} version changed"
|
51
52
|
semver_file = semver
|
52
53
|
version_remote = v1
|
@@ -119,31 +120,31 @@ class SemverVersioning
|
|
119
120
|
remote_name = get_remote_name
|
120
121
|
branch_name = get_branch_name
|
121
122
|
url = URLTEMPLATE % [remote_name, branch_name, semver]
|
122
|
-
page_content = open
|
123
|
-
repo_version = get_semver_version
|
123
|
+
page_content = open url
|
124
|
+
repo_version = get_semver_version page_content
|
124
125
|
repo_version
|
125
126
|
end
|
126
127
|
|
127
128
|
def get_current_version path, semver
|
128
129
|
location = File.join path, semver
|
129
|
-
content = File.read
|
130
|
-
current_version = get_semver_version
|
130
|
+
content = File.read location
|
131
|
+
current_version = get_semver_version content
|
131
132
|
current_version
|
132
133
|
end
|
133
134
|
|
134
|
-
def get_semver_version
|
135
|
+
def get_semver_version content
|
135
136
|
s = content.split("\n")
|
136
137
|
val = ''
|
137
138
|
s.each{ |i|
|
138
|
-
if
|
139
|
+
if i.start_with?(':')
|
139
140
|
x = i.split(': ')[1].strip
|
140
|
-
x.gsub!
|
141
|
-
if
|
141
|
+
x.gsub! "'", ''
|
142
|
+
if x.length != 0
|
142
143
|
val = val + x.to_s + '.'
|
143
144
|
end
|
144
145
|
end
|
145
146
|
}
|
146
|
-
val.chomp
|
147
|
+
val.chomp '.'
|
147
148
|
end
|
148
149
|
|
149
150
|
def same_versions version1, version2
|
@@ -153,8 +154,8 @@ class SemverVersioning
|
|
153
154
|
# Method to be used from the upgrade project, to update single or multiple semvers on team city
|
154
155
|
def auto_update_semver project_name, semver_location, semver_file, semver_dimension
|
155
156
|
Dir.chdir project_name if File.basename(Dir.pwd) != project_name
|
156
|
-
if(semver_file.nil? || semver_file.strip == '' || semver_file == '.
|
157
|
-
increment_version '.
|
157
|
+
if(semver_file.nil? || semver_file.strip == '' || semver_file == '.' + SEMVER)
|
158
|
+
increment_version '.' + SEMVER, semver_dimension
|
158
159
|
else
|
159
160
|
increment_version File.join(semver_location, semver_file), semver_dimension
|
160
161
|
update_dependent_semvers project_name, semver_location, semver_file, semver_dimension
|
@@ -163,7 +164,7 @@ class SemverVersioning
|
|
163
164
|
|
164
165
|
# Method invoked to update multiple semvers locally. This will not update single semver. That has to be done manually
|
165
166
|
def auto_update_local_semver
|
166
|
-
if(!Dir.exist?(VERSIONING) || File.exist?('.
|
167
|
+
if(!Dir.exist?(VERSIONING) || File.exist?('.' + SEMVER))
|
167
168
|
raise 'Error - local upgrade process only applies to projects with multiple semvers. If you have one semver at root level, please update it manually if needed. Do not invoke auto_update_local_semver task.'
|
168
169
|
end
|
169
170
|
updated_semver_with_version_state = fetch_updated_semver
|
@@ -186,10 +187,10 @@ class SemverVersioning
|
|
186
187
|
def create_semver_project_map product, semver_location
|
187
188
|
semver_project_map = Hash.new
|
188
189
|
|
189
|
-
rake_list = get_file_list semver_location,
|
190
|
+
rake_list = get_file_list semver_location, SEMVER
|
190
191
|
rake_list.each{ |rakefile|
|
191
192
|
rake = rakefile.gsub "#{semver_location}/", ''
|
192
|
-
project_name = rake.gsub '.
|
193
|
+
project_name = rake.gsub '.' + SEMVER, ''
|
193
194
|
semver_project_map[rake] = "#{product}.#{project_name}.csproj"
|
194
195
|
}
|
195
196
|
semver_project_map
|
data/lib/transform.rb
CHANGED
@@ -275,7 +275,8 @@ class Transform
|
|
275
275
|
|
276
276
|
# log level
|
277
277
|
node = doc.at_css 'log4net/root/level'
|
278
|
-
|
278
|
+
loglevel = ENV['loglevel'] || NO_VALUE
|
279
|
+
node['value'] = ENV['loglevel'] if (!node.nil? && loglevel != NO_VALUE)
|
279
280
|
|
280
281
|
File.write file, doc.to_xml
|
281
282
|
}
|
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.
|
4
|
+
version: 1.0.32
|
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-12-
|
11
|
+
date: 2015-12-17 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
|