Skip to content

Commit 81cf04f

Browse files
authored
Merge pull request #4233 from camilamacedo86/fix-simplify-external-plugin-tests
🌱 Fix simplify external plugin tests
2 parents ce1a2c8 + cfd0dfc commit 81cf04f

File tree

8 files changed

+108
-205
lines changed

8 files changed

+108
-205
lines changed

.github/workflows/external-plugin.yml

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
name: External Plugin
2+
3+
on:
4+
push:
5+
paths:
6+
- 'pkg/'
7+
- 'docs/book/src/simple-external-plugin-tutorial/testdata/sampleexternalplugin'
8+
- '.github/workflows/external-plugin.yml'
9+
pull_request:
10+
paths:
11+
- 'pkg/'
12+
- 'docs/book/src/simple-external-plugin-tutorial/testdata/sampleexternalplugin'
13+
- '.github/workflows/external-plugin.yml'
14+
15+
jobs:
16+
external:
17+
name: Verify external plugin
18+
runs-on: ubuntu-latest
19+
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != github.repository
20+
steps:
21+
- name: Clone the code
22+
uses: actions/checkout@v4
23+
with:
24+
fetch-depth: 1 # Minimal history to avoid .git permissions issues
25+
26+
- name: Setup Go
27+
uses: actions/setup-go@v5
28+
with:
29+
go-version: '1.22.3'
30+
31+
- name: Build Sample External Plugin
32+
working-directory: docs/book/src/simple-external-plugin-tutorial/testdata/sampleexternalplugin/v1
33+
run: |
34+
mkdir -p ./bin
35+
make build
36+
37+
- name: Move Plugin Binary to Plugin Path
38+
run: |
39+
# Define the plugin destination for Linux (XDG_CONFIG_HOME path)
40+
XDG_CONFIG_HOME="${HOME}/.config"
41+
PLUGIN_DEST="$XDG_CONFIG_HOME/kubebuilder/plugins/sampleexternalplugin/v1"
42+
43+
# Ensure destination exists and move the built binary
44+
mkdir -p "$PLUGIN_DEST"
45+
mv docs/book/src/simple-external-plugin-tutorial/testdata/sampleexternalplugin/v1/bin/sampleexternalplugin "$PLUGIN_DEST/sampleexternalplugin"
46+
chmod +x "$PLUGIN_DEST/sampleexternalplugin" # Ensure the binary is executable
47+
48+
- name: Build Kubebuilder Binary and Setup Environment
49+
env:
50+
KUBEBUILDER_ASSETS: $GITHUB_WORKSPACE/bin
51+
run: |
52+
# Build Kubebuilder Binary
53+
export kb_root_dir=$(pwd)
54+
go build -o "${kb_root_dir}/bin/kubebuilder" ./cmd
55+
chmod +x "${kb_root_dir}/bin/kubebuilder" # Ensure kubebuilder binary is executable
56+
echo "${kb_root_dir}/bin" >> $GITHUB_PATH # Add to PATH
57+
58+
- name: Create Directory, Run Kubebuilder Commands, and Validate Results
59+
env:
60+
KUBEBUILDER_ASSETS: $GITHUB_WORKSPACE/bin
61+
run: |
62+
# Create a directory named testplugin for running kubebuilder commands
63+
mkdir testplugin
64+
cd testplugin
65+
66+
# Run Kubebuilder commands inside the testplugin directory
67+
kubebuilder init --plugins sampleexternalplugin/v1 --domain sample.domain.com
68+
kubebuilder create api --plugins sampleexternalplugin/v1 --number=2 --group=example --version=v1alpha1 --kind=ExampleKind
69+
kubebuilder create webhook --plugins sampleexternalplugin/v1 --hooked --group=example --version=v1alpha1 --kind=ExampleKind
70+
71+
# Validate generated file contents
72+
grep "DOMAIN: sample.domain.com" ./initFile.txt || exit 1
73+
grep "NUMBER: 2" ./apiFile.txt || exit 1
74+
grep "HOOKED!" ./webhookFile.txt || exit 1
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
module v1
22

