afterlife 1.4.0 → 1.5.0
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/afterlife/cli.rb +1 -0
- data/lib/afterlife/deploy/kubernetes_deployment.rb +49 -25
- data/lib/afterlife/exec.rb +12 -5
- data/lib/afterlife/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e03a1499e1af905014e5fb48d8865601a0bb354a856d56dc0a629a3b3c08a99b
|
4
|
+
data.tar.gz: 345db972b71109a69d3117e3ef5e3a8fc8cc4aec094c230f9b49ea46e2c206e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2a4b14afb3f286756663da5d5c6c039cd0c327cf8a9ad60a3c20b04d994fdba73b2270892b209cbf9ece8f424e17e2e6eab9798f93416c254aa4549b486a41fc
|
7
|
+
data.tar.gz: 89e9ec3e6d10345f8baeea198d0dde968d96b438cc5312a7d2f545176b4755bd6953b0ad0ad60663015c33b8ac477f5bacb3aa1948bc320a1495cfd1602396ef
|
data/lib/afterlife/cli.rb
CHANGED
@@ -32,6 +32,7 @@ module Afterlife
|
|
32
32
|
option 'no-build', type: :boolean
|
33
33
|
option 'no-install', type: :boolean
|
34
34
|
option 'no-auth', type: :boolean
|
35
|
+
option 'no-apply', type: :boolean
|
35
36
|
option 'dry-run', type: :boolean
|
36
37
|
option 'skip-after-hooks', type: :boolean
|
37
38
|
option :yes, type: :boolean
|
@@ -27,7 +27,6 @@ module Afterlife
|
|
27
27
|
authenticate_command,
|
28
28
|
build_command,
|
29
29
|
set_image_command,
|
30
|
-
local_stage? ? delete_kubernetes_resource : nil,
|
31
30
|
apply_kubernetes_settings,
|
32
31
|
].flatten.compact
|
33
32
|
end
|
@@ -35,40 +34,47 @@ module Afterlife
|
|
35
34
|
# commands
|
36
35
|
|
37
36
|
def authenticate_command
|
38
|
-
return if options['no-auth']
|
37
|
+
return if options['no-auth'] || local_stage?
|
39
38
|
|
40
|
-
|
41
|
-
echo "#{aws_ecr_token}" | docker login --username AWS --password-stdin #{registry} &&
|
42
|
-
kubectl delete secret regcred &&
|
43
|
-
kubectl create secret docker-registry regcred
|
44
|
-
--docker-server=#{registry}
|
45
|
-
--docker-username=AWS
|
46
|
-
--docker-password=#{aws_ecr_token}
|
47
|
-
--docker-email=devs@mifiel.com
|
48
|
-
BASH
|
39
|
+
AwsAuth.new(registry).commands
|
49
40
|
end
|
50
41
|
|
51
42
|
def build_command
|
52
43
|
return if options['no-build']
|
53
44
|
|
54
45
|
<<-BASH
|
55
|
-
docker buildx bake -f docker-bake.hcl #{local_stage? ? '--load' : '--push'}
|
46
|
+
docker buildx bake -f docker-bake.hcl #{targets.join(' ')} #{local_stage? ? '--load' : '--push'}
|
56
47
|
BASH
|
57
48
|
end
|
58
49
|
|
59
50
|
def set_image_command
|
60
51
|
<<-BASH
|
61
|
-
|
52
|
+
cd #{kubelocation} &&
|
53
|
+
#{
|
54
|
+
targets.map do |target|
|
55
|
+
"kustomize edit set image #{full_image_name(target)}:latest=#{registry_image_name(target)}"
|
56
|
+
end.join(' && ')
|
57
|
+
}
|
62
58
|
BASH
|
63
59
|
end
|
64
60
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
61
|
+
def targets
|
62
|
+
repo.conf.dig(:deploy, :targets) || %w[app]
|
63
|
+
end
|
64
|
+
|
65
|
+
def registry_image_name(target)
|
66
|
+
"#{registry}/#{full_image_name(target)}:#{repo.current_revision}"
|
67
|
+
end
|
68
|
+
|
69
|
+
def full_image_name(target)
|
70
|
+
return image_name if target == 'app'
|
71
|
+
|
72
|
+
"#{image_name}-#{target}"
|
69
73
|
end
|
70
74
|
|
71
75
|
def apply_kubernetes_settings
|
76
|
+
return if options['no-apply']
|
77
|
+
|
72
78
|
<<-BASH
|
73
79
|
kubectl apply -k #{kubelocation}
|
74
80
|
BASH
|
@@ -88,12 +94,10 @@ module Afterlife
|
|
88
94
|
".afterlife/#{Afterlife.current_stage.name}"
|
89
95
|
end
|
90
96
|
|
91
|
-
def full_image_name
|
92
|
-
"#{registry}/#{image_name}:#{repo.current_revision}"
|
93
|
-
end
|
94
|
-
|
95
97
|
def image_name
|
96
|
-
@image_name ||= repo.conf.dig(:deploy, :image_name)
|
98
|
+
@image_name ||= repo.conf.dig(:deploy, :image_name).tap do |result|
|
99
|
+
fail Error, 'deploy.image_name for kubernetes deployments' unless result
|
100
|
+
end
|
97
101
|
end
|
98
102
|
|
99
103
|
# Priority:
|
@@ -106,10 +110,30 @@ module Afterlife
|
|
106
110
|
@registry ||= Afterlife.current_repo.variable('deploy.registry') || Afterlife.current_stage.registry
|
107
111
|
end
|
108
112
|
|
109
|
-
|
113
|
+
class AwsAuth
|
114
|
+
attr_reader :registry
|
115
|
+
|
116
|
+
def initialize(registry)
|
117
|
+
@registry = registry
|
118
|
+
end
|
119
|
+
|
120
|
+
def commands
|
121
|
+
[docker_login]
|
122
|
+
end
|
123
|
+
|
124
|
+
def docker_login
|
125
|
+
<<-BASH
|
126
|
+
echo "#{aws_ecr_token}" | docker login --username AWS --password-stdin #{registry}
|
127
|
+
BASH
|
128
|
+
end
|
129
|
+
|
130
|
+
def aws_ecr_token
|
131
|
+
@aws_ecr_token ||= Exec.result("aws ecr get-login-password --region #{region}")
|
132
|
+
end
|
110
133
|
|
111
|
-
|
112
|
-
|
134
|
+
def region
|
135
|
+
@region ||= registry.gsub(/[^.]+\.dkr\.ecr\.([^.]+)\.amazonaws\.com/, '\1')
|
136
|
+
end
|
113
137
|
end
|
114
138
|
end
|
115
139
|
end
|
data/lib/afterlife/exec.rb
CHANGED
@@ -5,7 +5,11 @@ require 'active_support/core_ext/string'
|
|
5
5
|
|
6
6
|
module Afterlife
|
7
7
|
class Exec
|
8
|
-
|
8
|
+
def self.result(arg)
|
9
|
+
fail Error, 'Exec.result only accepts strings' unless arg.is_a?(String)
|
10
|
+
|
11
|
+
new(arg).run(result: true).first
|
12
|
+
end
|
9
13
|
|
10
14
|
def self.run(arg)
|
11
15
|
new(arg).run
|
@@ -23,11 +27,14 @@ module Afterlife
|
|
23
27
|
@commands = Array(arg)
|
24
28
|
end
|
25
29
|
|
26
|
-
def run
|
27
|
-
parsed_commands.
|
30
|
+
def run(result: false)
|
31
|
+
parsed_commands.map do |command|
|
28
32
|
Afterlife.cli.log_info(command) if Afterlife.cli.options['verbose']
|
29
|
-
|
30
|
-
|
33
|
+
next if Afterlife.cli.options['dry-run']
|
34
|
+
next `#{command}`.squish if result
|
35
|
+
|
36
|
+
system(env_hash, command.squish, exception: true)
|
37
|
+
end.compact
|
31
38
|
rescue RuntimeError => e
|
32
39
|
raise Error, e
|
33
40
|
end
|
data/lib/afterlife/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: afterlife
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Genaro Madrid
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|