kamal 2.1.0 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7358f4d2dd4e267e0fccab45df538facb5f1cfb598cee5561495139e3b06f62
4
- data.tar.gz: 6bc6d6e32693cba5af10dba86aefe0af00e48fee214eee1b9483a892f0a30d0d
3
+ metadata.gz: 1aaf8b7548e1dfebb3f19739491a5fb53ec715aea28ea3a93060b4b08c7904da
4
+ data.tar.gz: f4c669cfff249ab9595a6109ee6d858601345495e689b9c8e020c3e1fe7a477f
5
5
  SHA512:
6
- metadata.gz: 3629d4180a4f0350fc28f9488dbf516f79a8c6fe0e64854a56e88b4846d0f855e0e9621f3695958db12104342ef1bee90cdfc93d2b5a32583973862c71e8eba4
7
- data.tar.gz: 2dbd756cf617c2afc9b70603a9da9991c83f6d7fb6cf2e0be59c07d29b65ba53d84ea875727c1b888cde0889458099c24451eed3c406017548891815329eb289
6
+ metadata.gz: 7a3ee617d039db0c058fede9fbe66c0ffcc937c437ec9a85c13d2f5d9c645e475a29eab638d05b938305a197dba96493f9d9349fc736c226ef1457615843f648
7
+ data.tar.gz: 7ef1c0c7173d2f8c0b37d0f5efa507c70f8691c9045ccbfce78daec50fc71faf396e2e456a29c86e78f59fe8f1a0ac785a9ff8c27455d86ca04573faf46de08c
@@ -135,7 +135,7 @@ class Kamal::Cli::Main < Kamal::Cli::Base
135
135
  puts "No documentation found for #{section}"
136
136
  end
137
137
 
138
- desc "init", "Create config stub in config/deploy.yml and env stub in .env"
138
+ desc "init", "Create config stub in config/deploy.yml and secrets stub in .kamal"
139
139
  option :bundle, type: :boolean, default: false, desc: "Add Kamal to the Gemfile and create a bin/kamal binstub"
140
140
  def init
141
141
  require "fileutils"
@@ -14,8 +14,9 @@ servers:
14
14
  # cmd: bin/jobs
15
15
 
16
16
  # Enable SSL auto certification via Let's Encrypt (and allow for multiple apps on one server).
17
- # Set ssl: false if using something like Cloudflare to terminate SSL (but keep host!).
18
- proxy:
17
+ # If using something like Cloudflare, it is recommended to set encryption mode
18
+ # in Cloudflare's SSL/TLS setting to "Full" to enable end-to-end encryption.
19
+ proxy:
19
20
  ssl: true
20
21
  host: app.example.com
21
22
  # kamal-proxy connects to your container over port 80, use `app_port` to specify a different port.
@@ -1,13 +1,3 @@
1
- #!/usr/bin/env ruby
1
+ #!/bin/sh
2
2
 
3
- # A sample docker-setup hook
4
- #
5
- # Sets up a Docker network on defined hosts which can then be used by the application’s containers
6
-
7
- hosts = ENV["KAMAL_HOSTS"].split(",")
8
-
9
- hosts.each do |ip|
10
- destination = "root@#{ip}"
11
- puts "Creating a Docker network \"kamal\" on #{destination}"
12
- `ssh #{destination} docker network create kamal`
13
- end
3
+ echo "Docker set up on $KAMAL_HOSTS..."
@@ -43,7 +43,12 @@ class Kamal::Commander::Specifics
43
43
  end
44
44
 
45
45
  def specified_hosts
46
- (specific_hosts || config.all_hosts) \
47
- .select { |host| (specific_roles || config.roles).flat_map(&:hosts).include?(host) }
46
+ specified_hosts = specific_hosts || config.all_hosts
47
+
48
+ if (specific_role_hosts = specific_roles&.flat_map(&:hosts)).present?
49
+ specified_hosts.select { |host| specific_role_hosts.include?(host) }
50
+ else
51
+ specified_hosts
52
+ end
48
53
  end
49
54
  end
@@ -29,7 +29,7 @@ class Kamal::Configuration::Proxy
29
29
  def deploy_options
