Class: Kamal::Configuration::Builder
- Inherits:
-
Object
- Object
- Kamal::Configuration::Builder
show all
- Includes:
- Validation
- Defined in:
- lib/kamal/configuration/builder.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Validation
#validate!, #validation_yml
Constructor Details
#initialize(config:) ⇒ Builder
Returns a new instance of Builder.
8
9
10
11
12
13
14
15
16
|
# File 'lib/kamal/configuration/builder.rb', line 8
def initialize(config:)
@config = config
@builder_config = config.raw_config.builder || {}
@image = config.image
@server = config.registry.server
@service = config.service
validate! builder_config, with: Kamal::Configuration::Validator::Builder
end
|
Instance Attribute Details
#builder_config ⇒ Object
Returns the value of attribute builder_config.
4
5
6
|
# File 'lib/kamal/configuration/builder.rb', line 4
def builder_config
@builder_config
end
|
#config ⇒ Object
Returns the value of attribute config.
4
5
6
|
# File 'lib/kamal/configuration/builder.rb', line 4
def config
@config
end
|
Instance Method Details
#arches ⇒ Object
26
27
28
|
# File 'lib/kamal/configuration/builder.rb', line 26
def arches
Array(builder_config.fetch("arch", default_arch))
end
|
#args ⇒ Object
60
61
62
|
# File 'lib/kamal/configuration/builder.rb', line 60
def args
builder_config["args"] || {}
end
|
#build_directory ⇒ Object
126
127
128
129
130
131
132
133
|
# File 'lib/kamal/configuration/builder.rb', line 126
def build_directory
@build_directory ||=
if git_clone?
File.join clone_directory, repo_basename, repo_relative_pwd
else
"."
end
end
|
#cache_from ⇒ Object
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/kamal/configuration/builder.rb', line 88
def cache_from
if cached?
case builder_config["cache"]["type"]
when "gha"
cache_from_config_for_gha
when "registry"
cache_from_config_for_registry
end
end
end
|
#cache_to ⇒ Object
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/kamal/configuration/builder.rb', line 99
def cache_to
if cached?
case builder_config["cache"]["type"]
when "gha"
cache_to_config_for_gha
when "registry"
cache_to_config_for_registry
end
end
end
|
#cached? ⇒ Boolean
56
57
58
|
# File 'lib/kamal/configuration/builder.rb', line 56
def cached?
!!builder_config["cache"]
end
|
#clone_directory ⇒ Object
122
123
124
|
# File 'lib/kamal/configuration/builder.rb', line 122
def clone_directory
@clone_directory ||= File.join Dir.tmpdir, "kamal-clones", [ service, pwd_sha ].compact.join("-")
end
|
#context ⇒ Object
76
77
78
|
# File 'lib/kamal/configuration/builder.rb', line 76
def context
builder_config["context"] || "."
end
|
#docker_driver? ⇒ Boolean
135
136
137
|
# File 'lib/kamal/configuration/builder.rb', line 135
def docker_driver?
driver == "docker"
end
|
#dockerfile ⇒ Object
68
69
70
|
# File 'lib/kamal/configuration/builder.rb', line 68
def dockerfile
builder_config["dockerfile"] || "Dockerfile"
end
|
#driver ⇒ Object
80
81
82
|
# File 'lib/kamal/configuration/builder.rb', line 80
def driver
builder_config.fetch("driver", "docker-container")
end
|
#git_clone? ⇒ Boolean
118
119
120
|
# File 'lib/kamal/configuration/builder.rb', line 118
def git_clone?
Kamal::Git.used? && builder_config["context"].nil?
end
|
#local? ⇒ Boolean
52
53
54
|
# File 'lib/kamal/configuration/builder.rb', line 52
def local?
!local_disabled? && (arches.empty? || local_arches.any?)
end
|
#local_arches ⇒ Object
30
31
32
33
34
35
36
37
38
|
# File 'lib/kamal/configuration/builder.rb', line 30
def local_arches
@local_arches ||= if local_disabled?
[]
elsif remote
arches & [ Kamal::Utils.docker_arch ]
else
arches
end
end
|
#local_disabled? ⇒ Boolean
84
85
86
|
# File 'lib/kamal/configuration/builder.rb', line 84
def local_disabled?
builder_config["local"] == false
end
|
#provenance ⇒ Object
114
115
116
|
# File 'lib/kamal/configuration/builder.rb', line 114
def provenance
builder_config["provenance"]
end
|
#remote ⇒ Object
22
23
24
|
# File 'lib/kamal/configuration/builder.rb', line 22
def remote
builder_config["remote"]
end
|
#remote? ⇒ Boolean
48
49
50
|
# File 'lib/kamal/configuration/builder.rb', line 48
def remote?
remote_arches.any?
end
|
#remote_arches ⇒ Object
40
41
42
43
44
45
46
|
# File 'lib/kamal/configuration/builder.rb', line 40
def remote_arches
@remote_arches ||= if remote
arches - local_arches
else
[]
end
end
|
#secrets ⇒ Object
64
65
66
|
# File 'lib/kamal/configuration/builder.rb', line 64
def secrets
(builder_config["secrets"] || []).to_h { |key| [ key, config.secrets[key] ] }
end
|
#ssh ⇒ Object
110
111
112
|
# File 'lib/kamal/configuration/builder.rb', line 110
def ssh
builder_config["ssh"]
end
|
#target ⇒ Object
72
73
74
|
# File 'lib/kamal/configuration/builder.rb', line 72
def target
builder_config["target"]
end
|
#to_h ⇒ Object
18
19
20
|
# File 'lib/kamal/configuration/builder.rb', line 18
def to_h
builder_config
end
|