3-
go 1.22
3+
go 1.22.0
4+
5+
toolchain go1.22.5
46

57
require (
68
github.com/spf13/pflag v1.0.5
7-
sigs.k8s.io/kubebuilder/v4 v4.2.0
9+
sigs.k8s.io/kubebuilder/v4 v4.3.0
810
)
911

1012
require (
11-
github.com/gobuffalo/flect v1.0.2 // indirect
13+
github.com/gobuffalo/flect v1.0.3 // indirect
1214
github.com/spf13/afero v1.11.0 // indirect
13-
golang.org/x/mod v0.20.0 // indirect
15+
golang.org/x/mod v0.21.0 // indirect
1416
golang.org/x/sync v0.8.0 // indirect
15-
golang.org/x/text v0.17.0 // indirect
16-
golang.org/x/tools v0.24.0 // indirect
17+
golang.org/x/text v0.19.0 // indirect
18+
golang.org/x/tools v0.26.0 // indirect
1719
)
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
11
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
2-
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
32
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
4+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
45
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
56
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
67
github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
78
github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
8-
github.com/gobuffalo/flect v1.0.2 h1:eqjPGSo2WmjgY2XlpGwo2NXgL3RucAKo4k4qQMNA5sA=
9-
github.com/gobuffalo/flect v1.0.2/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
9+
github.com/gobuffalo/flect v1.0.3 h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4=
10+
github.com/gobuffalo/flect v1.0.3/go.mod h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
1011
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
1112
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
12-
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 h1:FKHo8hFI3A+7w0aUQuYXQ+6EN5stWmeY/AZqtM8xk9k=
13-
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo=
14-
github.com/onsi/ginkgo/v2 v2.20.0 h1:PE84V2mHqoT1sglvHc8ZdQtPcwmvvt29WLEEO3xmdZw=
15-
github.com/onsi/ginkgo/v2 v2.20.0/go.mod h1:lG9ey2Z29hR41WMVthyJBGUBcBhGOtoPF2VFMvBXFCI=
16-
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
17-
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
18-
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
13+
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 h1:5iH8iuqE5apketRbSFBy+X1V0o+l+8NF1avt4HWl7cA=
14+
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144=
15+
github.com/onsi/ginkgo/v2 v2.20.2 h1:7NVCeyIWROIAheY21RLS+3j2bb52W0W82tkberYytp4=
16+
github.com/onsi/ginkgo/v2 v2.20.2/go.mod h1:K9gyxPIlb+aIvnZ8bd9Ak+YP18w3APlR+5coaZoE2ag=
17+
github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8=
18+
github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc=
1919
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
20+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
21+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
2022
github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8=
2123
github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY=
2224
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -26,27 +28,26 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS
2628
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
2729
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
2830
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
29-
github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk=
3031
github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4=
31-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
32-
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
33-
golang.org/x/mod v0.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
34-
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
35-
golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE=
36-
golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg=
32+
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
33+
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
34+
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
35+
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
36+
golang.org/x/net v0.30.0 h1:AcW1SDZMkb8IpzCdQUaIq2sP4sZ4zw+55h6ynffypl4=
37+
golang.org/x/net v0.30.0/go.mod h1:2wGyMJ5iFasEhkwi13ChkO/t1ECNC4X4eBKkVFyYFlU=
3738
golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ=
3839
golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
39-
golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM=
40-
golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
41-
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
42-
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
43-
golang.org/x/tools v0.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
44-
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
40+
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
41+
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
42+
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
43+
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
44+
golang.org/x/tools v0.26.0 h1:v/60pFQmzmT9ExmjDv2gGIfi3OqfKoEP6I5+umXlbnQ=
45+
golang.org/x/tools v0.26.0/go.mod h1:TPVVj70c7JJ3WCazhD8OdXcZg/og+b9+tH/KxylGwH0=
4546
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
4647
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
4748
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
4849
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
49-
sigs.k8s.io/kubebuilder/v4 v4.2.0 h1:vl5WgaYKR6e6YDK02Mizf7d1RxFNk1pOSnh6uRnHm6s=
50-
sigs.k8s.io/kubebuilder/v4 v4.2.0/go.mod h1:Jq0Qrlrtn3YKdCFSW6CBbmGuwsw6xO6a7beFiVQf/bI=
50+
sigs.k8s.io/kubebuilder/v4 v4.3.0 h1:h01b7sEmgwisvWylU/7PH/LD+eJMX/p+H2s5Vvt4kkI=
51+
sigs.k8s.io/kubebuilder/v4 v4.3.0/go.mod h1:aJkZuiz9pgxCbXBLapYrdPAH+jPQ82YieMFBN/2paf8=
5152
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
5253
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=

