picsolve_docker_builder 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/README.md +12 -0
- data/lib/picsolve_docker_builder/composer/composer.rb +27 -13
- data/lib/picsolve_docker_builder/helpers/kubernetes/rc.rb +15 -5
- data/lib/picsolve_docker_builder/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 15bcfea24b318c9f934f15dcfdd65d5ed4be8d99
|
4
|
+
data.tar.gz: cb6e0b70bc6ca5ff68ebb873a73266bfe763c441
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55b9b50d6c5409344b7fa6e6c40e06ad9f4c7904ee2e30c9c47b0b6456f522e5ac274fc24b510edb5e89f4e6d4d24bac274d39e247d428d81fdf40b83df6268b
|
7
|
+
data.tar.gz: 5b306bfde7d4bd052037da1e16c8de9a9c27c7acfa917bace4838f72ab8fa5a74fe162d93feadb9177cd2f006ce0974aef586f96f859100c56c60004b6a75f80
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## [0.1.1] - 2015-07-03
|
4
|
+
### Fixed
|
5
|
+
- Flush buffers for better jenkins experience
|
6
|
+
- Fix removal of old replication controllers
|
7
|
+
- Improve argument against commit logs.
|
8
|
+
|
9
|
+
## [0.1.0] - 2015-07-02
|
10
|
+
### Added
|
11
|
+
- Initial release
|
12
|
+
- Docker image build for scala/play applications
|
13
|
+
- Deployment to a single Kubernetes cluster via SSH access
|
14
|
+
- Zero downtime deployment and rollback for single services if they are
|
15
|
+
exiting withing 20 seconds
|
data/README.md
CHANGED
@@ -23,3 +23,15 @@ scala:
|
|
23
23
|
- clean
|
24
24
|
- universal:packageZipTarball
|
25
25
|
```
|
26
|
+
|
27
|
+
## Release process
|
28
|
+
|
29
|
+
This gem is released publicly to Rubygems repositories. To trigger a release you have to do the following steps:
|
30
|
+
|
31
|
+
```shell
|
32
|
+
# Ensure all the tests are running
|
33
|
+
bundle exec rake test_integration
|
34
|
+
|
35
|
+
# Release to rubygems (account information is in the Vault)
|
36
|
+
bundle exec rake release
|
37
|
+
```
|
@@ -24,23 +24,19 @@ module PicsolveDockerBuilder
|
|
24
24
|
@stage = my_stage.downcase
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
28
|
-
log.info "start deploying app_name=#{app_name} to stage #{stage}"
|
29
|
-
|
30
|
-
# reset hash
|
31
|
-
@hash = nil
|
32
|
-
|
33
|
-
# deploy services
|
27
|
+
def deploy_services
|
34
28
|
images.each do |i|
|
35
29
|
i.service.deploy
|
36
30
|
end
|
31
|
+
end
|
37
32
|
|
38
|
-
|
33
|
+
def deploy_rcs
|
39
34
|
images.each do |i|
|
40
35
|
i.rc.deploy
|
41
36
|
end
|
37
|
+
end
|
42
38
|
|
43
|
-
|
39
|
+
def wait_for_deployed_rcs
|
44
40
|
wait_timeout = 300
|
45
41
|
wait_sleep = 2
|
46
42
|
wait_beginning = 15
|
@@ -54,23 +50,41 @@ module PicsolveDockerBuilder
|
|
54
50
|
unready_images.delete(i) if i.rc.ready?
|
55
51
|
end
|
56
52
|
log.debug "Still waiting for: #{unready_images.map(&:name)}"
|
53
|
+
$stdout.flush
|
54
|
+
$stderr.flush
|
57
55
|
wait_count += wait_sleep
|
58
56
|
break if wait_count > wait_timeout
|
59
57
|
break if unready_images.length == 0
|
60
58
|
sleep wait_sleep
|
61
59
|
end
|
62
|
-
|
63
|
-
# build list of successful deplyoed images
|
64
60
|
successful_images = images.dup
|
65
61
|
unready_images.each do |u|
|
66
62
|
successful_images.delete(u)
|
67
63
|
end
|
64
|
+
[successful_images, unready_images]
|
65
|
+
end
|
68
66
|
|
69
|
-
|
67
|
+
def remove_old_rcs(successful_images)
|
68
|
+
# build list of successful deplyoed images
|
70
69
|
successful_images.each do |i|
|
71
|
-
log.debug "Remove pods for #{i.name}
|
70
|
+
log.debug "Remove pods for #{i.name}"
|
72
71
|
i.rc.remove_old_rcs
|
73
72
|
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def deploy
|
76
|
+
log.info "start deploying app_name=#{app_name} to stage #{stage}"
|
77
|
+
|
78
|
+
# reset hash
|
79
|
+
@hash = nil
|
80
|
+
|
81
|
+
deploy_services
|
82
|
+
|
83
|
+
deploy_rcs
|
84
|
+
|
85
|
+
successful_images, unready_images = wait_for_deployed_rcs
|
86
|
+
|
87
|
+
remove_old_rcs(successful_images)
|
74
88
|
|
75
89
|
fail "Failed to deploy this service: #{unready_images.map(&:name)}" \
|
76
90
|
if unready_images.length > 0
|
@@ -6,12 +6,20 @@ module PicsolveDockerBuilder
|
|
6
6
|
module Kubernetes
|
7
7
|
# Ruby representation of a kuberentes replication cluster
|
8
8
|
class Rc < Resource
|
9
|
+
def initialize(image, kubernetes, rc = nil)
|
10
|
+
super(image, kubernetes)
|
11
|
+
@rc = rc
|
12
|
+
end
|
13
|
+
|
9
14
|
def existing_rcs
|
10
|
-
client.get_replication_controllers(
|
15
|
+
rcs = client.get_replication_controllers(
|
11
16
|
namespace: @image.composer.namespace
|
12
17
|
).select do |rc|
|
13
18
|
rc.metadata.name.match(/^#{@image.name}/)
|
14
19
|
end
|
20
|
+
rcs.map do |rc|
|
21
|
+
Rc.new(@image, @kubernetes, rc)
|
22
|
+
end
|
15
23
|
end
|
16
24
|
|
17
25
|
def config_rc
|
@@ -72,19 +80,21 @@ module PicsolveDockerBuilder
|
|
72
80
|
end
|
73
81
|
end
|
74
82
|
|
83
|
+
def remove_pods
|
84
|
+
pods.each(&:remove)
|
85
|
+
end
|
86
|
+
|
75
87
|
def remove
|
76
88
|
log.debug "remove replication controller #{@rc.metadata.name}"
|
77
89
|
client.delete_replication_controller(
|
78
90
|
@rc.metadata.name,
|
79
91
|
@rc.metadata.namespace
|
80
92
|
)
|
81
|
-
|
93
|
+
remove_pods
|
82
94
|
end
|
83
95
|
|
84
96
|
def remove_old_rcs
|
85
|
-
@old_rcs.each
|
86
|
-
Pod.remove_by_rc(self, rc)
|
87
|
-
end
|
97
|
+
@old_rcs.each(&:remove)
|
88
98
|
end
|
89
99
|
|
90
100
|
def template_labels_pods
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: picsolve_docker_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Simon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -176,6 +176,7 @@ files:
|
|
176
176
|
- ".rspec"
|
177
177
|
- ".rubocop.yml"
|
178
178
|
- ".travis.yml"
|
179
|
+
- CHANGELOG.md
|
179
180
|
- Gemfile
|
180
181
|
- README.md
|
181
182
|
- Rakefile
|