ecs_helper 0.0.5 → 0.0.10

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