test/e2e/ci.sh

-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
source "$(dirname "$0")/../common.sh"
1818
source "$(dirname "$0")/setup.sh"
1919

20-
build_sample_external_plugin
21-
2220
export KIND_CLUSTER="kind"
2321
create_cluster ${KIND_K8S_VERSION}
2422
trap delete_cluster EXIT

test/e2e/externalplugin/e2e_suite_test.go

-32
This file was deleted.

test/e2e/externalplugin/generate_test.go

-106
This file was deleted.

test/e2e/local.sh

-2
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
source "$(dirname "$0")/../common.sh"
1818
source "$(dirname "$0")/setup.sh"
1919

20-
build_sample_external_plugin
21-
2220
export KIND_CLUSTER="local-kubebuilder-e2e"
2321
create_cluster ${KIND_K8S_VERSION}
2422
if [ -z "${SKIP_KIND_CLEANUP:-}" ]; then

test/e2e/setup.sh

-32
Original file line numberDiff line numberDiff line change
@@ -69,37 +69,5 @@ function test_cluster {
6969
go test $(dirname "$0")/grafana $flags -timeout 30m
7070
go test $(dirname "$0")/deployimage $flags -timeout 30m
7171
go test $(dirname "$0")/v4 $flags -timeout 30m
72-
go test $(dirname "$0")/externalplugin $flags -timeout 30m
7372
go test $(dirname "$0")/alphagenerate $flags -timeout 30m
7473
}
75-
76-
function build_sample_external_plugin {
77-
if [ "$(uname -s)" == "Darwin" ]; then
78-
EXTERNAL_PLUGIN_DESTINATION_PREFIX="${HOME}/Library/Application Support/kubebuilder/plugins"
79-
else
80-
XDG_CONFIG_HOME="${HOME}/.config"
81-
EXTERNAL_PLUGIN_DESTINATION_PREFIX="$XDG_CONFIG_HOME/kubebuilder/plugins"
82-
fi
83-
84-
PLUGIN_NAME="sampleexternalplugin"
85-
PLUGIN_VERSION="v1"
86-
EXTERNAL_PLUGIN_DESTINATION="${EXTERNAL_PLUGIN_DESTINATION_PREFIX}/${PLUGIN_NAME}/${PLUGIN_VERSION}"
87-
EXTERNAL_PLUGIN_PATH="${EXTERNAL_PLUGIN_DESTINATION}/${PLUGIN_NAME}"
88-
89-
if [ -d "$EXTERNAL_PLUGIN_DESTINATION" ]; then
90-
echo "$EXTERNAL_PLUGIN_DESTINATION does exist."
91-
if [ -e "$EXTERNAL_PLUGIN_PATH" ]; then
92-
echo "clean up old binary..."
93-
rm "$EXTERNAL_PLUGIN_PATH"
94-
fi
95-
else
96-
mkdir -p "$EXTERNAL_PLUGIN_DESTINATION"
97-
fi
98-
99-
REPO_ROOT_DIR="$(git rev-parse --show-toplevel)"
100-
SOURCE_DIR="${REPO_ROOT_DIR}/docs/book/src/simple-external-plugin-tutorial/testdata/sampleexternalplugin/v1"
101-
102-
cd $SOURCE_DIR && go build -o $PLUGIN_NAME && mv $PLUGIN_NAME "$EXTERNAL_PLUGIN_PATH"
103-
104-
cd $REPO_ROOT_DIR
105-
}

0 commit comments

Comments
 (0)