30
30
  {
31
31
  host: hosts,
32
- tls: proxy_config["ssl"],
32
+ tls: proxy_config["ssl"].presence,
33
33
  "deploy-timeout": seconds_duration(config.deploy_timeout),
34
34
  "drain-timeout": seconds_duration(config.drain_timeout),
35
35
  "health-check-interval": seconds_duration(proxy_config.dig("healthcheck", "interval")),
data/lib/kamal/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Kamal
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kamal
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-02 00:00:00.000000000 Z
11
+ date: 2024-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -285,7 +285,6 @@ files:
285
285
  - lib/kamal/configuration/env/tag.rb
286
286
  - lib/kamal/configuration/logging.rb
287
287
  - lib/kamal/configuration/proxy.rb
288
- - lib/kamal/configuration/proxy.rb.orig
289
288
  - lib/kamal/configuration/registry.rb
290
289
  - lib/kamal/configuration/role.rb
291
290
  - lib/kamal/configuration/servers.rb
@@ -1,67 +0,0 @@
1
- class Kamal::Configuration::Proxy
2
- include Kamal::Configuration::Validation
3
-
4
- DEFAULT_LOG_REQUEST_HEADERS = [ "Cache-Control", "Last-Modified", "User-Agent" ]
5
- CONTAINER_NAME = "kamal-proxy"
6
-
7
- delegate :argumentize, :optionize, to: Kamal::Utils
8
-
9
- attr_reader :config, :proxy_config
10
-
11
- def initialize(config:, proxy_config:, context: "proxy")
12
- @config = config
13
- @proxy_config = proxy_config
14
- validate! @proxy_config, with: Kamal::Configuration::Validator::Proxy, context: context
15
- end
16
-
17
- def app_port
18
- proxy_config.fetch("app_port", 80)
19
- end
20
-
21
- def ssl?
22
- proxy_config.fetch("ssl", false)
23
- end
24
-
25
- def hosts
26
- proxy_config["hosts"] || proxy_config["host"]&.split(",") || []
27
- end
28
-
29
- def deploy_options
30
- {
31
- <<<<<<< HEAD
32
- host: hosts,
33
- tls: proxy_config["ssl"] ? true : nil,
34
- =======
35
- host: proxy_config["host"],
36
- tls: proxy_config["ssl"],
37
- >>>>>>> 530d2cb (Use `=` in kamal-proxy deploy command args)
38
- "deploy-timeout": seconds_duration(config.deploy_timeout),
39
- "drain-timeout": seconds_duration(config.drain_timeout),
40
- "health-check-interval": seconds_duration(proxy_config.dig("healthcheck", "interval")),
41
- "health-check-timeout": seconds_duration(proxy_config.dig("healthcheck", "timeout")),
42
- "health-check-path": proxy_config.dig("healthcheck", "path"),
43
- "target-timeout": seconds_duration(proxy_config["response_timeout"]),
44
- "buffer-requests": proxy_config.fetch("buffering", { "requests": true }).fetch("requests", true),
45
- "buffer-responses": proxy_config.fetch("buffering", { "responses": true }).fetch("responses", true),
46
- "buffer-memory": proxy_config.dig("buffering", "memory"),
47
- "max-request-body": proxy_config.dig("buffering", "max_request_body"),
48
- "max-response-body": proxy_config.dig("buffering", "max_response_body"),
49
- "forward-headers": proxy_config.dig("forward_headers"),
50
- "log-request-header": proxy_config.dig("logging", "request_headers") || DEFAULT_LOG_REQUEST_HEADERS,
51
- "log-response-header": proxy_config.dig("logging", "response_headers")
52
- }.compact
53
- end
54
-
55
- def deploy_command_args(target:)
56
- optionize ({ target: "#{target}:#{app_port}" }).merge(deploy_options), with: "="
57
- end
58
-
59
- def merge(other)
60
- self.class.new config: config, proxy_config: proxy_config.deep_merge(other.proxy_config)
61
- end
62
-
63
- private
64
- def seconds_duration(value)
65
- value ? "#{value}s" : nil
66
- end
67
- end