Skip to content

Commit f87942e

Browse files
authored
Merge pull request #5328 from koba1t/fix/failed_tests_are_depends_on_external_container_images
fix failed tests are depends on external container images
2 parents 8effd35 + af7c088 commit f87942e

File tree

25 files changed

+697
-78
lines changed

25 files changed

+697
-78
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,11 +145,11 @@ test-unit-all: \
145145
# This target is used by our Github Actions CI to run unit tests for all non-plugin modules in multiple GOOS environments.
146146
.PHONY: test-unit-non-plugin
147147
test-unit-non-plugin:
148-
./hack/for-each-module.sh "make test" "./plugin/*" 16
148+
./hack/for-each-module.sh "make test" "./plugin/*" 19
149149

150150
.PHONY: build-non-plugin-all
151151
build-non-plugin-all:
152-
./hack/for-each-module.sh "make build" "./plugin/*" 16
152+
./hack/for-each-module.sh "make build" "./plugin/*" 19
153153

154154
.PHONY: test-unit-kustomize-plugins
155155
test-unit-kustomize-plugins:

api/krusty/fnplugin_test.go

Lines changed: 74 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,10 @@ import (
1515
"sigs.k8s.io/kustomize/kyaml/filesys"
1616
)
1717

18+
const (
19+
repoRootDir = "../../"
20+
)
21+
1822
const generateDeploymentDotSh = `#!/bin/sh
1923
2024
cat <<EOF
@@ -513,51 +517,58 @@ func TestFnContainerGenerator(t *testing.T) {
513517
resources:
514518
- deployment.yaml
515519
generators:
516-
- project-service-set.yaml
520+
- service-set.yaml
517521
`)
518522
// Create generator config
519-
th.WriteF(filepath.Join(tmpDir.String(), "project-service-set.yaml"), `
520-
apiVersion: blueprints.cloud.google.com/v1alpha1
521-
kind: ProjectServiceSet
523+
th.WriteF(filepath.Join(tmpDir.String(), "service-set.yaml"), `
524+
apiVersion: kustomize.sigs.k8s.io/v1alpha1
525+
kind: ServiceGenerator
522526
metadata:
523-
name: demo
527+
name: simplegenerator
524528
annotations:
525529
config.kubernetes.io/function: |
526530
container:
527-
image: gcr.io/kpt-fn/enable-gcp-services:v0.1.0
531+
image: gcr.io/kustomize-functions/e2econtainersimplegenerator
528532
spec:
529-
services:
530-
- compute.googleapis.com
531-
projectID: foo
533+
port: 8081
532534
`)
533535
// Create another resource just to make sure everything is added
534536
th.WriteF(filepath.Join(tmpDir.String(), "deployment.yaml"), `
535537
apiVersion: apps/v1
536538
kind: Deployment
537539
metadata:
538-
name: foo
540+
name: simplegenerator
539541
`)
542+
543+
build := exec.Command("docker", "build", ".",
544+
"-f", "./cmd/config/internal/commands/e2e/e2econtainersimplegenerator/Dockerfile",
545+
"-t", "gcr.io/kustomize-functions/e2econtainersimplegenerator",
546+
)
547+
build.Dir = repoRootDir
548+
assert.NoError(t, build.Run())
549+
540550
m := th.Run(tmpDir.String(), o)
541551
actual, err := m.AsYaml()
542552
assert.NoError(t, err)
543553
assert.Equal(t, `apiVersion: apps/v1
544554
kind: Deployment
545555
metadata:
546-
name: foo
556+
name: simplegenerator
547557
---
548-
apiVersion: serviceusage.cnrm.cloud.google.com/v1beta1
558+
apiVersion: v1
549559
kind: Service
550560
metadata:
551-
annotations:
552-
blueprints.cloud.google.com/ownerReference: blueprints.cloud.google.com/ProjectServiceSet/demo
553-
config.kubernetes.io/function: |
554-
container:
555-
image: gcr.io/kpt-fn/enable-gcp-services:v0.1.0
556-
name: demo-compute
561+
labels:
562+
app: simplegenerator
563+
name: simplegenerator-svc
557564
spec:
558-
projectRef:
559-
external: foo
560-
resourceID: compute.googleapis.com
565+
ports:
566+
- name: http
567+
port: 8081
568+
protocol: TCP
569+
targetPort: 8081
570+
selector:
571+
app: simplegenerator
561572
`, string(actual))
562573
}
563574

@@ -593,7 +604,7 @@ metadata:
593604
"-f", "./cmd/config/internal/commands/e2e/e2econtainerconfig/Dockerfile",
594605
"-t", "gcr.io/kustomize-functions/e2econtainerconfig",
595606
)
596-
build.Dir = "../../" // Repo root
607+
build.Dir = repoRootDir
597608
assert.NoError(t, build.Run())
598609
m := th.Run(tmpDir.String(), o)
599610
actual, err := m.AsYaml()
@@ -611,6 +622,12 @@ metadata:
611622

612623
func TestFnContainerTransformerWithConfig(t *testing.T) {
613624
skipIfNoDocker(t)
625+
//https://docs.docker.com/engine/reference/commandline/build/#git-repositories
626+
build := exec.Command("docker", "build", "https://github.com/GoogleContainerTools/kpt-functions-sdk.git#go-sdk-v0.0.1:ts/hello-world",
627+
"-f", "build/label_namespace.Dockerfile",
628+
"-t", "gcr.io/kpt-functions/label-namespace:go-sdk-v0.0.1",
629+
)
630+
assert.NoError(t, build.Run())
614631
th := kusttest_test.MakeHarness(t)
615632
o := th.MakeOptionsPluginsEnabled()
616633
fSys := filesys.MakeFsOnDisk()
@@ -644,7 +661,7 @@ metadata:
644661
annotations:
645662
config.kubernetes.io/function: |-
646663
container:
647-
image: gcr.io/kpt-functions/label-namespace@sha256:4f030738d6d25a207641ca517916431517578bd0eb8d98a8bde04e3bb9315dcd
664+
image: gcr.io/kpt-functions/label-namespace:go-sdk-v0.0.1
648665
data:
649666
label_name: my-ns-name
650667
label_value: function-test
@@ -684,25 +701,31 @@ generators:
684701
- gener.yaml
685702
`)))
686703
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "gener.yaml"), []byte(`
687-
apiVersion: v1
688-
kind: ConfigMap
704+
apiVersion: kustomize.sigs.k8s.io/v1alpha1
705+
kind: EnvTemplateGenerator
689706
metadata:
690-
name: demo
707+
name: e2econtainerenvgenerator
691708
annotations:
692709
config.kubernetes.io/function: |
693710
container:
694-
image: quay.io/aodinokov/kpt-templater:0.0.1
711+
image: gcr.io/kustomize-functions/e2econtainerenvgenerator
695712
envs:
696713
- TESTTEMPLATE=value
697-
data:
698-
template: |
699-
apiVersion: v1
700-
kind: ConfigMap
701-
metadata:
702-
name: env
703-
data:
704-
value: '{{ env "TESTTEMPLATE" }}'
714+
template: |
715+
apiVersion: v1
716+
kind: ConfigMap
717+
metadata:
718+
name: env
719+
data:
720+
value: %q
705721
`)))
722+
build := exec.Command("docker", "build", ".",
723+
"-f", "./cmd/config/internal/commands/e2e/e2econtainerenvgenerator/Dockerfile",
724+
"-t", "gcr.io/kustomize-functions/e2econtainerenvgenerator",
725+
)
726+
build.Dir = repoRootDir
727+
assert.NoError(t, build.Run())
728+
706729
m, err := b.Run(
707730
fSys,
708731
tmpDir.String())
@@ -731,44 +754,36 @@ generators:
731754
- gener.yaml
732755
`)))
733756
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "gener.yaml"), []byte(`
734-
apiVersion: v1alpha1
757+
apiVersion: kustomize.sigs.k8s.io/v1alpha1
735758
kind: RenderHelmChart
736759
metadata:
737760
name: demo
738761
annotations:
739762
config.kubernetes.io/function: |
740763
container:
741-
image: gcr.io/kpt-fn/render-helm-chart:v0.1.0
764+
image: gcr.io/kustomize-functions/e2econtainermountbind
742765
mounts:
743766
- type: "bind"
744-
src: "./charts"
745-
dst: "/tmp/charts"
746-
helmCharts:
747-
- name: helloworld-chart
748-
releaseName: test
749-
valuesFile: /tmp/charts/helloworld-values/values.yaml
767+
src: "./yaml"
768+
dst: "/tmp/yaml"
769+
path: /tmp/yaml/resources.yaml
750770
`)))
751-
assert.NoError(t, fSys.MkdirAll(filepath.Join(tmpDir.String(), "charts", "helloworld-chart", "templates")))
752-
assert.NoError(t, fSys.MkdirAll(filepath.Join(tmpDir.String(), "charts", "helloworld-values")))
753-
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "charts", "helloworld-chart", "Chart.yaml"), []byte(`
754-
apiVersion: v2
755-
name: helloworld-chart
756-
description: A Helm chart for Kubernetes
757-
type: application
758-
version: 0.1.0
759-
appVersion: 1.16.0
760-
`)))
761-
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "charts", "helloworld-chart", "templates", "deployment.yaml"), []byte(`
771+
assert.NoError(t, fSys.MkdirAll(filepath.Join(tmpDir.String(), "yaml", "tmp")))
772+
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "yaml", "resources.yaml"), []byte(`
762773
apiVersion: apps/v1
763774
kind: Deployment
764775
metadata:
765776
name: name
766777
spec:
767-
replicas: {{ .Values.replicaCount }}
768-
`)))
769-
assert.NoError(t, fSys.WriteFile(filepath.Join(tmpDir.String(), "charts", "helloworld-values", "values.yaml"), []byte(`
770-
replicaCount: 5
778+
replicas: 3
771779
`)))
780+
build := exec.Command("docker", "build", ".",
781+
"-f", "./cmd/config/internal/commands/e2e/e2econtainermountbind/Dockerfile",
782+
"-t", "gcr.io/kustomize-functions/e2econtainermountbind",
783+
)
784+
build.Dir = repoRootDir
785+
assert.NoError(t, build.Run())
786+
772787
m, err := b.Run(
773788
fSys,
774789
tmpDir.String())
@@ -780,7 +795,7 @@ kind: Deployment
780795
metadata:
781796
name: name
782797
spec:
783-
replicas: 5
798+
replicas: 3
784799
`, string(actual))
785800
}
786801

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Copyright 2019 The Kubernetes Authors.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
FROM golang:1.20-bullseye
5+
ENV CGO_ENABLED=0
6+
WORKDIR /go/src/
7+
8+
# download modules
9+
# COPY go.mod go.mod
10+
# COPY go.sum go.sum
11+
# RUN go mod download
12+
13+
COPY . .
14+
RUN go build -v -o /usr/local/bin/function ./cmd/config/internal/commands/e2e/e2econtainerenvgenerator
15+
16+
FROM alpine:latest
17+
COPY --from=0 /usr/local/bin/function /usr/local/bin/function
18+
CMD ["function"]
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Copyright 2019 The Kubernetes Authors.
2+
# SPDX-License-Identifier: Apache-2.0
3+
4+
include ../../../../../../Makefile-modules.mk
5+
6+
.PHONY: image
7+
image:
8+
docker build . -t gcr.io/kustomize-functions/e2econtainerenvgenerator
9+
docker push gcr.io/kustomize-functions/e2econtainerenvgenerator
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Copyright 2019 The Kubernetes Authors.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
// Package main contains a function to be used for e2e testing.
5+
// See https://github.com/kubernetes-sigs/kustomize/blob/master/cmd/config/docs/api-conventions/functions-spec.md
6+
package main
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
module sigs.k8s.io/kustomize/cmd/config/internal/commands/e2e/e2econtainerenvgenerator
2+
3+
go 1.20
4+
5+
require sigs.k8s.io/kustomize/kyaml v0.14.2
6+
7+
require (
8+
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
9+
github.com/davecgh/go-spew v1.1.1 // indirect
10+
github.com/go-errors/errors v1.4.2 // indirect
11+
github.com/go-openapi/jsonpointer v0.19.6 // indirect
12+
github.com/go-openapi/jsonreference v0.20.2 // indirect
13+
github.com/go-openapi/swag v0.22.3 // indirect
14+
github.com/golang/protobuf v1.5.3 // indirect
15+
github.com/google/gnostic-models v0.6.8 // indirect
16+
github.com/google/go-cmp v0.5.9 // indirect
17+
github.com/google/gofuzz v1.2.0 // indirect
18+
github.com/inconshreveable/mousetrap v1.1.0 // indirect
19+
github.com/josharian/intern v1.0.0 // indirect
20+
github.com/mailru/easyjson v0.7.7 // indirect
21+
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
22+
github.com/spf13/cobra v1.7.0 // indirect
23+
github.com/spf13/pflag v1.0.5 // indirect
24+
github.com/xlab/treeprint v1.2.0 // indirect
25+
golang.org/x/sys v0.13.0 // indirect
26+
google.golang.org/protobuf v1.30.0 // indirect
27+
gopkg.in/yaml.v2 v2.4.0 // indirect
28+
gopkg.in/yaml.v3 v3.0.1 // indirect
29+
k8s.io/kube-openapi v0.0.0-20230601164746-7562a1006961 // indirect
30+
k8s.io/utils v0.0.0-20230505201702-9f6742963106 // indirect
31+
sigs.k8s.io/yaml v1.3.0 // indirect
32+
)
33+
34+
replace sigs.k8s.io/kustomize/kyaml => ../../../../../../kyaml

0 commit comments

Comments
 (0)