container_ship 0.1.2 → 0.1.3

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
  SHA256:
3
- metadata.gz: 0db018f1ecfb3983ee58273365e051e81f6920a23eee7a2fa85335587d14a527
4
- data.tar.gz: 13cc71f918ddc296f57e1de80bd7371f8cde1e571de6376c4c469afa9e82ce86
3
+ metadata.gz: eb9afef88f95f3bb1a71a3280da4dcc0001d6998d9c10c2f18c5e79c5ef64594
4
+ data.tar.gz: a5b9a286b28d7011632ddadc95634eb34bdef30d2822dcddb08e09594390a9d3
5
5
  SHA512:
6
- metadata.gz: 422e4cd9a8e42beaacac3c70680456a3beee93c8afd3295be836838be21182b0479ca18a38f8554c1855e9585c8d4fe00b736d98383be4f149e7d3e75f79f802
7
- data.tar.gz: e6e164727eb88af0b947a72fa62235b10d2e159cdb1128319237351c863a6b83cfe65764afff65885293f2f6f90ac9a7769bb147fd472cf39e0cb7d54e421cab
6
+ metadata.gz: d572df8d02e95d6dc8dcf0129a98deb68314481fcce12738db6c11463d12a6aa18fd1f970a20beaf3c152c30e22dd0488655369569afbe32f29ca84ff3843666
7
+ data.tar.gz: 39b233d530327120d4426b317fb8760e911350ce85f9972d4d85ca1e34ca38a0610a9b4f3ffd3ca5531ab6b5404bad76573537a3ff5328d4f63fbfd782bbcec8
data/.gitignore CHANGED
@@ -6,6 +6,7 @@
6
6
  /pkg/
7
7
  /spec/reports/
8
8
  /tmp/
9
+ /vendor/
9
10
 
10
11
  # rspec failure tracking
11
12
  .rspec_status
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- container_ship (0.1.2)
4
+ container_ship (0.1.3)
5
5
  aws-sdk-cloudwatchlogs
6
6
  aws-sdk-ecs
7
7
  thor
@@ -15,36 +15,38 @@ GEM
15
15
  minitest (~> 5.1)
16
16
  tzinfo (~> 1.1)
17
17
  zeitwerk (~> 2.2, >= 2.2.2)
18
- addressable (2.7.0)
18
+ addressable (2.8.0)
19
19
  public_suffix (>= 2.0.2, < 5.0)
20
20
  ast (2.4.2)
21
- aws-eventstream (1.1.1)
22
- aws-partitions (1.465.0)
23
- aws-sdk-cloudwatchlogs (1.41.0)
24
- aws-sdk-core (~> 3, >= 3.112.0)
21
+ aws-eventstream (1.2.0)
22
+ aws-partitions (1.503.0)
23
+ aws-sdk-cloudwatchlogs (1.45.0)
24
+ aws-sdk-core (~> 3, >= 3.120.0)
25
25
  aws-sigv4 (~> 1.1)
26
- aws-sdk-core (3.114.1)
26
+ aws-sdk-core (3.121.0)
27
27
  aws-eventstream (~> 1, >= 1.0.2)
28
28
  aws-partitions (~> 1, >= 1.239.0)
29
29
  aws-sigv4 (~> 1.1)
30
30
  jmespath (~> 1.0)
31
- aws-sdk-ecs (1.80.0)
32
- aws-sdk-core (~> 3, >= 3.112.0)
31
+ aws-sdk-ecs (1.85.0)
32
+ aws-sdk-core (~> 3, >= 3.120.0)
33
33
  aws-sigv4 (~> 1.1)
34
- aws-sigv4 (1.2.3)
34
+ aws-sigv4 (1.4.0)
35
35
  aws-eventstream (~> 1, >= 1.0.2)
36
36
  codecov (0.5.2)
37
37
  simplecov (>= 0.15, < 0.22)
38
38
  coderay (1.1.3)
39
- concurrent-ruby (1.1.8)
39
+ concurrent-ruby (1.1.9)
40
40
  diff-lcs (1.4.4)
