mirror of
https://github.com/GoogleContainerTools/kaniko
synced 2026-09-30 19:31:57 +02:00
* Add flag to remap registries for any registry mirror The purpose of this PR is to add an option to remap registries, a kind of generalized `--registry-mirror`. This is helpful for air-gapped environments and/or when local registry mirrors are available (not limited to docker.io). This allows user to reference any images without having to change their location. It also permit to separate infra related configuration (the mirrors) from CI/CD pipeline definition by using an environment variable for example (the reason behind the early return if flag provided but empty). Therefore you can have a pipeline calling kaniko with `--registry-map=$REGISTRY_MAP` and have the `REGISTRY_MAP` populated via the runner's env by another team, and the absence of env wouldn't trigger a failure, it makes the pipeline env independent. I've also considered the option of environment variables directly but it doesn't seems to be in kaniko's philosophy. This makes quite some duplicated code :/ One option to keep the mirror flag and behavior would be to use only one codebase and convert `--registry-mirror=VALUE` to `--registry-map=index.docker.io=VALUE` internally. Suggestions welcome! * Configure logging config sooner to be able to use it in flag parsing * Replace registry mirrors by maps logic and use env var * Add env vars to README.md * Fix test
81 lines
2.3 KiB
Go
81 lines
2.3 KiB
Go
/*
|
|
Copyright 2020 Google LLC
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
package config
|
|
|
|
import "testing"
|
|
|
|
func TestMultiArg_Set_shouldAppendValue(t *testing.T) {
|
|
var arg multiArg
|
|
arg.Set("value1")
|
|
if len(arg) != 1 || arg[0] != "value1" {
|
|
t.Error("Fist value was not appended")
|
|
}
|
|
arg.Set("value2")
|
|
if len(arg) != 2 || arg[1] != "value2" {
|
|
t.Error("Second value was not appended")
|
|
}
|
|
}
|
|
|
|
func Test_KeyValueArg_Set_shouldSplitArgument(t *testing.T) {
|
|
arg := make(keyValueArg)
|
|
arg.Set("key=value")
|
|
if arg["key"] != "value" {
|
|
t.Error("Invalid split. key=value should be split to key=>value")
|
|
}
|
|
}
|
|
|
|
func Test_KeyValueArg_Set_shouldAcceptEqualAsValue(t *testing.T) {
|
|
arg := make(keyValueArg)
|
|
arg.Set("key=value=something")
|
|
if arg["key"] != "value=something" {
|
|
t.Error("Invalid split. key=value=something should be split to key=>value=something")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_shouldSplitArgumentLikeKVA(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
arg.Set("key=value")
|
|
if arg["key"][0] != "value" {
|
|
t.Error("Invalid split. key=value should be split to key=>value")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_ShouldAppendIfRepeated(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
arg.Set("key=v1")
|
|
arg.Set("key=v2")
|
|
if arg["key"][0] != "v1" || arg["key"][1] != "v2" {
|
|
t.Error("Invalid repeat behavior. Repeated keys should append values")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_Composed(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
arg.Set("key1=value1;key2=value2")
|
|
if arg["key1"][0] != "value1" || arg["key2"][0] != "value2" {
|
|
t.Error("Invalid composed value parsing. key=value;key2=value2 should generate 2 keys")
|
|
}
|
|
}
|
|
|
|
func Test_multiKeyMultiValueArg_Set_WithEmptyValueShouldWork(t *testing.T) {
|
|
arg := make(multiKeyMultiValueArg)
|
|
err := arg.Set("")
|
|
if len(arg) != 0 || err != nil {
|
|
t.Error("multiKeyMultiValueArg must handle empty value")
|
|
}
|
|
}
|