From d538447973085376c3ead197a1a55beb4164fb9f Mon Sep 17 00:00:00 2001 From: Nick Hammond Date: Thu, 17 Oct 2024 07:46:45 -0700 Subject: [PATCH] Add validator for buildpack arch --- lib/kamal/configuration/validator/builder.rb | 2 ++ test/configuration/validation_test.rb | 1 + 2 files changed, 3 insertions(+) diff --git a/lib/kamal/configuration/validator/builder.rb b/lib/kamal/configuration/validator/builder.rb index 8c8fe1f0..0115d437 100644 --- a/lib/kamal/configuration/validator/builder.rb +++ b/lib/kamal/configuration/validator/builder.rb @@ -8,6 +8,8 @@ class Kamal::Configuration::Validator::Builder < Kamal::Configuration::Validator error "Builder arch not set" unless config["arch"].present? + error "buildpacks only support building for one arch" if config["pack"] && config["arch"].is_a?(Array) && config["arch"].size > 1 + error "Cannot disable local builds, no remote is set" if config["local"] == false && config["remote"].blank? end end diff --git a/test/configuration/validation_test.rb b/test/configuration/validation_test.rb index 179aacfe..d16b2de2 100644 --- a/test/configuration/validation_test.rb +++ b/test/configuration/validation_test.rb @@ -94,6 +94,7 @@ class ConfigurationValidationTest < ActiveSupport::TestCase assert_error "builder/arch: should be an array or a string", builder: { "arch" => {} } assert_error "builder/args: should be a hash", builder: { "args" => [ "foo" ] } assert_error "builder/cache/options: should be a string", builder: { "cache" => { "options" => [] } } + assert_error "builder: buildpacks only support building for one arch", builder: { "arch" => [ "amd64", "arm64" ], "pack" => { "builder" => "heroku/builder:24" } } end private