ecs_helper 0.0.5 → 0.0.10

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: 30d1b2b206fb9bcb80cc9fe9bb35359dbc4de0123e0d2a7a4dff79aa37cadfe3
4
- data.tar.gz: 5fc0e17c2bd9d3e07cd9aca28c453fe57f248e511f54838b4998f492a9b2729c
3
+ metadata.gz: f4e40c9c0050075171080514f957eeef76fce51e292c5305d2003005326ad1bb
4
+ data.tar.gz: f48a33a223c127b561f7e639834fa59c0b7c0ad96f42fc661af062e50ef6f439
5
5
  SHA512:
6
- metadata.gz: 3d0484fc39baa8577017b0acb6ba1730bf6691e44893d2fa844495d9331dc37c4ca8a82e323e44f3d73d9bf0720459cbab23efb67328886a310a21754afe457b
7
- data.tar.gz: be29a8a6547814bc3ec94e29bf97245ff0ea58812e44ef272347ccef9a185e53befe9cd3e9f85ebc65de503c4eb3a24c9676321df510c21fa6b8c885c4dd5fae
6
+ metadata.gz: 849243dae8979adaf2ee254edbe49142af2a96e32143472653f124030c8f5389d278ae55b26c063b6b05793f544e7d2183424d0630b0680761371e3dfb7b10d6
7
+ data.tar.gz: e4cc9793f2962554bfa56ccad5d0c4f7045eb098ff5d98be470be58dc97a03fec07966d23601085971baa94594c73698c603796dffdd85e28988717562aec322
@@ -32,7 +32,6 @@ class ECSHelper::Command::BuildAndPush < ECSHelper::Command::Base
32
32
  def auth_public
33
33
  auth_cmd = Terrapin::CommandLine.new("aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws")
34
34
  auth_cmd.run
35
-
36
35
  end
37
36
 
38
37
  def auth_private
@@ -2,7 +2,7 @@ require 'terrapin'
2
2
 
3
3
  class ECSHelper::Command::Deploy < ECSHelper::Command::Base
4
4
  attr_accessor :repositories, :task_definition, :new_task_definition, :service
5
- TIMEOUT = 300
5
+ DEFAULT_TIMEOUT = 300
6
6
  STEP = 5
7
7
 
8
8
  def cmd_option_parser
@@ -12,9 +12,10 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
12
12
  opts.on("-p VALUE", "--project VALUE", "Set project name, if not specified will look at ENV['PROJECT'], will be used to detect cluster") { |p| options[:project] = processEqual(p) }
13
13
  opts.on("-a VALUE", "--application VALUE", "Set application name, if not specified will look at ENV['APPLICATION'], will be used to detect service and task definition") { |a| options[:application] = processEqual(a) }
14
14
  opts.on("-e VALUE", "--environment VALUE", "Set environment, if not specified will look at ENV['ENVIRONMENT'], it there is empty will try to detect based on the branch") { |e| options[:environment] = processEqual(e) }
15
- opts.on("-t VALUE", "--tag VALUE", "Set tag which will be applied to all containers in the task if tag is present in the repo") { |t| options[:tag] = processEqual(t) }
15
+ opts.on("-v VALUE", "--version VALUE", "Set version which will be applied to all containers in the task if tag is present in the repo") { |t| options[:version] = processEqual(t) }
16
16
  opts.on("-c VALUE", "--cluster VALUE", "Set cluster name, could be autodetected if project and environment are specified") { |c| options[:cluster] = processEqual(c) }
17
17
  opts.on("-s VALUE", "--service VALUE", "Set service, could be autodetected if application and environment are specified") { |s| options[:service] = processEqual(s) }
18
+ opts.on("-t VALUE", "--timeout VALUE", "Set timeout how long to wait until deployment finished") { |t| options[:timeout] = processEqual(t) }
18
19
  end
19
20
  [parser, options]
20
21
  end
@@ -25,7 +26,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
25
26
  log("Environment", environment)
26
27
  log("Cluster", cluster_arn)
27
28
  log("Service", service_arn)
28
- log("Tag", tag)
29
+ log("Version", version)
29
30
  log("Service task definition", task_definition_arn)
30
31
  log("Containers", pretty_container_definitions)
31
32
  log("New task definition", new_task_definition.task_definition_arn)
@@ -37,7 +38,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
37
38
  def wait_for_deployment(time = 0)
38
39
  service = helper.client.describe_service(cluster_arn, service_arn)
