Skip to content

Commit 46e5dbe

Browse files
fix(publish): add pack to artifact
1 parent 3bf1852 commit 46e5dbe

File tree

4 files changed

+83
-3
lines changed

4 files changed

+83
-3
lines changed

go.work.sum

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1291,6 +1291,10 @@ github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3ev
12911291
github.com/onsi/gomega v1.29.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
12921292
github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0=
12931293
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
1294+
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
1295+
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
1296+
github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
1297+
github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
12941298
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
12951299
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
12961300
github.com/otiai10/curr v1.0.0 h1:TJIWdbX0B+kpNagQrjgq8bCMrbhiuX73M2XwgtDMoOI=

kustomize/commands/publish/publish.go

Lines changed: 75 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,23 @@
44
package publish
55

66
import (
7+
"context"
78
"errors"
9+
"log"
10+
"os"
11+
"path/filepath"
812

913
"github.com/spf13/cobra"
1014
"sigs.k8s.io/kustomize/api/ifc"
15+
"sigs.k8s.io/kustomize/api/konfig"
1116
"sigs.k8s.io/kustomize/api/resource"
1217
"sigs.k8s.io/kustomize/kustomize/v5/commands/internal/kustfile"
1318
"sigs.k8s.io/kustomize/kyaml/filesys"
19+
20+
v1 "github.com/opencontainers/image-spec/specs-go/v1"
21+
oras "oras.land/oras-go/v2"
22+
"oras.land/oras-go/v2/content/file"
23+
"oras.land/oras-go/v2/content/oci"
1424
)
1525

1626
type publishOptions struct {
@@ -62,14 +72,76 @@ func (o *publishOptions) RunPublish(fSys filesys.FileSystem) error {
6272
if err != nil {
6373
return err
6474
}
65-
m, err := mf.Read()
75+
76+
if _, err = mf.Read(); err != nil {
77+
return err
78+
}
79+
80+
var dir string = filepath.Dir(mf.GetPath())
81+
82+
fs, err := file.New(dir)
83+
if err != nil {
84+
return err
85+
}
86+
defer fs.Close()
87+
88+
ctx := context.Background()
89+
fileDescriptors := make([]v1.Descriptor, 0)
90+
91+
if err = fSys.Walk(dir, func(path string, info os.FileInfo, err error) error {
92+
if err != nil {
93+
return err
94+
}
95+
96+
if info.IsDir() {
97+
return nil
98+
}
99+
100+
var mediaType string = "application/vnd.kustomize.unknown.v1beta1"
101+
var b string = filepath.Base(path)
102+
for _, kfilename := range konfig.RecognizedKustomizationFileNames() {
103+
if b == kfilename {
104+
mediaType = "application/vnd.kustomize.config.k8s.io.v1beta1+yaml"
105+
break
106+
}
107+
}
108+
109+
fileDescriptor, err := fs.Add(ctx, path, mediaType, "")
110+
if err != nil {
111+
return err
112+
}
113+
fileDescriptors = append(fileDescriptors, fileDescriptor)
114+
115+
return nil
116+
}); err != nil {
117+
return err
118+
}
119+
120+
artifactType := "application/vnd.kustomize.artifact"
121+
opts := oras.PackManifestOptions{
122+
Layers: fileDescriptors,
123+
}
124+
manifestDescriptor, err := oras.PackManifest(ctx, fs, oras.PackManifestVersion1_1, artifactType, opts)
125+
if err != nil {
126+
return err
127+
}
128+
129+
tag := "latest"
130+
if err = fs.Tag(ctx, manifestDescriptor, tag); err != nil {
131+
return err
132+
}
133+
134+
dst, err := oci.New(o.registry)
66135
if err != nil {
67136
return err
68137
}
69138

70-
for _, r := range m.Resources {
71-
println(r)
139+
desc, err := oras.Copy(ctx, fs, tag, dst, tag, oras.DefaultCopyOptions)
140+
if err != nil {
141+
return err
72142
}
73143

144+
log.Printf("SUCCESS: copied %s desc %q\n", dir, desc)
145+
74146
return nil
75147
}

kustomize/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ require (
1313
sigs.k8s.io/kustomize/cmd/config v0.21.1
1414
sigs.k8s.io/kustomize/kyaml v0.21.1
1515
sigs.k8s.io/yaml v1.5.0
16+
github.com/opencontainers/image-spec v1.1.1
17+
oras.land/oras-go/v2 v2.6.0
1618
)
1719

1820
require (

kustomize/go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
8989
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
9090
k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7 h1:hcha5B1kVACrLujCKLbr8XWMxCxzQx42DY8QKYJrDLg=
9191
k8s.io/kube-openapi v0.0.0-20241212222426-2c72e554b1e7/go.mod h1:GewRfANuJ70iYzvn+i4lezLDAFzvjxZYK1gn1lWcfas=
92+
oras.land/oras-go/v2 v2.6.0 h1:X4ELRsiGkrbeox69+9tzTu492FMUu7zJQW6eJU+I2oc=
93+
oras.land/oras-go/v2 v2.6.0/go.mod h1:magiQDfG6H1O9APp+rOsvCPcW1GD2MM7vgnKY0Y+u1o=
9294
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
9395
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
9496
sigs.k8s.io/yaml v1.5.0 h1:M10b2U7aEUY6hRtU870n2VTPgR5RZiL/I6Lcc2F4NUQ=

0 commit comments

Comments
 (0)