41
41
  docile (1.3.5)
42
- faraday (1.4.2)
42
+ faraday (1.5.1)
43
43
  faraday-em_http (~> 1.0)
44
44
  faraday-em_synchrony (~> 1.0)
45
45
  faraday-excon (~> 1.1)
46
+ faraday-httpclient (~> 1.0.1)
46
47
  faraday-net_http (~> 1.0)
47
48
  faraday-net_http_persistent (~> 1.1)
49
+ faraday-patron (~> 1.0)
48
50
  multipart-post (>= 1.2, < 3)
49
51
  ruby2_keywords (>= 0.0.4)
50
52
  faraday-em_http (1.0.0)
@@ -52,10 +54,12 @@ GEM
52
54
  faraday-excon (1.1.0)
53
55
  faraday-http-cache (2.2.0)
54
56
  faraday (>= 0.8)
57
+ faraday-httpclient (1.0.1)
55
58
  faraday-net_http (1.0.1)
56
- faraday-net_http_persistent (1.1.0)
57
- ffi (1.15.1)
58
- formatador (0.2.5)
59
+ faraday-net_http_persistent (1.2.0)
60
+ faraday-patron (1.0.0)
61
+ ffi (1.15.3)
62
+ formatador (0.3.0)
59
63
  github_changelog_generator (1.15.2)
60
64
  activesupport
61
65
  faraday-http-cache
@@ -64,13 +68,13 @@ GEM
64
68
  rainbow (>= 2.2.1)
65
69
  rake (>= 10.0)
66
70
  retriable (~> 3.0)
67
- guard (2.17.0)
71
+ guard (2.18.0)
68
72
  formatador (>= 0.2.4)
69
73
  listen (>= 2.7, < 4.0)
70
74
  lumberjack (>= 1.0.12, < 2.0)
71
75
  nenv (~> 0.1)
72
76
  notiffany (~> 0.0)
73
- pry (>= 0.9.12)
77
+ pry (>= 0.13.0)
74
78
  shellany (~> 0.0)
75
79
  thor (>= 0.18.1)
76
80
  guard-compat (1.2.1)
@@ -84,7 +88,7 @@ GEM
84
88
  i18n (1.8.10)
85
89
  concurrent-ruby (~> 1.0)
86
90
  jmespath (1.4.0)
87
- listen (3.5.1)
91
+ listen (3.6.0)
88
92
  rb-fsevent (~> 0.10, >= 0.10.3)
89
93
  rb-inotify (~> 0.9, >= 0.9.10)
90
94
  lumberjack (1.2.8)
@@ -100,14 +104,14 @@ GEM
100
104
  faraday (>= 0.9)
101
105
  sawyer (~> 0.8.0, >= 0.5.3)
102
106
  parallel (1.20.1)
103
- parser (3.0.1.1)
107
+ parser (3.0.2.0)
104
108
  ast (~> 2.4.1)
105
109
  pry (0.14.1)
106
110
  coderay (~> 1.1)
107
111
  method_source (~> 1.0)
108
112
  public_suffix (4.0.6)
109
113
  rainbow (3.0.0)
110
- rake (13.0.3)
114
+ rake (13.0.6)
111
115
  rb-fsevent (0.11.0)
112
116
  rb-inotify (0.10.1)
113
117
  ffi (~> 1.0)
@@ -139,7 +143,7 @@ GEM
139
143
  rubocop-ast (1.4.1)
140
144
  parser (>= 2.7.1.5)
141
145
  ruby-progressbar (1.11.0)
142
- ruby2_keywords (0.0.4)
146
+ ruby2_keywords (0.0.5)
143
147
  sawyer (0.8.2)
144
148
  addressable (>= 2.3.5)
145
149
  faraday (> 0.8, < 2.0)
@@ -174,4 +178,4 @@ DEPENDENCIES
174
178
  simplecov
175
179
 
176
180
  BUNDLED WITH
177
- 2.1.4
181
+ 2.2.17
@@ -16,8 +16,10 @@ module ContainerShip
16
16
  end
17
17
 
