mirror of
https://github.com/thegeeklab/drone-yaml.git
synced 2024-11-22 01:50:40 +00:00
added image pull secrets
This commit is contained in:
parent
259bc272c3
commit
9e589be71a
@ -1,50 +0,0 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
|
||||||
//
|
|
||||||
// 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 yaml
|
|
||||||
|
|
||||||
type (
|
|
||||||
// FromSecret defines a secret sources from an external value.
|
|
||||||
// This could be a named secret stored in the Drone database,
|
|
||||||
// or a secret stored at an external path in a key value
|
|
||||||
// system such as Vault.
|
|
||||||
FromSecret struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Path string `json:"path"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// fromSecret is a tempoary type used to unmarshal
|
|
||||||
// from_secret which may be short form vs long form.
|
|
||||||
fromSecret struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
Path string `json:"path"`
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
// UnmarshalYAML implements yaml unmarshalling.
|
|
||||||
func (v *FromSecret) UnmarshalYAML(unmarshal func(interface{}) error) error {
|
|
||||||
err := unmarshal(&v.Name)
|
|
||||||
if err == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
s := struct {
|
|
||||||
Name string
|
|
||||||
Path string
|
|
||||||
}{}
|
|
||||||
err = unmarshal(&s)
|
|
||||||
v.Name = s.Name
|
|
||||||
v.Path = s.Path
|
|
||||||
return err
|
|
||||||
}
|
|
@ -1,50 +0,0 @@
|
|||||||
// Copyright 2019 Drone.IO Inc. All rights reserved.
|
|
||||||
// Use of this source code is governed by the Drone Non-Commercial License
|
|
||||||
// that can be found in the LICENSE file.
|
|
||||||
|
|
||||||
package yaml
|
|
||||||
|
|
||||||
import (
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"gopkg.in/yaml.v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestFromSecret(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
yaml string
|
|
||||||
name string
|
|
||||||
path string
|
|
||||||
}{
|
|
||||||
{
|
|
||||||
yaml: "bar",
|
|
||||||
name: "bar",
|
|
||||||
path: "",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
yaml: "{ name: bar }",
|
|
||||||
name: "bar",
|
|
||||||
path: "",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
yaml: "{ name: bar, path: foo }",
|
|
||||||
name: "bar",
|
|
||||||
path: "foo",
|
|
||||||
},
|
|
||||||
}
|
|
||||||
for _, test := range tests {
|
|
||||||
in := []byte(test.yaml)
|
|
||||||
out := new(FromSecret)
|
|
||||||
err := yaml.Unmarshal(in, out)
|
|
||||||
if err != nil {
|
|
||||||
t.Error(err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if got, want := out.Name, test.name; got != want {
|
|
||||||
t.Errorf("Want from_secret name %q, got %q", want, got)
|
|
||||||
}
|
|
||||||
if got, want := out.Path, test.path; got != want {
|
|
||||||
t.Errorf("Want from_secret path %q, got %q", want, got)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,11 +1,11 @@
|
|||||||
// Copyright 2019 Drone IO, Inc.
|
// Copyright 2019 Drone IO, Inc.
|
||||||
//
|
//
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
// you may not use this file except in compliance with the License.
|
// you may not use this file except in compliance with the License.
|
||||||
// You may obtain a copy of the License at
|
// You may obtain a copy of the License at
|
||||||
//
|
//
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
//
|
//
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
@ -27,6 +27,7 @@ type Pipeline struct {
|
|||||||
DependsOn []string `json:"depends_on,omitempty" yaml:"depends_on" `
|
DependsOn []string `json:"depends_on,omitempty" yaml:"depends_on" `
|
||||||
Node map[string]string `json:"node,omitempty" yaml:"node"`
|
Node map[string]string `json:"node,omitempty" yaml:"node"`
|
||||||
Platform Platform `json:"platform,omitempty"`
|
Platform Platform `json:"platform,omitempty"`
|
||||||
|
PullSecrets []string `json:"image_pull_secrets,omitempty" yaml:"image_pull_secrets"`
|
||||||
Services []*Container `json:"services,omitempty"`
|
Services []*Container `json:"services,omitempty"`
|
||||||
Steps []*Container `json:"steps,omitempty"`
|
Steps []*Container `json:"steps,omitempty"`
|
||||||
Trigger Conditions `json:"trigger,omitempty"`
|
Trigger Conditions `json:"trigger,omitempty"`
|
||||||
|
@ -67,6 +67,11 @@ func printPipeline(w writer, v *yaml.Pipeline) {
|
|||||||
w.WriteByte('\n')
|
w.WriteByte('\n')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if len(v.PullSecrets) > 0 {
|
||||||
|
w.WriteTagValue("image_pull_secrets", v.PullSecrets)
|
||||||
|
w.WriteByte('\n')
|
||||||
|
}
|
||||||
|
|
||||||
if len(v.Node) > 0 {
|
if len(v.Node) > 0 {
|
||||||
printNode(w, v.Node)
|
printNode(w, v.Node)
|
||||||
w.WriteByte('\n')
|
w.WriteByte('\n')
|
||||||
|
@ -151,3 +151,12 @@ func TestPipeline_Workspace(t *testing.T) {
|
|||||||
t.Errorf("Unepxected formatting")
|
t.Errorf("Unepxected formatting")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestPipeline_ImagePullSecrets(t *testing.T) {
|
||||||
|
ok, err := diff("testdata/pipeline_image_pull_secrets.yml")
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
} else if !ok {
|
||||||
|
t.Errorf("Unepxected formatting")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
11
yaml/pretty/testdata/pipeline_image_pull_secrets.yml
vendored
Normal file
11
yaml/pretty/testdata/pipeline_image_pull_secrets.yml
vendored
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
kind: pipeline
|
||||||
|
name: default
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: build
|
||||||
|
image: golang
|
||||||
|
commands:
|
||||||
|
- go build
|
||||||
|
|
||||||
|
image_pull_secrets:
|
||||||
|
- dockerhub
|
18
yaml/pretty/testdata/pipeline_image_pull_secrets.yml.golden
vendored
Normal file
18
yaml/pretty/testdata/pipeline_image_pull_secrets.yml.golden
vendored
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
name: default
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: build
|
||||||
|
image: golang
|
||||||
|
commands:
|
||||||
|
- go build
|
||||||
|
|
||||||
|
image_pull_secrets:
|
||||||
|
- dockerhub
|
||||||
|
|
||||||
|
...
|
Loading…
Reference in New Issue
Block a user