mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-07-19 10:38:33 +00:00
Compare commits
1 Commits
api/v0.3.2
...
release-cm
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f25f7f6f2 |
@@ -4,6 +4,7 @@ go 1.13
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/spf13/cobra v0.0.5
|
github.com/spf13/cobra v0.0.5
|
||||||
|
k8s.io/api v0.17.0
|
||||||
k8s.io/apimachinery v0.17.0
|
k8s.io/apimachinery v0.17.0
|
||||||
k8s.io/cli-runtime v0.17.0
|
k8s.io/cli-runtime v0.17.0
|
||||||
k8s.io/client-go v0.17.0
|
k8s.io/client-go v0.17.0
|
||||||
|
|||||||
@@ -5,10 +5,7 @@
|
|||||||
package kubectlcobra
|
package kubectlcobra
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/api/meta"
|
"k8s.io/apimachinery/pkg/api/meta"
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/cli-runtime/pkg/resource"
|
"k8s.io/cli-runtime/pkg/resource"
|
||||||
)
|
)
|
||||||
@@ -60,86 +57,3 @@ func sortGroupingObject(infos []*resource.Info) bool {
|
|||||||
}
|
}
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// Adds the inventory of all objects (passed as infos) to the
|
|
||||||
// grouping object. Returns an error if a grouping object does not
|
|
||||||
// exist, or we are unable to successfully add the inventory to
|
|
||||||
// the grouping object; nil otherwise. Each object is in
|
|
||||||
// unstructured.Unstructured format.
|
|
||||||
func addInventoryToGroupingObj(infos []*resource.Info) error {
|
|
||||||
|
|
||||||
// Iterate through the objects (infos), creating an Inventory struct
|
|
||||||
// as metadata for the object, or if it's the grouping object, store it.
|
|
||||||
var groupingObj *unstructured.Unstructured
|
|
||||||
inventoryMap := map[string]string{}
|
|
||||||
for _, info := range infos {
|
|
||||||
obj := info.Object
|
|
||||||
if isGroupingObject(obj) {
|
|
||||||
// If we have more than one grouping object--error.
|
|
||||||
if groupingObj != nil {
|
|
||||||
return fmt.Errorf("Error--applying more than one grouping object.")
|
|
||||||
}
|
|
||||||
var ok bool
|
|
||||||
groupingObj, ok = obj.(*unstructured.Unstructured)
|
|
||||||
if !ok {
|
|
||||||
return fmt.Errorf("Grouping object is not an Unstructured: %#v", groupingObj)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if obj == nil {
|
|
||||||
return fmt.Errorf("Creating inventory; object is nil")
|
|
||||||
}
|
|
||||||
gk := obj.GetObjectKind().GroupVersionKind().GroupKind()
|
|
||||||
inventory, err := createInventory(info.Namespace, info.Name, gk)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
inventoryMap[inventory.String()] = ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If we've found the grouping object, store the object metadata inventory
|
|
||||||
// in the grouping config map.
|
|
||||||
if groupingObj == nil {
|
|
||||||
return fmt.Errorf("Grouping object not found")
|
|
||||||
}
|
|
||||||
err := unstructured.SetNestedStringMap(groupingObj.UnstructuredContent(), inventoryMap, "data")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// retrieveInventoryFromGroupingObj returns a slice of pointers to the
|
|
||||||
// inventory metadata. This function finds the grouping object, then
|
|
||||||
// parses the stored resource metadata into Inventory structs. Returns
|
|
||||||
// an error if there is a problem parsing the data into Inventory
|
|
||||||
// structs, or if the grouping object is not in Unstructured format; nil
|
|
||||||
// otherwise. If a grouping object does not exist, or it does not have a
|
|
||||||
// "data" map, then returns an empty slice and no error.
|
|
||||||
func retrieveInventoryFromGroupingObj(infos []*resource.Info) ([]*Inventory, error) {
|
|
||||||
inventory := []*Inventory{}
|
|
||||||
groupingInfo, exists := findGroupingObject(infos)
|
|
||||||
if exists {
|
|
||||||
groupingObj, ok := groupingInfo.Object.(*unstructured.Unstructured)
|
|
||||||
if !ok {
|
|
||||||
err := fmt.Errorf("Grouping object is not an Unstructured: %#v", groupingObj)
|
|
||||||
return inventory, err
|
|
||||||
}
|
|
||||||
invMap, exists, err := unstructured.NestedStringMap(groupingObj.Object, "data")
|
|
||||||
if err != nil {
|
|
||||||
err := fmt.Errorf("Error retrieving inventory from grouping object.")
|
|
||||||
return inventory, err
|
|
||||||
}
|
|
||||||
if exists {
|
|
||||||
for invStr := range invMap {
|
|
||||||
inv, err := parseInventory(invStr)
|
|
||||||
if err != nil {
|
|
||||||
return inventory, err
|
|
||||||
}
|
|
||||||
inventory = append(inventory, inv)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return inventory, nil
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ package kubectlcobra
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
|
corev1 "k8s.io/api/core/v1"
|
||||||
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||||
"k8s.io/apimachinery/pkg/runtime"
|
"k8s.io/apimachinery/pkg/runtime"
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
|
||||||
"k8s.io/cli-runtime/pkg/resource"
|
"k8s.io/cli-runtime/pkg/resource"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -19,16 +19,12 @@ var pod1Name = "pod-1"
|
|||||||
var pod2Name = "pod-2"
|
var pod2Name = "pod-2"
|
||||||
var pod3Name = "pod-3"
|
var pod3Name = "pod-3"
|
||||||
|
|
||||||
var groupingObj = unstructured.Unstructured{
|
var groupingObj = corev1.ConfigMap{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "ConfigMap",
|
Name: groupingObjName,
|
||||||
"metadata": map[string]interface{}{
|
Labels: map[string]string{
|
||||||
"name": groupingObjName,
|
GroupingLabel: "true",
|
||||||
"namespace": testNamespace,
|
|
||||||
"labels": map[string]interface{}{
|
|
||||||
GroupingLabel: "true",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@@ -39,14 +35,10 @@ var groupingInfo = &resource.Info{
|
|||||||
Object: &groupingObj,
|
Object: &groupingObj,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pod1 = unstructured.Unstructured{
|
var pod1 = corev1.Pod{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "Pod",
|
Name: pod1Name,
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": pod1Name,
|
|
||||||
"namespace": testNamespace,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -56,14 +48,10 @@ var pod1Info = &resource.Info{
|
|||||||
Object: &pod1,
|
Object: &pod1,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pod2 = unstructured.Unstructured{
|
var pod2 = corev1.Pod{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "Pod",
|
Name: pod2Name,
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": pod2Name,
|
|
||||||
"namespace": testNamespace,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -73,14 +61,10 @@ var pod2Info = &resource.Info{
|
|||||||
Object: &pod2,
|
Object: &pod2,
|
||||||
}
|
}
|
||||||
|
|
||||||
var pod3 = unstructured.Unstructured{
|
var pod3 = corev1.Pod{
|
||||||
Object: map[string]interface{}{
|
ObjectMeta: metav1.ObjectMeta{
|
||||||
"apiVersion": "v1",
|
Namespace: testNamespace,
|
||||||
"kind": "Pod",
|
Name: pod3Name,
|
||||||
"metadata": map[string]interface{}{
|
|
||||||
"name": pod3Name,
|
|
||||||
"namespace": testNamespace,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,190 +215,3 @@ func TestSortGroupingObject(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAddRetrieveInventoryToFromGroupingObject(t *testing.T) {
|
|
||||||
tests := []struct {
|
|
||||||
infos []*resource.Info
|
|
||||||
expected []*Inventory
|
|
||||||
isError bool
|
|
||||||
}{
|
|
||||||
// No grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
// No grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, pod2Info},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
// Grouping object without other objects is OK.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo},
|
|
||||||
expected: []*Inventory{},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
// More than one grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, groupingInfo},
|
|
||||||
expected: []*Inventory{},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
// More than one grouping object is an error.
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, pod1Info, groupingInfo},
|
|
||||||
expected: []*Inventory{},
|
|
||||||
isError: true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, pod1Info},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, groupingInfo},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, pod2Info, groupingInfo, pod3Info},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod2Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod3Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{pod1Info, pod2Info, pod3Info, groupingInfo},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod2Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod3Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
infos: []*resource.Info{groupingInfo, pod1Info, pod2Info, pod3Info},
|
|
||||||
expected: []*Inventory{
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod1Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod2Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
&Inventory{
|
|
||||||
Namespace: testNamespace,
|
|
||||||
Name: pod3Name,
|
|
||||||
GroupKind: schema.GroupKind{
|
|
||||||
Group: "",
|
|
||||||
Kind: "Pod",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
isError: false,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, test := range tests {
|
|
||||||
err := addInventoryToGroupingObj(test.infos)
|
|
||||||
if test.isError && err == nil {
|
|
||||||
t.Errorf("Should have produced an error, but returned none.")
|
|
||||||
}
|
|
||||||
if !test.isError {
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Received error when expecting none (%s)\n", err)
|
|
||||||
} else {
|
|
||||||
retrieved, err := retrieveInventoryFromGroupingObj(test.infos)
|
|
||||||
if err != nil {
|
|
||||||
t.Errorf("Error retrieving inventory: %s\n", err)
|
|
||||||
}
|
|
||||||
if len(test.expected) != len(retrieved) {
|
|
||||||
t.Errorf("Expected inventory for %d resources, actual %d",
|
|
||||||
len(test.expected), len(retrieved))
|
|
||||||
}
|
|
||||||
for _, expected := range test.expected {
|
|
||||||
found := false
|
|
||||||
for _, actual := range retrieved {
|
|
||||||
if expected.Equals(actual) {
|
|
||||||
found = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
t.Errorf("Expected inventory (%s) not found", expected)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -12,11 +12,6 @@ require (
|
|||||||
k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655
|
k8s.io/apimachinery v0.0.0-20190913080033-27d36303b655
|
||||||
k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90
|
k8s.io/client-go v0.0.0-20190918160344-1fbdaa4c8d90
|
||||||
sigs.k8s.io/controller-runtime v0.4.0
|
sigs.k8s.io/controller-runtime v0.4.0
|
||||||
sigs.k8s.io/kustomize/kstatus v0.0.0
|
sigs.k8s.io/kustomize/kstatus v0.0.1
|
||||||
sigs.k8s.io/kustomize/kyaml v0.0.0
|
sigs.k8s.io/kustomize/kyaml v0.0.6
|
||||||
)
|
|
||||||
|
|
||||||
replace (
|
|
||||||
sigs.k8s.io/kustomize/kstatus v0.0.0 => ../../kstatus
|
|
||||||
sigs.k8s.io/kustomize/kyaml v0.0.0 => ../../kyaml
|
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -427,6 +427,10 @@ modernc.org/strutil v1.0.0/go.mod h1:lstksw84oURvj9y3tn8lGvRxyRC1S2+g5uuIzNfIOBs
|
|||||||
modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
|
modernc.org/xc v1.0.0/go.mod h1:mRNCo0bvLjGhHO9WsyuKVU4q0ceiDDDoEeWDJHrNx8I=
|
||||||
sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg=
|
sigs.k8s.io/controller-runtime v0.4.0 h1:wATM6/m+3w8lj8FXNaO6Fs/rq/vqoOjO1Q116Z9NPsg=
|
||||||
sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns=
|
sigs.k8s.io/controller-runtime v0.4.0/go.mod h1:ApC79lpY3PHW9xj/w9pj+lYkLgwAAUZwfXkME1Lajns=
|
||||||
|
sigs.k8s.io/kustomize/kstatus v0.0.1 h1:pViQ1xlNn67KaMU7pm08yaXhWqs4duGERaZxTtTqcUg=
|
||||||
|
sigs.k8s.io/kustomize/kstatus v0.0.1/go.mod h1:PEws+6UT8x6dKLw+eAHccBqmCnK29AhNGp3AS8mvcXw=
|
||||||
|
sigs.k8s.io/kustomize/kyaml v0.0.6 h1:KhQr7JwpCseFTSWCwqp4CJ4mY6Kx+i34tF4e0eNkcXw=
|
||||||
|
sigs.k8s.io/kustomize/kyaml v0.0.6/go.mod h1:tDOfJjL6slQVBLHJ76XfXAFgAOEdfm04AW2HehYOp8k=
|
||||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
sigs.k8s.io/structured-merge-diff v0.0.0-20190525122527-15d366b2352e/go.mod h1:wWxsB5ozmmv/SG7nM11ayaAW51xMvak/t1r0CSlcokI=
|
||||||
sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA=
|
sigs.k8s.io/structured-merge-diff v0.0.0-20190817042607-6149e4549fca/go.mod h1:IIgPezJWb76P0hotTxzDbWsMYB8APh18qZnxkomBpxA=
|
||||||
sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM=
|
sigs.k8s.io/testing_frameworks v0.1.2 h1:vK0+tvjF0BZ/RYFeZ1E6BYBwHJJXhjuZ3TdsEKH+UQM=
|
||||||
|
|||||||
@@ -138,10 +138,10 @@ func (s *TablePrinter) Print() {
|
|||||||
|
|
||||||
func (s *TablePrinter) PrintUntil(stop <-chan struct{}, interval time.Duration) <-chan struct{} {
|
func (s *TablePrinter) PrintUntil(stop <-chan struct{}, interval time.Duration) <-chan struct{} {
|
||||||
completed := make(chan struct{})
|
completed := make(chan struct{})
|
||||||
setColor(s.out, WHITE)
|
|
||||||
s.printTable(s.statusInfo.CurrentStatus(), false)
|
|
||||||
go func() {
|
go func() {
|
||||||
defer close(completed)
|
defer close(completed)
|
||||||
|
setColor(s.out, WHITE)
|
||||||
|
s.printTable(s.statusInfo.CurrentStatus(), false)
|
||||||
ticker := time.NewTicker(interval)
|
ticker := time.NewTicker(interval)
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ func TestWaitNoResources(t *testing.T) {
|
|||||||
|
|
||||||
aggStatuses := tableOutput.allAggStatuses()
|
aggStatuses := tableOutput.allAggStatuses()
|
||||||
expectedAggStatuses := []status.Status{
|
expectedAggStatuses := []status.Status{
|
||||||
status.UnknownStatus,
|
status.CurrentStatus,
|
||||||
status.CurrentStatus,
|
status.CurrentStatus,
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(aggStatuses, expectedAggStatuses) {
|
if !reflect.DeepEqual(aggStatuses, expectedAggStatuses) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
# VERSIONS contains the release versions of each kustomize go module
|
# VERSIONS contains the release versions of each kustomize go module
|
||||||
# update this file and run releasemodule.sh to cut a new release
|
# update this file and run releaseall.sh to cut a new release
|
||||||
|
|
||||||
# kyaml version
|
# kyaml version
|
||||||
export kyaml_major=0
|
export kyaml_major=0
|
||||||
@@ -16,7 +16,7 @@ export kstatus_patch=1
|
|||||||
# kustomize api version
|
# kustomize api version
|
||||||
export api_major=0
|
export api_major=0
|
||||||
export api_minor=3
|
export api_minor=3
|
||||||
export api_patch=2
|
export api_patch=1
|
||||||
|
|
||||||
# cmd/config version
|
# cmd/config version
|
||||||
export cmd_config_major=0
|
export cmd_config_major=0
|
||||||
|
|||||||
Reference in New Issue
Block a user