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 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