picsolve_docker_builder 0.1.0 → 0.1.1
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.
- 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
|