container_ship 0.1.2 → 0.1.3

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