another_brick 0.1.0 → 0.2.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.
- data/another_brick.gemspec +1 -1
- data/bin/brick +8 -7
- data/lib/another_brick/bricklayer.rb +36 -19
- data/lib/another_brick/configuration.rb +6 -4
- data/lib/another_brick/tag.rb +28 -0
- data/lib/another_brick/version.rb +1 -1
- data/lib/another_brick.rb +5 -4
- metadata +7 -7
- data/lib/another_brick/testing_tag.rb +0 -39
data/another_brick.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
|
19
19
|
s.add_development_dependency "rake"
|
20
20
|
|
21
|
-
s.add_runtime_dependency "slop", "~>
|
21
|
+
s.add_runtime_dependency "slop", "~> 3.4"
|
22
22
|
s.add_runtime_dependency "json", "~> 1.5"
|
23
23
|
s.add_runtime_dependency "rest-client", "~> 1.6"
|
24
24
|
s.add_runtime_dependency "net-ssh", "~> 2.6.1"
|
data/bin/brick
CHANGED
@@ -5,13 +5,14 @@ require "another_brick"
|
|
5
5
|
options = Slop.parse help: true do
|
6
6
|
banner 'Another Brick'
|
7
7
|
|
8
|
-
on :v,
|
9
|
-
on :b,
|
10
|
-
on :n,
|
11
|
-
on :s,
|
12
|
-
on :u,
|
13
|
-
on :m,
|
14
|
-
on :t,
|
8
|
+
on :v, :verbose, "Verbose mode"
|
9
|
+
on :b, :bricklayer, "Bricklayer host", required: true, argument: true
|
10
|
+
on :n, :name, "Project name", required: true, argument: true
|
11
|
+
on :s, :server, "Deploy server", required: true, argument: true
|
12
|
+
on :u, :user, "Deploy user", required: true, argument: true
|
13
|
+
on :m, :max_tries, "Max tries to waiting ssh", optional: true, argument: true, default: 480, as: Fixnum
|
14
|
+
on :t, :bricklayer_tries, "Max tries to waiting bricklayer", optional: true, argument: true, default: 480, as: Fixnum
|
15
|
+
on :tag, :tag, "Tag (unstable|testing|stable)", optional: true, argument: true, default: "testing", match: /(unstable|testing|stable)/
|
15
16
|
end
|
16
17
|
|
17
18
|
AnotherBrick.run!(options.to_hash)
|
@@ -12,12 +12,17 @@ module AnotherBrick
|
|
12
12
|
result = ""
|
13
13
|
|
14
14
|
AnotherBrick.bricklayer_tries.times do
|
15
|
-
|
16
|
-
|
17
|
-
|
15
|
+
RestClient.get(log_uri(build)) do |response|
|
16
|
+
result = response
|
17
|
+
|
18
|
+
break if response =~ SUCCESS or response =~ ERROR
|
19
|
+
|
20
|
+
sleep 3
|
21
|
+
end
|
18
22
|
end
|
19
23
|
|
20
24
|
puts result if AnotherBrick.verbose?
|
25
|
+
|
21
26
|
result =~ SUCCESS
|
22
27
|
end
|
23
28
|
|
@@ -25,37 +30,49 @@ module AnotherBrick
|
|
25
30
|
project = nil
|
26
31
|
|
27
32
|
AnotherBrick.bricklayer_tries.times do
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
+
RestClient.get(project_uri) do |response|
|
34
|
+
project = JSON.parse(response)
|
35
|
+
|
36
|
+
puts "project : #{project}" if AnotherBrick.verbose?
|
37
|
+
|
38
|
+
break if project && project["last_tag_#{AnotherBrick.tag}"] == tag
|
39
|
+
|
40
|
+
project = nil
|
41
|
+
|
42
|
+
sleep 3
|
43
|
+
end
|
33
44
|
end
|
34
45
|
|
35
46
|
abort "tag not built" unless project
|
47
|
+
|
36
48
|
puts "project: #{project}" if AnotherBrick.verbose?
|
49
|
+
|
37
50
|
project
|
38
51
|
end
|
39
52
|
|
40
53
|
def build(tag, project)
|
41
|
-
|
42
|
-
|
54
|
+
new_version = tag.split('_')[1]
|
55
|
+
build = nil
|
56
|
+
done = false
|
43
57
|
|
44
58
|
AnotherBrick.bricklayer_tries.times do
|
45
|
-
|
59
|
+
RestClient.get(build_uri) do |response|
|
60
|
+
builds = JSON.parse(response)
|
46
61
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
break if done
|
51
|
-
end
|
62
|
+
build = builds.find do |item|
|
63
|
+
item["release"] == AnotherBrick.tag && item["version"] == new_version
|
64
|
+
end
|
52
65
|
|
53
|
-
|
54
|
-
|
66
|
+
break if build
|
67
|
+
|
68
|
+
sleep 3
|
69
|
+
end
|
55
70
|
end
|
56
71
|
|
57
|
-
abort "build not found for tag #{tag}" unless
|
72
|
+
abort "build not found for tag #{tag}" unless build
|
73
|
+
|
58
74
|
puts "build: #{build}" if AnotherBrick.verbose?
|
75
|
+
|
59
76
|
build["build"]
|
60
77
|
end
|
61
78
|
|
@@ -1,16 +1,18 @@
|
|
1
1
|
module AnotherBrick
|
2
2
|
module Configuration
|
3
|
-
attr_accessor :bricklayer_server, :package_name,
|
4
|
-
:
|
3
|
+
attr_accessor :bricklayer_server, :package_name, :deploy_server,
|
4
|
+
:deploy_user, :max_tries, :bricklayer_tries, :tag
|
5
5
|
|
6
6
|
def load_configuration(options = {})
|
7
7
|
self.bricklayer_server = options[:bricklayer]
|
8
8
|
self.package_name = options[:name]
|
9
9
|
self.deploy_server = options[:server]
|
10
10
|
self.deploy_user = options[:user]
|
11
|
-
self.max_tries =
|
12
|
-
self.bricklayer_tries =
|
11
|
+
self.max_tries = options[:max_tries]
|
12
|
+
self.bricklayer_tries = options[:bricklayer_tries]
|
13
|
+
self.tag = options[:tag]
|
13
14
|
@verbose = options[:verbose]
|
15
|
+
RestClient.proxy = ENV['http_proxy']
|
14
16
|
end
|
15
17
|
|
16
18
|
def verbose?
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module AnotherBrick
|
2
|
+
module Tag
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def create(prefix)
|
6
|
+
version_tag = get_last_tag('v')
|
7
|
+
|
8
|
+
major, minor = strip_version('v', version_tag)
|
9
|
+
|
10
|
+
last_tag = get_last_tag("#{prefix}_#{major}.#{minor}")
|
11
|
+
|
12
|
+
build = last_tag ? strip_version("#{prefix}_", last_tag).last + 1 : 0
|
13
|
+
|
14
|
+
"#{prefix}_#{major}.#{minor}.#{build}".tap do |next_tag|
|
15
|
+
`git tag #{next_tag}`
|
16
|
+
`git push --tags`
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def get_last_tag(pattern)
|
21
|
+
`git tag | grep ^#{pattern} | sort -V`.lines.map(&:chomp).last
|
22
|
+
end
|
23
|
+
|
24
|
+
def strip_version(prefix, version)
|
25
|
+
version.delete(prefix).split('.').map(&:to_i)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/another_brick.rb
CHANGED
@@ -5,7 +5,7 @@ require "net/ssh"
|
|
5
5
|
|
6
6
|
require "another_brick/configuration"
|
7
7
|
require "another_brick/bricklayer"
|
8
|
-
require "another_brick/
|
8
|
+
require "another_brick/tag"
|
9
9
|
require "another_brick/server"
|
10
10
|
require "another_brick/version"
|
11
11
|
|
@@ -15,9 +15,10 @@ module AnotherBrick
|
|
15
15
|
|
16
16
|
def run!(options = {})
|
17
17
|
load_configuration(options)
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
|
19
|
+
Tag.create(tag).tap do |new_tag|
|
20
|
+
Bricklayer.wait_build(new_tag)
|
21
|
+
Server.deploy(new_tag)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: another_brick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-
|
13
|
+
date: 2013-08-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rake
|
@@ -35,7 +35,7 @@ dependencies:
|
|
35
35
|
requirements:
|
36
36
|
- - ~>
|
37
37
|
- !ruby/object:Gem::Version
|
38
|
-
version: '
|
38
|
+
version: '3.4'
|
39
39
|
type: :runtime
|
40
40
|
prerelease: false
|
41
41
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,7 +43,7 @@ dependencies:
|
|
43
43
|
requirements:
|
44
44
|
- - ~>
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '3.4'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -112,7 +112,7 @@ files:
|
|
112
112
|
- lib/another_brick/bricklayer.rb
|
113
113
|
- lib/another_brick/configuration.rb
|
114
114
|
- lib/another_brick/server.rb
|
115
|
-
- lib/another_brick/
|
115
|
+
- lib/another_brick/tag.rb
|
116
116
|
- lib/another_brick/version.rb
|
117
117
|
homepage: https://github.com/viniciushiga/another_brick
|
118
118
|
licenses: []
|
@@ -128,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
segments:
|
130
130
|
- 0
|
131
|
-
hash:
|
131
|
+
hash: 3730404254122566144
|
132
132
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
133
133
|
none: false
|
134
134
|
requirements:
|
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
137
137
|
version: '0'
|
138
138
|
segments:
|
139
139
|
- 0
|
140
|
-
hash:
|
140
|
+
hash: 3730404254122566144
|
141
141
|
requirements: []
|
142
142
|
rubyforge_project:
|
143
143
|
rubygems_version: 1.8.23
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module AnotherBrick
|
2
|
-
module TestingTag
|
3
|
-
extend self
|
4
|
-
|
5
|
-
def create
|
6
|
-
version_tags = `git tag | grep ^v`.lines
|
7
|
-
max_major = 0
|
8
|
-
max_minor = 0
|
9
|
-
|
10
|
-
version_tags.each do |version|
|
11
|
-
major, minor = strip_version('v', version)
|
12
|
-
|
13
|
-
if major > max_major
|
14
|
-
max_major = major
|
15
|
-
max_minor = minor
|
16
|
-
elsif major == max_major and minor > max_minor
|
17
|
-
max_minor = minor
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
testing_tags = `git tag| grep ^testing_#{max_major}.#{max_minor}`.lines
|
22
|
-
build = 0
|
23
|
-
|
24
|
-
testing_tags.each do |testing|
|
25
|
-
major, minor, version = strip_version('testing_', testing)
|
26
|
-
build = version + 1 if version >= build
|
27
|
-
end
|
28
|
-
|
29
|
-
tag = "testing_#{max_major}.#{max_minor}.#{build}"
|
30
|
-
`git tag #{tag}`
|
31
|
-
`git push --tags`
|
32
|
-
tag
|
33
|
-
end
|
34
|
-
|
35
|
-
def strip_version(prefix, version)
|
36
|
-
version.delete(prefix).split('.').map(&:to_i)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|