39
40
  return true if service.deployments.count == 1
40
- error("Deployment timeout (#{TIMEOUT})") if time > TIMEOUT
41
+ error("Deployment timeout (#{timeout})") if time > timeout
41
42
  sleep STEP
42
43
  wait_for_deployment(time + STEP)
43
44
  end
@@ -56,8 +57,12 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
56
57
  helper.current_service
57
58
  end
58
59
 
59
- def tag
60
- options[:tag] || helper.version
60
+ def version
61
+ options[:version] || helper.version
62
+ end
63
+
64
+ def timeout
65
+ options[:timeout] || DEFAULT_TIMEOUT
61
66
  end
62
67
 
63
68
  def service
@@ -77,11 +82,11 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
77
82
  end
78
83
 
79
84
  def repositories
80
- @repositories ||= client.repositories
85
+ @repositories ||= client.private_repositories
81
86
  end
82
87
 
83
- def tag_image(repo)
84
- client.describe_images({repository_name: repo.repository_name, image_ids: [image_tag: tag]})
88
+ def version_image(repo)
89
+ client.describe_images({repository_name: repo.repository_name, image_ids: [image_tag: version]})
85
90
  rescue
86
91
  nil
87
92
  end
@@ -99,7 +104,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
99
104
  def container_definition_to_ecr(cd)
100
105
  repo = repo_for(cd.name)
101
106
  is_ecr = cd.image.include?(ecr_base)
102
- image = repo && tag_image(repo)
107
+ image = repo && version_image(repo)
103
108
  should_update = is_ecr && repo && image
104
109
  [repo, is_ecr, image, should_update]
105
110
  end
@@ -107,7 +112,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
107
112
  def new_container_definitions
108
113
  container_definitions.map do |cd|
109
114
  repo, is_ecr, image, should_be_updated = container_definition_to_ecr(cd)
110
- cd.image = "#{repo.repository_uri}:#{tag}" if should_be_updated
115
+ cd.image = "#{repo.repository_uri}:#{version}" if should_be_updated
111
116
  cd.to_hash
112
117
  end
113
118
  end
@@ -120,7 +125,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
120
125
  cd.image,
121
126
  is_ecr ? "ECR image" : "Not a ECR image",
122
127
  repo ? "Repo #{repo.repository_name}" : "Repo not found",
123
- image ? "Image tag #{tag}" : "Image tag #{tag} not found",
128
+ image ? "Image version #{version}" : "Image version #{version} not found",
124
129
  should_be_updated ? "Will be updated" : "Not applicable"
125
130
  ].join(' | ')
126
131
  end.join("\n")
@@ -16,10 +16,16 @@ class ECSHelper::Command::ECRLogin < ECSHelper::Command::Base
16
16
 
17
17
  def run
18
18
  log("Command", type)
19
- log("Auth", auth)
19
+ log("Auth Private", auth_private)
20
+ log("Auth Public", auth_public)
20
21
  end
21
22
 
22
- def auth
23
+ def auth_public
24
+ auth_cmd = Terrapin::CommandLine.new("aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws")
25
+ auth_cmd.run
26
+ end
27
+
28
+ def auth_private
23
29
  auth_cmd = Terrapin::CommandLine.new("aws ecr get-login --no-include-email | sh")
24
30
  auth_cmd.run
25
31
  end
@@ -18,12 +18,6 @@ class ECSHelper::Command::ExportImages < ECSHelper::Command::Base
18
18
  puts export_images
19
19
  end
20
20
 
21
- def auth
22
- auth_cmd = Terrapin::CommandLine.new("aws ecr get-login --no-include-email | sh")
23
- auth_cmd.run
24
- end
25
-
26
-
27
21
  private
28
22
 
29
23
  def project
@@ -35,7 +29,7 @@ class ECSHelper::Command::ExportImages < ECSHelper::Command::Base
35
29
  end
36
30
 
37
31
  def export_images
38
- variables = (['export'] + client.repositories.map do |repo|
32
+ variables = (['export'] + client.private_repositories.map do |repo|
39
33
  container_name = repo.repository_name.scan(/#{project}-#{application}-(.*)/).flatten.first
40
34
  key = container_name.upcase.gsub("-", "_") + "_IMAGE"
41
35
  value = "#{repo.repository_uri}:#{helper.version}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ecs_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artem Petrov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-15 00:00:00.000000000 Z
11
+ date: 2021-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-ecs