Skip to content

Commit 6d9ec8a

Browse files
authored
Merge pull request #49 from dewe/pr-get-images-from-cronjob
Add CronJob support
2 parents 745e50d + 1153971 commit 6d9ec8a

4 files changed

Lines changed: 53 additions & 1 deletion

File tree

.images.yaml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
target:
2+
host: myregistry.nu
3+
sources:
4+
- repository: some/image
5+
host: otherhost.com
6+
tag: v1.0.0
7+
- repository: other/jobimage
8+
host: yetanotherhost.com
9+
tag: "234"

internal/manifest/kubernetes.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313

1414
promv1 "github.com/coreos/prometheus-operator/pkg/apis/monitoring/v1"
1515
kubeyaml "github.com/ghodss/yaml"
16+
batchv1beta1 "k8s.io/api/batch/v1beta1"
1617
corev1 "k8s.io/api/core/v1"
1718
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1819
)
@@ -149,6 +150,15 @@ func getImagesFromResource(resource string) ([]string, error) {
149150
return podImages, nil
150151
}
151152

153+
if typeMeta.Kind == "CronJob" {
154+
cronJobImages, err := getCronJobImages(byteResource)
155+
if err != nil {
156+
return nil, fmt.Errorf("get cronjob images: %w", err)
157+
}
158+
159+
return cronJobImages, nil
160+
}
161+
152162
type BaseSpec struct {
153163
Template corev1.PodTemplateSpec `json:"template" protobuf:"bytes,3,opt,name=template"`
154164
}
@@ -224,6 +234,19 @@ func getPodImages(resource []byte) ([]string, error) {
224234
return images, nil
225235
}
226236

237+
func getCronJobImages(resource []byte) ([]string, error) {
238+
var cj batchv1beta1.CronJob
239+
if err := kubeyaml.Unmarshal(resource, &cj); err != nil {
240+
return nil, fmt.Errorf("unmarshal cronjob: %w", err)
241+
}
242+
243+
var images []string
244+
images = append(images, getImagesFromContainers(cj.Spec.JobTemplate.Spec.Template.Spec.Containers)...)
245+
images = append(images, getImagesFromContainers(cj.Spec.JobTemplate.Spec.Template.Spec.InitContainers)...)
246+
247+
return images, nil
248+
}
249+
227250
func getImagesFromContainers(containers []corev1.Container) []string {
228251
var images []string
229252

test/create/bundle.yaml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,21 @@ metadata:
55
spec:
66
containers:
77
- image: otherhost.com/some/image:v1.0.0
8-
name: test-create
8+
name: test-create
9+
---
10+
apiVersion: batch/v1beta1
11+
kind: CronJob
12+
metadata:
13+
name: test-cronjob
14+
spec:
15+
schedule: '*/1 * * * *'
16+
jobTemplate:
17+
metadata:
18+
name: test-job
19+
spec:
20+
template:
21+
spec:
22+
containers:
23+
- image: yetanotherhost.com/other/jobimage:234
24+
name: test-job
25+
restartPolicy: OnFailure

test/create/expected-images.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,6 @@ sources:
44
- repository: some/image
55
host: otherhost.com
66
tag: v1.0.0
7+
- repository: other/jobimage
8+
host: yetanotherhost.com
9+
tag: "234"

0 commit comments

Comments
 (0)