ecs_helper 0.0.3 → 0.0.8

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: f4e312a9d8447eeb797b242831cdd654d03a5110eb2334868a33066761de47bd
4
- data.tar.gz: ac1cdddf44eaeeabf20dcbc6fe05f677461bc8b67f8726bfda20f0890c69f978
3
+ metadata.gz: 69c2a9f0e010f46fd746986748e14f9a08ee5a0255a2779b7ea453d8dc47c685
4
+ data.tar.gz: b59a0b7bd4a045834a741dd34586dd87a8eec88c84fb11d63daeba3cfc5bbe8a
5
5
  SHA512:
6
- metadata.gz: 704028fcd8b9669af080ba8cce93fff3149440ea22529a3a1c1c2582eec384cf261b8662e10f1274de3d8b359ec1e0cfdf3c7bd896478f3f8e05ff36f076ae8c
7
- data.tar.gz: 5684fb3b793b810d89b9ad080acdad03fa79d91f7276ce3f2e41cc90cbf9c7e5f01e4b81cbdfbd13f036ae0c957c177361287ccc1048c5b04ebc38bb61035d3b
6
+ metadata.gz: 65f11ad6c8120a872900dbc61b91d08ad66e9b999931f298760de9baf0639d0a691bcd5bc7c37be095d94d7ed18a5fb5c34a205b8e22dd117f43f12b6239ced3
7
+ data.tar.gz: 20126689d683994f8ade23d02de2f81a25406b86ace18890be6f013c8bc64a467de567e9ccb23f3cf1fbf31ac3bec754400913ca23faad623fe1559495f7aecf
@@ -1,11 +1,13 @@
1
1
  require 'aws-sdk-ecs'
2
2
  require 'aws-sdk-ecr'
3
+ require 'aws-sdk-ecrpublic'
3
4
 
4
5
  class ECSHelper::Client
5
- attr_accessor :ecs, :ecr
6
+ attr_accessor :ecs, :ecr, :ecr_public
6
7
  def initialize
7
8
  @ecs = Aws::ECS::Client.new
8
9
  @ecr = Aws::ECR::Client.new
10
+ @ecr_public = Aws::ECRPublic::Client.new
9
11
  end
10
12
 
11
13
  # ECS
@@ -47,10 +49,14 @@ class ECSHelper::Client
47
49
  end
48
50
 
49
51
  # ECR
50
- def repositories(params = {})
52
+ def private_repositories(params = {})
51
53
  ecr.describe_repositories(params).repositories
52
54
  end
53
55
 
56
+ def public_repositories(params = {})
57
+ ecr_public.describe_repositories(params).repositories
58
+ end
59
+
54
60
  def describe_images(params = {})
55
61
  ecr.describe_images(params).image_details[0]
56
62
  end
@@ -3,10 +3,14 @@ class ECSHelper::Command
3
3
  autoload :Base, 'ecs_helper/command/base'
4
4
  autoload :BuildAndPush, 'ecs_helper/command/build_and_push'
5
5
  autoload :Deploy, 'ecs_helper/command/deploy'
6
+ autoload :ExportImages, 'ecs_helper/command/export_images'
7
+ autoload :ECRLogin, 'ecs_helper/command/ecr_login'
6
8
 
7
9
  CMD_MAPPING = {
8
10
  "build_and_push" => BuildAndPush,
9
- "deploy" => Deploy
11
+ "deploy" => Deploy,
12
+ "export_images" => ExportImages,
13
+ "ecr_login" => ECRLogin,
10
14
  }
11
15
  AVAILABLE_COMMANDS = CMD_MAPPING.keys
12
16
 
@@ -1,13 +1,11 @@
1
1
  require 'terrapin'
2
2
 
3
3
  class ECSHelper::Command::BuildAndPush < ECSHelper::Command::Base
4
- # attr_accessor :type, :client, :project, :application, :version
5
4
 
6
5
  def cmd_option_parser
7
6
  options = {}
8
7
  parser = ::OptionParser.new do |opts|
9
- opts.banner = "Usage: ecs_helper build_and_push [options]]"
10
- opts.on("-v", "--verbose", "Show debug information") { o[:verbose] = true }
8
+ opts.banner = "Usage: ecs_helper build_and_push [options]"
11
9
  opts.on("-i VALUE", "--image VALUE", "Set image name, will be used to detect ecr repo where to push image, for example web/nginx/toolbox (required)") { |c| options[:image] = processEqual(c) }
12
10
  opts.on("-d VALUE", "--directory VALUE", "Set directory for dockerfile and context, default = './'") { |c| options[:directory] = processEqual(c) }
13
11
  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) }
@@ -24,13 +22,19 @@ class ECSHelper::Command::BuildAndPush < ECSHelper::Command::Base
24
22
  log("Command", type)
25
23
  log("Options", options)
26
24
  log("Repository", repository)
27
- log("Auth", auth)
25
+ log("Auth Private", auth_private)
26
+ log("Auth Public", auth_public)
28
27
  log("Pull", pull)
29
28
  log("Build", build)
30
29
  log("Push", push)
31
30
  end
32
31
 
33
- def auth
32
+ def auth_public
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
+ auth_cmd.run
35
+ end
36
+
37
+ def auth_private
34
38
  auth_cmd = Terrapin::CommandLine.new("aws ecr get-login --no-include-email | sh")
35
39
  auth_cmd.run
36
40
  end
@@ -74,7 +78,9 @@ class ECSHelper::Command::BuildAndPush < ECSHelper::Command::Base
74
78
 
75
79
  def repository
76
80
  @repository ||= begin
