uffizzi-cli 0.11.3 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/uffizzi.rb +1 -0
- data/lib/uffizzi/cli/connect.rb +109 -49
- data/lib/uffizzi/cli/disconnect.rb +4 -1
- data/lib/uffizzi/clients/api/api_client.rb +8 -1
- data/lib/uffizzi/clients/api/api_routes.rb +1 -1
- data/lib/uffizzi/helpers/connect_helper.rb +45 -0
- data/lib/uffizzi/services/compose_file_service.rb +1 -1
- data/lib/uffizzi/version.rb +1 -1
- data/man/uffizzi-connect +31 -26
- data/man/uffizzi-connect-acr +27 -25
- data/man/uffizzi-connect-acr.ronn +33 -19
- data/man/uffizzi-connect-docker-hub +24 -24
- data/man/uffizzi-connect-docker-hub.ronn +30 -18
- data/man/uffizzi-connect-docker-registry +37 -0
- data/man/uffizzi-connect-docker-registry.ronn +41 -0
- data/man/uffizzi-connect-ecr +27 -25
- data/man/uffizzi-connect-ecr.ronn +33 -19
- data/man/uffizzi-connect-gcr +20 -29
- data/man/uffizzi-connect-gcr.ronn +26 -22
- data/man/uffizzi-connect-ghcr +23 -33
- data/man/uffizzi-connect-ghcr.ronn +27 -23
- data/man/uffizzi-connect.ronn +32 -18
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c27a1f65cd69d407dc2f086733a20baaf6e129b7433322ac61682f6b8a1fa54e
|
4
|
+
data.tar.gz: 61c6860dbc035009ee6197f353c05d0af95eda6d6f77b67d25f672ba954e114f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 709d000e6701f32d3dcaa3745c68d2eb63695dba2dd8ef939201569605bb121fdd3422d730d3bdc2687a33cc81810b97a3a4f4841187aac68547824293523173
|
7
|
+
data.tar.gz: 1b0ae241adab3fb770f25cca8709ae779b5c8de16056fa71e6242d470123550b6cacc920f1e2b9474951323b72d1d18160a840ed64c4814469eb89e138d0c3d5
|
data/config/uffizzi.rb
CHANGED
@@ -19,6 +19,7 @@ module Uffizzi
|
|
19
19
|
google: 'UffizziCore::Credential::Google',
|
20
20
|
amazon: 'UffizziCore::Credential::Amazon',
|
21
21
|
github_registry: 'UffizziCore::Credential::GithubContainerRegistry',
|
22
|
+
docker_registry: 'UffizziCore::Credential::DockerRegistry',
|
22
23
|
}
|
23
24
|
config.default_server = 'app.uffizzi.com'
|
24
25
|
end
|
data/lib/uffizzi/cli/connect.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'uffizzi'
|
4
|
+
require 'uffizzi/helpers/connect_helper'
|
4
5
|
|
5
6
|
module Uffizzi
|
6
7
|
class Cli::Connect < Thor
|
@@ -20,39 +21,76 @@ module Uffizzi
|
|
20
21
|
desc 'docker-hub', 'Connect to Docker Hub (hub.docker.com)'
|
21
22
|
method_option :skip_raise_existence_error, type: :boolean, default: false,
|
22
23
|
desc: 'Skip raising an error within check the credential'
|
24
|
+
method_option :update_credential_if_exists, type: :boolean, default: false
|
25
|
+
method_option :username, type: :string, aliases: :u
|
26
|
+
method_option :password, type: :string, aliases: :p
|
23
27
|
def docker_hub
|
24
28
|
type = Uffizzi.configuration.credential_types[:dockerhub]
|
25
|
-
|
29
|
+
credential_exists = credential_exists?(type)
|
30
|
+
handle_existing_credential_options('docker-hub') if credential_exists
|
26
31
|
|
27
|
-
username =
|
28
|
-
password = ENV['DOCKERHUB_PASSWORD'] || Uffizzi.ui.ask('Password: ', echo: false)
|
32
|
+
username, password = Uffizzi::ConnectHelper.get_docker_hub_data(options)
|
29
33
|
|
30
34
|
params = {
|
31
35
|
username: username,
|
32
36
|
password: password,
|
33
|
-
type:
|
37
|
+
type: type,
|
34
38
|
}
|
39
|
+
server = ConfigFile.read_option(:server)
|
40
|
+
|
41
|
+
response = if credential_exists
|
42
|
+
update_credential(server, params, type)
|
43
|
+
else
|
44
|
+
create_credential(server, params)
|
45
|
+
end
|
35
46
|
|
47
|
+
handle_result_for('Docker Hub', response)
|
48
|
+
end
|
49
|
+
|
50
|
+
desc 'docker-registry', 'Connect to any registry implementing the Docker Registry HTTP API protocol'
|
51
|
+
method_option :skip_raise_existence_error, type: :boolean, default: false,
|
52
|
+
desc: 'Skip raising an error within check the credential'
|
53
|
+
method_option :update_credential_if_exists, type: :boolean, default: false
|
54
|
+
method_option :registry, type: :string, aliases: :r
|
55
|
+
method_option :username, type: :string, aliases: :u
|
56
|
+
method_option :password, type: :string, aliases: :p
|
57
|
+
def docker_registry
|
58
|
+
type = Uffizzi.configuration.credential_types[:docker_registry]
|
59
|
+
credential_exists = credential_exists?(type)
|
60
|
+
handle_existing_credential_options('docker-registry') if credential_exists
|
61
|
+
|
62
|
+
registry_url, username, password = Uffizzi::ConnectHelper.get_docker_registry_data(options)
|
63
|
+
|
64
|
+
params = {
|
65
|
+
registry_url: prepare_registry_url(registry_url),
|
66
|
+
username: username,
|
67
|
+
password: password,
|
68
|
+
type: type,
|
69
|
+
}
|
36
70
|
server = ConfigFile.read_option(:server)
|
37
|
-
response = create_credential(server, params)
|
38
71
|
|
39
|
-
if
|
40
|
-
|
72
|
+
response = if credential_exists
|
73
|
+
update_credential(server, params, type)
|
41
74
|
else
|
42
|
-
|
75
|
+
create_credential(server, params)
|
43
76
|
end
|
77
|
+
|
78
|
+
handle_result_for('Docker Registry', response)
|
44
79
|
end
|
45
80
|
|
46
81
|
desc 'acr', 'Connect to Azure Container Registry (azurecr.io)'
|
47
82
|
method_option :skip_raise_existence_error, type: :boolean, default: false,
|
48
83
|
desc: 'Skip raising an error within check the credential'
|
84
|
+
method_option :update_credential_if_exists, type: :boolean, default: false
|
85
|
+
method_option :registry, type: :string, aliases: :r
|
86
|
+
method_option :username, type: :string, aliases: :u
|
87
|
+
method_option :password, type: :string, aliases: :p
|
49
88
|
def acr
|
50
89
|
type = Uffizzi.configuration.credential_types[:azure]
|
51
|
-
|
90
|
+
credential_exists = credential_exists?(type)
|
91
|
+
handle_existing_credential_options('acr') if credential_exists
|
52
92
|
|
53
|
-
registry_url
|
54
|
-
username = ENV['ACR_USERNAME'] || Uffizzi.ui.ask('Docker ID: ')
|
55
|
-
password = ENV['ACR_PASSWORD'] || Uffizzi.ui.ask('Password/Access Token: ', echo: false)
|
93
|
+
registry_url, username, password = Uffizzi::ConnectHelper.get_acr_data(options)
|
56
94
|
|
57
95
|
params = {
|
58
96
|
username: username,
|
@@ -60,51 +98,56 @@ module Uffizzi
|
|
60
98
|
registry_url: prepare_registry_url(registry_url),
|
61
99
|
type: type,
|
62
100
|
}
|
63
|
-
|
64
101
|
server = ConfigFile.read_option(:server)
|
65
|
-
response = create_credential(server, params)
|
66
102
|
|
67
|
-
if
|
68
|
-
|
103
|
+
response = if credential_exists
|
104
|
+
update_credential(server, params, type)
|
69
105
|
else
|
70
|
-
|
106
|
+
create_credential(server, params)
|
71
107
|
end
|
108
|
+
|
109
|
+
handle_result_for('ACR', response)
|
72
110
|
end
|
73
111
|
|
74
112
|
desc 'ecr', 'Connect to Amazon Elastic Container Registry'
|
75
113
|
method_option :skip_raise_existence_error, type: :boolean, default: false,
|
76
114
|
desc: 'Skip raising an error within check the credential'
|
115
|
+
method_option :update_credential_if_exists, type: :boolean, default: false
|
116
|
+
method_option :registry, type: :string, aliases: :r
|
117
|
+
method_option :id, type: :string
|
118
|
+
method_option :secret, type: :string, aliases: :s
|
77
119
|
def ecr
|
78
120
|
type = Uffizzi.configuration.credential_types[:amazon]
|
79
|
-
|
121
|
+
credential_exists = credential_exists?(type)
|
122
|
+
handle_existing_credential_options('ecr') if credential_exists
|
80
123
|
|
81
|
-
registry_url
|
82
|
-
access_key = ENV['AWS_ACCESS_KEY_ID'] || Uffizzi.ui.ask('Access key ID: ')
|
83
|
-
secret_access_key = ENV['AWS_SECRET_ACCESS_KEY'] || Uffizzi.ui.ask('Secret access key: ', echo: false)
|
124
|
+
registry_url, access_key_id, secret_access_key = Uffizzi::ConnectHelper.get_ecr_data(options)
|
84
125
|
|
85
126
|
params = {
|
86
|
-
username:
|
127
|
+
username: access_key_id,
|
87
128
|
password: secret_access_key,
|
88
129
|
registry_url: prepare_registry_url(registry_url),
|
89
130
|
type: type,
|
90
131
|
}
|
91
|
-
|
92
132
|
server = ConfigFile.read_option(:server)
|
93
|
-
response = create_credential(server, params)
|
94
133
|
|
95
|
-
if
|
96
|
-
|
134
|
+
response = if credential_exists
|
135
|
+
update_credential(server, params, type)
|
97
136
|
else
|
98
|
-
|
137
|
+
create_credential(server, params)
|
99
138
|
end
|
139
|
+
|
140
|
+
handle_result_for('ECR', response)
|
100
141
|
end
|
101
142
|
|
102
143
|
desc 'gcr', 'Connect to Google Container Registry (gcr.io)'
|
103
144
|
method_option :skip_raise_existence_error, type: :boolean, default: false,
|
104
145
|
desc: 'Skip raising an error within check the credential'
|
146
|
+
method_option :update_credential_if_exists, type: :boolean, default: false
|
105
147
|
def gcr(credential_file_path = nil)
|
106
148
|
type = Uffizzi.configuration.credential_types[:google]
|
107
|
-
|
149
|
+
credential_exists = credential_exists?(type)
|
150
|
+
handle_existing_credential_options('gcr') if credential_exists
|
108
151
|
|
109
152
|
credential_content = google_service_account_content(credential_file_path)
|
110
153
|
|
@@ -112,71 +155,88 @@ module Uffizzi
|
|
112
155
|
password: credential_content,
|
113
156
|
type: type,
|
114
157
|
}
|
115
|
-
|
116
158
|
server = ConfigFile.read_option(:server)
|
117
|
-
response = create_credential(server, params)
|
118
159
|
|
119
|
-
if
|
120
|
-
|
160
|
+
response = if credential_exists
|
161
|
+
update_credential(server, params, type)
|
121
162
|
else
|
122
|
-
|
163
|
+
create_credential(server, params)
|
123
164
|
end
|
165
|
+
|
166
|
+
handle_result_for('GCR', response)
|
124
167
|
end
|
125
168
|
|
126
169
|
desc 'ghcr', 'Connect to GitHub Container Registry (ghcr.io)'
|
127
170
|
method_option :skip_raise_existence_error, type: :boolean, default: false,
|
128
171
|
desc: 'Skip raising an error within check the credential'
|
172
|
+
method_option :update_credential_if_exists, type: :boolean, default: false
|
129
173
|
method_option :username, type: :string, aliases: :u
|
130
174
|
method_option :token, type: :string, aliases: :t
|
131
175
|
def ghcr
|
132
176
|
type = Uffizzi.configuration.credential_types[:github_registry]
|
133
|
-
|
177
|
+
credential_exists = credential_exists?(type)
|
178
|
+
handle_existing_credential_options('ghcr') if credential_exists
|
134
179
|
|
135
|
-
username =
|
136
|
-
password = options[:token] || ENV['GITHUB_ACCESS_TOKEN'] || Uffizzi.ui.ask('Access Token:', echo: false)
|
180
|
+
username, password = Uffizzi::ConnectHelper.get_ghcr_data(options)
|
137
181
|
|
138
182
|
params = {
|
139
183
|
username: username,
|
140
184
|
password: password,
|
141
185
|
type: type,
|
142
186
|
}
|
143
|
-
|
144
187
|
server = ConfigFile.read_option(:server)
|
145
|
-
response = create_credential(server, params)
|
146
188
|
|
147
|
-
if
|
148
|
-
|
189
|
+
response = if credential_exists
|
190
|
+
update_credential(server, params, type)
|
149
191
|
else
|
150
|
-
|
192
|
+
create_credential(server, params)
|
151
193
|
end
|
194
|
+
|
195
|
+
handle_result_for('GHCR', response)
|
152
196
|
end
|
153
197
|
|
154
198
|
map 'list-credentials' => 'list_credentials'
|
155
199
|
map 'docker-hub' => 'docker_hub'
|
200
|
+
map 'docker-registry' => 'docker_registry'
|
156
201
|
|
157
202
|
private
|
158
203
|
|
204
|
+
def handle_result_for(credential_type, response)
|
205
|
+
if ResponseHelper.created?(response) || ResponseHelper.ok?(response)
|
206
|
+
print_success_message(credential_type)
|
207
|
+
else
|
208
|
+
ResponseHelper.handle_failed_response(response)
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
159
212
|
def prepare_registry_url(registry_url)
|
160
213
|
return registry_url if registry_url.match?(/^(?:http(s)?:\/\/)/)
|
161
214
|
|
162
215
|
"https://#{registry_url}"
|
163
216
|
end
|
164
217
|
|
165
|
-
def print_success_message(
|
166
|
-
Uffizzi.ui.say("Successfully connected to #{
|
218
|
+
def print_success_message(credential_type)
|
219
|
+
Uffizzi.ui.say("Successfully connected to #{credential_type}.")
|
167
220
|
end
|
168
221
|
|
169
|
-
def
|
222
|
+
def credential_exists?(type)
|
170
223
|
server = ConfigFile.read_option(:server)
|
171
224
|
response = check_credential(server, type)
|
172
|
-
|
225
|
+
!ResponseHelper.ok?(response)
|
226
|
+
end
|
227
|
+
|
228
|
+
def handle_existing_credential_options(credential_type_slug)
|
229
|
+
if options.update_credential_if_exists?
|
230
|
+
Uffizzi.ui.say('Updating existing credential.')
|
231
|
+
return
|
232
|
+
end
|
173
233
|
|
174
234
|
if options.skip_raise_existence_error?
|
175
|
-
Uffizzi.ui.say("
|
235
|
+
Uffizzi.ui.say("Credential of type #{credential_type_slug} already exists for this account.")
|
176
236
|
exit(true)
|
177
237
|
else
|
178
|
-
message = "
|
179
|
-
"To remove them, run
|
238
|
+
message = "Credential of type #{credential_type_slug} already exists for this account.\n" \
|
239
|
+
"To remove them, run uffizzi disconnect #{credential_type_slug}."
|
180
240
|
raise Uffizzi::Error.new(message)
|
181
241
|
end
|
182
242
|
end
|
@@ -204,7 +264,7 @@ module Uffizzi
|
|
204
264
|
def google_service_account_content(credential_file_path = nil)
|
205
265
|
return ENV['GCLOUD_SERVICE_KEY'] if ENV['GCLOUD_SERVICE_KEY']
|
206
266
|
|
207
|
-
|
267
|
+
raise Uffizzi::Error.new("Path to a google service account key file wasn't specified.") if credential_file_path.nil?
|
208
268
|
|
209
269
|
begin
|
210
270
|
credential_content = File.read(credential_file_path)
|
@@ -10,6 +10,8 @@ module Uffizzi
|
|
10
10
|
connection_type = case credential_type
|
11
11
|
when 'docker-hub'
|
12
12
|
Uffizzi.configuration.credential_types[:dockerhub]
|
13
|
+
when 'docker-registry'
|
14
|
+
Uffizzi.configuration.credential_types[:docker_registry]
|
13
15
|
when 'acr'
|
14
16
|
Uffizzi.configuration.credential_types[:azure]
|
15
17
|
when 'ecr'
|
@@ -25,7 +27,7 @@ module Uffizzi
|
|
25
27
|
response = delete_credential(ConfigFile.read_option(:server), connection_type)
|
26
28
|
|
27
29
|
if ResponseHelper.no_content?(response)
|
28
|
-
Uffizzi.ui.say("Successfully disconnected #{connection_name(credential_type)}
|
30
|
+
Uffizzi.ui.say("Successfully disconnected from #{connection_name(credential_type)}.")
|
29
31
|
else
|
30
32
|
ResponseHelper.handle_failed_response(response)
|
31
33
|
end
|
@@ -36,6 +38,7 @@ module Uffizzi
|
|
36
38
|
def connection_name(credential_type)
|
37
39
|
{
|
38
40
|
'docker-hub' => 'DockerHub',
|
41
|
+
'docker-registry' => 'Docker Registry',
|
39
42
|
'acr' => 'ACR',
|
40
43
|
'ecr' => 'ECR',
|
41
44
|
'gcr' => 'GCR',
|
@@ -70,6 +70,13 @@ module ApiClient
|
|
70
70
|
build_response(response)
|
71
71
|
end
|
72
72
|
|
73
|
+
def update_credential(server, params, type)
|
74
|
+
uri = credential_uri(server, type)
|
75
|
+
response = http_client.make_put_request(uri, params)
|
76
|
+
|
77
|
+
build_response(response)
|
78
|
+
end
|
79
|
+
|
73
80
|
def fetch_deployment_services(server, project_slug, deployment_id)
|
74
81
|
uri = preview_services_uri(server, project_slug, deployment_id)
|
75
82
|
response = http_client.make_get_request(uri)
|
@@ -78,7 +85,7 @@ module ApiClient
|
|
78
85
|
end
|
79
86
|
|
80
87
|
def delete_credential(server, credential_type)
|
81
|
-
uri =
|
88
|
+
uri = credential_uri(server, credential_type)
|
82
89
|
response = http_client.make_delete_request(uri)
|
83
90
|
|
84
91
|
build_response(response)
|
@@ -64,7 +64,7 @@ module ApiRoutes
|
|
64
64
|
"#{server}/api/cli/v1/projects/#{project_slug}/deployments/#{deployment_id}/containers"
|
65
65
|
end
|
66
66
|
|
67
|
-
def
|
67
|
+
def credential_uri(server, credential_type)
|
68
68
|
"#{server}/api/cli/v1/account/credentials/#{credential_type}"
|
69
69
|
end
|
70
70
|
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Uffizzi
|
4
|
+
module ConnectHelper
|
5
|
+
class << self
|
6
|
+
def get_docker_registry_data(options)
|
7
|
+
registry_url = options[:registry] || ENV['DOCKER_REGISTRY_URL'] || Uffizzi.ui.ask('Registry Domain:')
|
8
|
+
username = options[:username] || ENV['DOCKER_REGISTRY_USERNAME'] || Uffizzi.ui.ask('Username:')
|
9
|
+
password = options[:password] || ENV['DOCKER_REGISTRY_PASSWORD'] || Uffizzi.ui.ask('Password:', echo: false)
|
10
|
+
|
11
|
+
[registry_url, username, password]
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_docker_hub_data(options)
|
15
|
+
username = options[:username] || ENV['DOCKERHUB_USERNAME'] || Uffizzi.ui.ask('Username:')
|
16
|
+
password = options[:password] || ENV['DOCKERHUB_PASSWORD'] || Uffizzi.ui.ask('Password:', echo: false)
|
17
|
+
|
18
|
+
[username, password]
|
19
|
+
end
|
20
|
+
|
21
|
+
def get_acr_data(options)
|
22
|
+
registry_url = options[:registry] || ENV['ACR_REGISTRY_URL'] || Uffizzi.ui.ask('Registry Domain:')
|
23
|
+
username = options[:username] || ENV['ACR_USERNAME'] || Uffizzi.ui.ask('Docker ID:')
|
24
|
+
password = options[:password] || ENV['ACR_PASSWORD'] || Uffizzi.ui.ask('Password/Access Token:', echo: false)
|
25
|
+
|
26
|
+
[registry_url, username, password]
|
27
|
+
end
|
28
|
+
|
29
|
+
def get_ecr_data(options)
|
30
|
+
registry_url = options[:registry] || ENV['AWS_REGISTRY_URL'] || Uffizzi.ui.ask('Registry Domain:')
|
31
|
+
access_key_id = options[:id] || ENV['AWS_ACCESS_KEY_ID'] || Uffizzi.ui.ask('Access key ID:')
|
32
|
+
secret_access_key = options[:secret] || ENV['AWS_SECRET_ACCESS_KEY'] || Uffizzi.ui.ask('Secret access key:', echo: false)
|
33
|
+
|
34
|
+
[registry_url, access_key_id, secret_access_key]
|
35
|
+
end
|
36
|
+
|
37
|
+
def get_ghcr_data(options)
|
38
|
+
username = options[:username] || ENV['GITHUB_USERNAME'] || Uffizzi.ui.ask('Github Username:')
|
39
|
+
password = options[:token] || ENV['GITHUB_ACCESS_TOKEN'] || Uffizzi.ui.ask('Access Token:', echo: false)
|
40
|
+
|
41
|
+
[username, password]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -92,7 +92,7 @@ class ComposeFileService
|
|
92
92
|
|
93
93
|
def parse_compose_content_to_object(compose_content)
|
94
94
|
begin
|
95
|
-
compose_data = Psych.safe_load(compose_content)
|
95
|
+
compose_data = Psych.safe_load(compose_content, aliases: true)
|
96
96
|
rescue Psych::SyntaxError
|
97
97
|
Uffizzi.ui.say('Invalid compose file')
|
98
98
|
end
|
data/lib/uffizzi/version.rb
CHANGED
data/man/uffizzi-connect
CHANGED
@@ -1,37 +1,42 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.9.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
3
|
-
.TH "UFFIZZI\-CONNECT" "" "
|
3
|
+
.TH "UFFIZZI\-CONNECT" "" "August 2022" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBuffizzi\-connect\fR \- grant a Uffizzi user account access to external services
|
6
6
|
.SH "SYNOPSIS"
|
7
|
-
|
8
|
-
uffizzi connect COMMAND
|
9
|
-
.fi
|
7
|
+
\fBuffizzi connect\fR COMMAND [\-\-skip\-raise\-existence\-error] [\-\-update\-credential\-if\-exists]
|
10
8
|
.SH "DESCRIPTION"
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
Grants a Uffizzi user account access to external services\.
|
10
|
+
.P
|
14
11
|
For more information on connecting to external services, see:
|
12
|
+
.br
|
15
13
|
https://github\.com/UffizziCloud/uffizzi_cli
|
16
|
-
.fi
|
17
14
|
.SH "COMMANDS"
|
18
|
-
.nf
|
19
15
|
COMMAND is one of the following:
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
.
|
16
|
+
.TP
|
17
|
+
\fBacr\fR
|
18
|
+
Connect to Azure Container Registry (azurecr\.io)\.
|
19
|
+
.TP
|
20
|
+
\fBdocker\-hub\fR
|
21
|
+
Connect to Docker Hub (hub\.docker\.com)\.
|
22
|
+
.TP
|
23
|
+
\fBdocker\-registry\fR
|
24
|
+
Connect to any registry implementing the Docker Registry HTTP API protocol
|
25
|
+
.TP
|
26
|
+
\fBecr\fR
|
27
|
+
Connect to Amazon Elastic Container Registry (amazonaws\.com)\.
|
28
|
+
.TP
|
29
|
+
\fBgcr\fR
|
30
|
+
Connect to Google Container Registry (gcr\.io)\.
|
31
|
+
.TP
|
32
|
+
\fBghcr\fR
|
33
|
+
Connect to GitHub Container Registry (ghcr\.io)\.
|
34
|
+
.SH "FLAGS"
|
35
|
+
.TP
|
36
|
+
\fB\-\-skip\-raise\-existence\-error\fR
|
37
|
+
If credential exists, do not raise an exception, just print a message\.
|
38
|
+
.TP
|
39
|
+
\fB\-\-update\-credential\-if\-exists\fR
|
40
|
+
Update credential if it exists\.
|
36
41
|
.P
|
37
|
-
Run \
|
42
|
+
Run \fBuffizzi connect COMMAND \-\-help\fR for more information on a command\.
|
data/man/uffizzi-connect-acr
CHANGED
@@ -1,35 +1,37 @@
|
|
1
1
|
.\" generated with Ronn-NG/v0.9.1
|
2
2
|
.\" http://github.com/apjanke/ronn-ng/tree/0.9.1
|
3
|
-
.TH "UFFIZZI\-CONNECT\-ACR" "" "
|
3
|
+
.TH "UFFIZZI\-CONNECT\-ACR" "" "August 2022" ""
|
4
4
|
.SH "NAME"
|
5
5
|
\fBuffizzi\-connect\-acr\fR \- grant a Uffizzi user account access to a private Azure Container Registry (ACR)
|
6
6
|
.SH "SYNOPSIS"
|
7
|
-
|
8
|
-
uffizzi connect acr
|
9
|
-
.fi
|
7
|
+
\fBuffizzi connect acr\fR [\-\-registry=REGISTRY] [\-\-username=USERNAME] [\-\-password=PASSWORD]
|
10
8
|
.SH "DESCRIPTION"
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
9
|
+
Given valid credentials, grants a Uffizzi user account access to a private Azure Container Registry
|
10
|
+
.P
|
11
|
+
Credentials can be provided interactively or non\-interactively via command options or environment variables:
|
12
|
+
.br
|
13
|
+
\fBACR_REGISTRY_URL\fR, \fBACR_REGISTRY_USERNAME\fR, \fBACR_REGISTRY_PASSWORD\fR
|
14
|
+
.P
|
15
|
+
This command can fail for the following reasons: \- The active user does not have permission to connect external services\. \- The given credentials are invalid\.
|
16
|
+
.P
|
20
17
|
For more information on connecting to external services, see:
|
18
|
+
.br
|
21
19
|
https://github\.com/UffizziCloud/uffizzi_cli
|
22
|
-
|
23
|
-
For detailed instructions on configuring webhooks to send push
|
24
|
-
|
20
|
+
.P
|
21
|
+
For detailed instructions on configuring webhooks to send push notifications to Uffizzi, see:
|
22
|
+
.br
|
25
23
|
https://docs\.uffizzi\.com/guides/container\-registry\-integrations
|
26
|
-
.
|
24
|
+
.SH "OPTIONS"
|
25
|
+
.TP
|
26
|
+
\fB\-r\fR, \fB\-\-registry=<registry>\fR
|
27
|
+
URL of the service\.
|
28
|
+
.TP
|
29
|
+
\fB\-u\fR, \fB\-\-username=<username>\fR
|
30
|
+
Username for the service\.
|
31
|
+
.TP
|
32
|
+
\fB\-p\fR, \fB\-\-password=<password>\fR
|
33
|
+
Password for the service\.
|
27
34
|
.SH "EXAMPLES"
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
password or access token:
|
32
|
-
|
33
|
-
$ uffizzi connect acr
|
34
|
-
.fi
|
35
|
-
|
35
|
+
The following command will prompt the user to enter ACR credentials, including registry domain, Docker ID and password or access token:
|
36
|
+
.P
|
37
|
+
\fBuffizzi connect acr\fR
|
@@ -1,28 +1,42 @@
|
|
1
|
-
uffizzi-connect-acr - grant a Uffizzi user account access to a private Azure Container Registry (ACR)
|
2
|
-
================================================================
|
1
|
+
# uffizzi-connect-acr - grant a Uffizzi user account access to a private Azure Container Registry (ACR)
|
3
2
|
|
4
3
|
## SYNOPSIS
|
5
|
-
|
4
|
+
|
5
|
+
`uffizzi connect acr` [--registry=REGISTRY] [--username=USERNAME] [--password=PASSWORD]
|
6
6
|
|
7
7
|
## DESCRIPTION
|
8
|
-
Given valid credentials, grants a Uffizzi user account access
|
9
|
-
to a private Azure Container Registry
|
10
8
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
Given valid credentials, grants a Uffizzi user account access
|
10
|
+
to a private Azure Container Registry
|
11
|
+
|
12
|
+
Credentials can be provided interactively or non-interactively
|
13
|
+
via command options or environment variables:
|
14
|
+
`ACR_REGISTRY_URL`, `ACR_REGISTRY_USERNAME`, `ACR_REGISTRY_PASSWORD`
|
15
|
+
|
16
|
+
This command can fail for the following reasons:
|
17
|
+
- The active user does not have permission to connect external services.
|
18
|
+
- The given credentials are invalid.
|
19
|
+
|
20
|
+
For more information on connecting to external services, see:
|
21
|
+
https://github.com/UffizziCloud/uffizzi_cli
|
15
22
|
|
16
|
-
|
17
|
-
|
23
|
+
For detailed instructions on configuring webhooks to send push
|
24
|
+
notifications to Uffizzi, see:
|
25
|
+
https://docs.uffizzi.com/guides/container-registry-integrations
|
18
26
|
|
19
|
-
|
20
|
-
|
21
|
-
|
27
|
+
## OPTIONS
|
28
|
+
|
29
|
+
* `-r`, `--registry=<registry>`:
|
30
|
+
URL of the service.
|
31
|
+
* `-u`, `--username=<username>`:
|
32
|
+
Username for the service.
|
33
|
+
* `-p`, `--password=<password>`:
|
34
|
+
Password for the service.
|
22
35
|
|
23
36
|
## EXAMPLES
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
37
|
+
|
38
|
+
The following command will prompt the user to enter ACR
|
39
|
+
credentials, including registry domain, Docker ID and
|
40
|
+
password or access token:
|
41
|
+
|
42
|
+
`uffizzi connect acr`
|