souls 1.19.3 → 1.19.4
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 +4 -4
- data/lib/souls/cli/gcloud/iam/index.rb +21 -16
- data/lib/souls/cli/gcloud/index.rb +1 -0
- data/lib/souls/cli/gcloud/sql/index.rb +50 -33
- data/lib/souls/cli/sync/pubsub.rb +5 -4
- data/lib/souls/version.rb +1 -1
- data/lib/souls/versions/.souls_api_version +1 -1
- data/lib/souls/versions/.souls_worker_version +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6cd5ddd6a55b4b803fc8e815afdf4fbb27d638ae1ef7cd6714d1205b8c4c3818
|
|
4
|
+
data.tar.gz: 00f110a29e05dda4a3790c128ba9f9ff0b019057874009766e2cd18cab426dc4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fcaa0f1b6d9f1ca3dc20ef00a8550362c3bed338141cdb60cdde0e655dcc93185d4f8af738fac82a549ed27cf3198532c94009f27e8522eade002bd82cb2b109
|
|
7
|
+
data.tar.gz: c6c7a35a0d1ba0f8fb5797e61081f567a4627935d465e1756da524e983a81f1136623b95e98067248393be75b13129efab3d627d67ab27043bc0322d68e748fa
|
|
@@ -2,23 +2,28 @@ module SOULs
|
|
|
2
2
|
class Iam < Thor
|
|
3
3
|
desc "setup_key", "Create Google Cloud IAM Service Account Key And Set All Permissions"
|
|
4
4
|
def setup_key
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
5
|
+
Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
|
|
6
|
+
Whirly.status = "Setting up credentials and permissions..."
|
|
7
|
+
region = SOULs.configuration.region
|
|
8
|
+
SOULs::Gcloud.new.auth_login
|
|
9
|
+
SOULs::Upgrade.new.config
|
|
10
|
+
create_service_account
|
|
11
|
+
create_service_account_key
|
|
12
|
+
SOULs::Gcloud.new.enable_permissions
|
|
13
|
+
add_permissions
|
|
14
|
+
begin
|
|
15
|
+
system("gcloud app create --region=#{region} --quiet")
|
|
16
|
+
rescue StandardError, error
|
|
17
|
+
puts("gcloud app region is Already exist! - SOULs::Gcloud::Iam.setup_key")
|
|
18
|
+
end
|
|
19
|
+
begin
|
|
20
|
+
set_gh_secret_json
|
|
21
|
+
rescue StandardError
|
|
22
|
+
export_key_to_console
|
|
23
|
+
end
|
|
21
24
|
end
|
|
25
|
+
SOULs::Painter.success("You're all set!")
|
|
26
|
+
true
|
|
22
27
|
end
|
|
23
28
|
|
|
24
29
|
private
|
|
@@ -62,6 +62,7 @@ module SOULs
|
|
|
62
62
|
system("gcloud services enable cloudresourcemanager.googleapis.com")
|
|
63
63
|
system("gcloud services enable translate.googleapis.com")
|
|
64
64
|
system("gcloud services enable firestore.googleapis.com")
|
|
65
|
+
system("gcloud services enable cloudfunctions.googleapis.com")
|
|
65
66
|
end
|
|
66
67
|
end
|
|
67
68
|
end
|
|
@@ -6,7 +6,6 @@ module SOULs
|
|
|
6
6
|
def create_instance
|
|
7
7
|
prompt = TTY::Prompt.new
|
|
8
8
|
password = prompt.mask("Set DB PassWord:")
|
|
9
|
-
app_name = SOULs.configuration.app
|
|
10
9
|
project_id = SOULs.configuration.project_id
|
|
11
10
|
instance_name = SOULs.configuration.instance_name
|
|
12
11
|
region = SOULs.configuration.region if options[:region].blank?
|
|
@@ -20,43 +19,57 @@ module SOULs
|
|
|
20
19
|
--database-version=#{db_type} --cpu=1 --memory=4096MB --zone=#{zone} \
|
|
21
20
|
--root-password='#{password}' --database-flags cloudsql.iam_authentication=on"
|
|
22
21
|
)
|
|
23
|
-
|
|
24
|
-
Dir.chdir(SOULs.get_api_path.to_s) do
|
|
25
|
-
file_path = ".env"
|
|
26
|
-
File.open(file_path, "w") do |line|
|
|
27
|
-
line.write(<<~TEXT)
|
|
28
|
-
GOOGLE_AUTH_SUPPRESS_CREDENTIALS_WARNINGS=1
|
|
29
|
-
SOULS_DB_HOST=#{instance_ip}
|
|
30
|
-
SOULS_DB_PW=#{password}
|
|
31
|
-
SOULS_DB_USER=postgres
|
|
32
|
-
SOULS_GCP_PROJECT_ID=#{project_id}
|
|
33
|
-
SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
|
|
34
|
-
TZ="#{region_to_timezone(region: region)}"
|
|
35
|
-
TEXT
|
|
36
|
-
end
|
|
37
|
-
end
|
|
38
|
-
Dir.chdir(SOULs.get_mother_path.to_s) do
|
|
39
|
-
file_path = ".env.production"
|
|
40
|
-
File.open(file_path, "w") do |line|
|
|
41
|
-
line.write(<<~TEXT)
|
|
42
|
-
SOULS_DB_HOST="/cloudsql/#{project_id}:#{region}:#{instance_name}"
|
|
43
|
-
SOULS_DB_PW=#{password}
|
|
44
|
-
SOULS_DB_USER=postgres
|
|
45
|
-
SOULS_APP_NAME=#{app_name}
|
|
46
|
-
SOULS_GCP_PROJECT_ID=#{project_id}
|
|
47
|
-
SOULS_GCP_REGION=#{region}
|
|
48
|
-
SOULS_GCLOUDSQL_INSTANCE="#{project_id}:#{region}:#{instance_name}"
|
|
49
|
-
SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
|
|
50
|
-
TZ="#{region_to_timezone(region: region)}"
|
|
51
|
-
TEXT
|
|
52
|
-
end
|
|
53
|
-
end
|
|
22
|
+
SOULs::Sql.new.env(password: password)
|
|
54
23
|
SOULs::Github.new.secret_set
|
|
55
24
|
Whirly.status = Paint["Cloud SQL #{instance_name} is successfully created! You can push to deploy!", :green]
|
|
56
25
|
end
|
|
57
26
|
true
|
|
58
27
|
end
|
|
59
28
|
|
|
29
|
+
desc "env", "Generate .env.production file to deploy"
|
|
30
|
+
def env(password: "Password")
|
|
31
|
+
require(SOULs.get_mother_path.to_s + "/config/souls")
|
|
32
|
+
project_id = SOULs.configuration.project_id
|
|
33
|
+
instance_name = SOULs.configuration.instance_name
|
|
34
|
+
region = SOULs.configuration.region
|
|
35
|
+
app_name = SOULs.configuration.app
|
|
36
|
+
prompt = TTY::Prompt.new
|
|
37
|
+
db_password = password == "Password" ? prompt.mask("Set DB PassWord:") : password
|
|
38
|
+
instance_ip = `gcloud sql instances list --project=#{project_id} | grep #{instance_name} | awk '{print $5}'`.strip
|
|
39
|
+
Dir.chdir(SOULs.get_api_path.to_s) do
|
|
40
|
+
file_path = ".env"
|
|
41
|
+
File.open(file_path, "w") do |line|
|
|
42
|
+
line.write(<<~TEXT)
|
|
43
|
+
GOOGLE_AUTH_SUPPRESS_CREDENTIALS_WARNINGS=1
|
|
44
|
+
SOULS_DB_HOST=#{instance_ip}
|
|
45
|
+
SOULS_DB_PW=#{db_password}
|
|
46
|
+
SOULS_DB_USER=postgres
|
|
47
|
+
SOULS_GCP_PROJECT_ID=#{project_id}
|
|
48
|
+
SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
|
|
49
|
+
TZ="#{region_to_timezone(region: region)}"
|
|
50
|
+
TEXT
|
|
51
|
+
end
|
|
52
|
+
SOULs::Painter.create_file(file_path)
|
|
53
|
+
end
|
|
54
|
+
Dir.chdir(SOULs.get_mother_path.to_s) do
|
|
55
|
+
file_path = ".env.production"
|
|
56
|
+
File.open(file_path, "w") do |line|
|
|
57
|
+
line.write(<<~TEXT)
|
|
58
|
+
SOULS_DB_HOST="/cloudsql/#{project_id}:#{region}:#{instance_name}"
|
|
59
|
+
SOULS_DB_PW=#{db_password}
|
|
60
|
+
SOULS_DB_USER=postgres
|
|
61
|
+
SOULS_APP_NAME=#{app_name}
|
|
62
|
+
SOULS_GCP_PROJECT_ID=#{project_id}
|
|
63
|
+
SOULS_GCP_REGION=#{region}
|
|
64
|
+
SOULS_GCLOUDSQL_INSTANCE="#{project_id}:#{region}:#{instance_name}"
|
|
65
|
+
SOULS_SECRET_KEY_BASE='#{SecureRandom.base64(64)}'
|
|
66
|
+
TZ="#{region_to_timezone(region: region)}"
|
|
67
|
+
TEXT
|
|
68
|
+
end
|
|
69
|
+
SOULs::Painter.create_file(file_path)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
60
73
|
desc "list", "Show Cloud SQL Instances List"
|
|
61
74
|
def list
|
|
62
75
|
system("gcloud sql instances list")
|
|
@@ -111,6 +124,7 @@ module SOULs
|
|
|
111
124
|
desc "assgin_ip", "Add Current Grobal IP to White List"
|
|
112
125
|
method_option :ip, default: "", aliases: "--ip", desc: "Adding IP to Google Cloud SQL White List: e.g.'11.11.1.1'"
|
|
113
126
|
def assign_ip
|
|
127
|
+
require(SOULs.get_mother_path.to_s + "/config/souls")
|
|
114
128
|
project_id = SOULs.configuration.project_id
|
|
115
129
|
instance_name = SOULs.configuration.instance_name
|
|
116
130
|
ips = []
|
|
@@ -126,12 +140,15 @@ module SOULs
|
|
|
126
140
|
-H "Authorization: Bearer "$(gcloud auth print-access-token) \
|
|
127
141
|
"https://sqladmin.googleapis.com/v1/projects/#{project_id}/instances/#{instance_name}?fields=settings"`
|
|
128
142
|
)
|
|
129
|
-
|
|
143
|
+
begin
|
|
144
|
+
cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].blank?
|
|
130
145
|
white_ips =
|
|
131
146
|
cloud_sql["settings"]["ipConfiguration"]["authorizedNetworks"].map do |sql_ips|
|
|
132
147
|
sql_ips["value"]
|
|
133
148
|
end
|
|
134
149
|
ips = (ips + white_ips).uniq
|
|
150
|
+
rescue StandardError => e
|
|
151
|
+
puts(e)
|
|
135
152
|
end
|
|
136
153
|
ips = ips.join(",")
|
|
137
154
|
Whirly.start(spinner: "clock", interval: 420, stop: "🎉") do
|
|
@@ -10,7 +10,8 @@ module SOULs
|
|
|
10
10
|
return false
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
url = `gcloud run services list
|
|
13
|
+
url = `gcloud run services list --platform=managed \
|
|
14
|
+
--project=#{project_id} |grep souls-#{project_id}-#{worker_name}| awk '{print $4}'`.strip
|
|
14
15
|
return false if url.blank?
|
|
15
16
|
|
|
16
17
|
worker_file_names = get_workers_file_paths
|
|
@@ -56,7 +57,7 @@ module SOULs
|
|
|
56
57
|
project_id = SOULs.configuration.project_id
|
|
57
58
|
pubsub = Google::Cloud::Pubsub.new(project_id: project_id)
|
|
58
59
|
topic = pubsub.create_topic(topic_id.to_s)
|
|
59
|
-
|
|
60
|
+
SOULs::Painter.success("Topic #{topic.name} created.")
|
|
60
61
|
end
|
|
61
62
|
|
|
62
63
|
def delete_topic(topic_id: "worker-mailer")
|
|
@@ -64,7 +65,7 @@ module SOULs
|
|
|
64
65
|
pubsub = Google::Cloud::Pubsub.new(project_id: project_id)
|
|
65
66
|
topic = pubsub.topic(topic_id.to_s)
|
|
66
67
|
topic.delete
|
|
67
|
-
|
|
68
|
+
SOULs::Painter.error("Topic #{topic_id} deleted.")
|
|
68
69
|
end
|
|
69
70
|
|
|
70
71
|
def delete_subscription(topic_id: "worker-mailer")
|
|
@@ -86,7 +87,7 @@ module SOULs
|
|
|
86
87
|
topic = pubsub.topic(topic_id)
|
|
87
88
|
sub = topic.subscribe(subscription_id, endpoint: endpoint, deadline: 20)
|
|
88
89
|
sub.expires_in = nil
|
|
89
|
-
|
|
90
|
+
SOULs::Painter.success("Push subscription #{subscription_id} created.")
|
|
90
91
|
end
|
|
91
92
|
|
|
92
93
|
def get_workers_file_paths
|
data/lib/souls/version.rb
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
1.19.
|
|
1
|
+
1.19.4
|
|
@@ -1 +1 @@
|
|
|
1
|
-
1.19.
|
|
1
|
+
1.19.4
|