77
- all = client.repositories
81
+ private_repos = client.private_repositories
82
+ public_repos = client.public_repositories
83
+ all = private_repos + public_repos
78
84
  with_name = all.select { |r| r.repository_arn.include?(image_name) }
79
85
  return with_name[0].repository_uri if with_name.length === 1
80
86
 
@@ -8,8 +8,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
8
8
  def cmd_option_parser
9
9
  options = {}
10
10
  parser = ::OptionParser.new do |opts|
11
- opts.banner = "Usage: ecs_helper deploy [options]]"
12
- opts.on("-v", "--verbose", "Show debug information") { o[:verbose] = true }
11
+ opts.banner = "Usage: ecs_helper deploy [options]"
13
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) }
14
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) }
15
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) }
@@ -78,7 +77,7 @@ class ECSHelper::Command::Deploy < ECSHelper::Command::Base
78
77
  end
79
78
 
80
79
  def repositories
81
- @repositories ||= client.repositories
80
+ @repositories ||= client.private_repositories
82
81
  end
83
82
 
84
83
  def tag_image(repo)
@@ -0,0 +1,32 @@
1
+ require 'terrapin'
2
+
3
+ class ECSHelper::Command::ECRLogin < ECSHelper::Command::Base
4
+
5
+ def cmd_option_parser
6
+ options = {}
7
+ parser = ::OptionParser.new do |opts|
8
+ opts.banner = "Usage: ecs_helper ecr_login"
9
+ end
10
+ [parser, options]
11
+ end
12
+
13
+ def required
14
+ []
15
+ end
16
+
17
+ def run
18
+ log("Command", type)
19
+ log("Auth Private", auth_private)
20
+ log("Auth Public", auth_public)
21
+ end
22
+
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
29
+ auth_cmd = Terrapin::CommandLine.new("aws ecr get-login --no-include-email | sh")
30
+ auth_cmd.run
31
+ end
32
+ end
@@ -0,0 +1,40 @@
1
+ require 'terrapin'
2
+
3
+ class ECSHelper::Command::ExportImages < ECSHelper::Command::Base
4
+
5
+ def cmd_option_parser
6
+ options = {}
7
+ parser = ::OptionParser.new do |opts|
8
+ opts.banner = "Usage: ecs_helper export_images"
9
+ end
10
+ [parser, options]
11
+ end
12
+
13
+ def required
14
+ []
15
+ end
16
+
17
+ def run
18
+ puts export_images
19
+ end
20
+
21
+ private
22
+
23
+ def project
24
+ helper.project
25
+ end
26
+
27
+ def application
28
+ helper.application
29
+ end
30
+
31
+ def export_images
32
+ variables = (['export'] + client.private_repositories.map do |repo|
33
+ container_name = repo.repository_name.scan(/#{project}-#{application}-(.*)/).flatten.first
34
+ key = container_name.upcase.gsub("-", "_") + "_IMAGE"
35
+ value = "#{repo.repository_uri}:#{helper.version}"
36
+ "#{key}=#{value}"
37
+ end).join(' ')
38
+ variables
39
+ end
40
+ end
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.3
4
+ version: 0.0.8
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-13 00:00:00.000000000 Z
11
+ date: 2021-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-ecs
@@ -51,45 +51,45 @@ dependencies:
51
51
  - !ruby/object:Gem::Version
52
52
  version: '1.42'
53
53
  - !ruby/object:Gem::Dependency
54
- name: json
54
+ name: aws-sdk-ecrpublic
55
55
  requirement: !ruby/object:Gem::Requirement
56
56
  requirements:
57
57
  - - "~>"
58
58
  - !ruby/object:Gem::Version
59
- version: '2.5'
59
+ version: '1.3'
60
60
  - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '2.5'
62
+ version: '1.3'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: '2.5'
69
+ version: '1.3'
70
70
  - - ">="
71
71
  - !ruby/object:Gem::Version
72
- version: '2.5'
72
+ version: '1.3'
73
73
  - !ruby/object:Gem::Dependency
74
- name: thor
74
+ name: json
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - "~>"
78
78
  - !ruby/object:Gem::Version
79
- version: '1.1'
79
+ version: '2.5'
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: '1.1'
82
+ version: '2.5'
83
83
  type: :runtime
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '1.1'
89
+ version: '2.5'
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
- version: '1.1'
92
+ version: '2.5'
93
93
  - !ruby/object:Gem::Dependency
94
94
  name: colorize
95
95
  requirement: !ruby/object:Gem::Requirement
@@ -110,26 +110,6 @@ dependencies:
110
110
  - - ">="
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0.8'
113
- - !ruby/object:Gem::Dependency
114
- name: docker-api
115
- requirement: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - "~>"
118
- - !ruby/object:Gem::Version
119
- version: '2.1'
120
- - - ">="
121
- - !ruby/object:Gem::Version
122
- version: '2.1'
123
- type: :runtime
124
- prerelease: false
125
- version_requirements: !ruby/object:Gem::Requirement
126
- requirements:
127
- - - "~>"
128
- - !ruby/object:Gem::Version
129
- version: '2.1'
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '2.1'
133
113
  - !ruby/object:Gem::Dependency
134
114
  name: terrapin
135
115
  requirement: !ruby/object:Gem::Requirement
@@ -165,6 +145,8 @@ files:
165
145
  - lib/ecs_helper/command/base.rb
166
146
  - lib/ecs_helper/command/build_and_push.rb
167
147
  - lib/ecs_helper/command/deploy.rb
148
+ - lib/ecs_helper/command/ecr_login.rb
149
+ - lib/ecs_helper/command/export_images.rb
168
150
  - lib/ecs_helper/common_helper.rb
169
151
  - lib/ecs_helper/logging.rb
170
152
  - lib/ecs_helper/service_helper.rb