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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 907102b94c2c0a9eb417a18a6c5641a9ac7cd765
4
- data.tar.gz: 4e03d47cfcd191e7dc91c84dae78acd77ab5794e
3
+ metadata.gz: 15bcfea24b318c9f934f15dcfdd65d5ed4be8d99
4
+ data.tar.gz: cb6e0b70bc6ca5ff68ebb873a73266bfe763c441
5
5
  SHA512:
6
- metadata.gz: 297c0d499002deea747be0506047a3d26fc5936bdcceeb50d9082a22ba3c84326c79cd113ed9fca81dab610ce45bff688021fb3264537fecf209d9fd13d423de
7
- data.tar.gz: b9530741746f41ba865e552ec96dc6b7185bf5fb5e56747a15e30157c8b8ee4fe671eeef413463c8691911698e52e5f7d45c19687908f89dc56c165605ce7dbc
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 deploy
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
- # deploy rcs
33
+ def deploy_rcs
39
34
  images.each do |i|
40
35
  i.rc.deploy
41
36
  end
37
+ end
42
38
 
43
- # wait for deployed rc
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
- # remove old rcs of successful deployed images
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
- remove_pods_by_rc(@rc)
93
+ remove_pods
82
94
  end
83
95
 
84
96
  def remove_old_rcs
85
- @old_rcs.each do |rc|
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
@@ -1,4 +1,4 @@
1
1
  # version
2
2
  module PicsolveDockerBuilder
3
- VERSION = '0.1.0'
3
+ VERSION = '0.1.1'
4
4
  end
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.0
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-02 00:00:00.000000000 Z
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