18
18
  desc 'exec CLUSTER_NAME SERVICE_NAME ENVIRONMENT BUILD_NUMBER', 'exec specified task'
19
+ method_option 'timeout', desc: 'Timeout seconds for executing the task. Default 5 minutes.'
19
20
  def exec(cluster_name, service_name, environment, build_number)
20
- Command::ExecCommand.new.run(cluster_name, service_name, environment, build_number)
21
+ timeout = options['timeout']&.to_i || 300
22
+ Command::ExecCommand.new.run(cluster_name, service_name, environment, build_number, timeout: timeout)
21
23
  end
22
24
 
23
25
  desc 'version', 'display gem version'
@@ -17,7 +17,7 @@ module ContainerShip
17
17
  include Modules::Ecs
18
18
  include Modules::PrintTask
19
19
 
20
- def run(cluster_name, task_name, environment, build_number)
20
+ def run(cluster_name, task_name, environment, build_number, timeout: nil)
21
21
  task_definition = TaskDefinition.new(cluster_name, 'tasks', task_name, environment, build_number)
22
22
 
23
23
  push_image task_definition
@@ -31,7 +31,7 @@ module ContainerShip
31
31
  end
32
32
 
33
33
  exit_status = print_around_task('Waiting task is completed... ') do
34
- wait_task task_definition, task_arn
34
+ wait_task task_definition, task_arn, timeout: timeout
35
35
  end
36
36
 
37
37
  show_log task_definition, task_arn
@@ -5,7 +5,9 @@ module ContainerShip
5
5
  module Modules
6
6
  module Docker
7
7
  def push_image(task_definition)
8
+ puts "docker build -t \"#{task_definition.image_name}:#{task_definition.build_number}\" ."
8
9
  sh "docker build -t \"#{task_definition.image_name}:#{task_definition.build_number}\" ."
10
+ puts "docker push #{task_definition.image_name}:#{task_definition.build_number}"
9
11
  sh "docker push #{task_definition.image_name}:#{task_definition.build_number}"
10
12
  end
11
13
 
@@ -13,8 +15,9 @@ module ContainerShip
13
15
 
14
16
  def sh(command)
15
17
  status = nil
16
- Open3.popen3(command) do |_i, o, _e, w|
18
+ Open3.popen3(command) do |_i, o, e, w|
17
19
  o.each { |line| puts line }
20
+ e.each { |line| puts line }
18
21
  status = w.value
19
22
  end
20
23
  exit(status.exitstatus) unless status.success?
@@ -30,8 +30,8 @@ module ContainerShip
30
30
  .task_arn
31
31
  end
32
32
 
33
- def wait_task(task_definition, task_arn)
34
- do_every_5_seconds do
33
+ def wait_task(task_definition, task_arn, timeout: nil)
34
+ do_every_5_seconds(timeout: timeout) do
35
35
  aws_ecs_client.describe_tasks(cluster: task_definition.full_cluster_name, tasks: [task_arn])
36
36
  .tasks
37
37
  .first
@@ -47,16 +47,21 @@ module ContainerShip
47
47
  @aws_ecs_client ||= Aws::ECS::Client.new
48
48
  end
49
49
 
50
- def do_every_5_seconds
51
- count = 0
50
+ def do_every_5_seconds(timeout: nil)
51
+ timeout ||= 300 # default is 5 minutes
52
+ start = Time.now
52
53
  loop do
53
54
  sleep 3
54
55
  print '.'
55
56
  exit_status = yield
56
- count += 1
57
+ elapsed = Time.now - start
58
+ if elapsed > timeout
59
+ puts "Timeout! elapsed: #{elapsed} seconds"
60
+ return 124
61
+ end
57
62
  next if exit_status.nil?
58
- return 124 if count > 60
59
63
 
64
+ puts "exit_code of wait_task is #{exit_status}"
60
65
  return exit_status
61
66
  end
62
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ContainerShip
4
- VERSION = '0.1.2'
4
+ VERSION = '0.1.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: container_ship
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yuji Ueki
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-03 00:00:00.000000000 Z
11
+ date: 2021-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-cloudwatchlogs