Skip to content

Commit 436988b

Browse files
authored
Merge pull request #122 from droot/fix-dep-config
fixed gopkg.toml for Kubebuilder and generated project
2 parents 6308e83 + c1a4f6c commit 436988b

File tree

6 files changed

+77
-17
lines changed

6 files changed

+77
-17
lines changed

.travis.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,11 @@ go:
66
git:
77
depth: 3
88

9-
109
go_import_path: github.com/kubernetes-sigs/kubebuilder
1110

11+
before_install:
12+
- go get -u github.com/golang/dep/cmd/dep
13+
1214
# Install must be set to prevent default `go get` to run.
1315
# The dependencies have already been vendored by `dep` so
1416
# we don't need to fetch them.

Gopkg.lock

Lines changed: 1 addition & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Gopkg.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,6 @@ required = ["sigs.k8s.io/testing_frameworks/integration",
1717
"k8s.io/client-go/plugin/pkg/client/auth",
1818
"github.com/spf13/pflag"]
1919

20-
[[constraint]]
21-
version = "KUBEBUILDER_VERSION"
22-
name = "github.com/kubernetes-sigs/kubebuilder"
23-
2420
[[constraint]]
2521
name = "sigs.k8s.io/testing_frameworks"
2622
revision = "f53464b8b84b4507805a0b033a8377b225163fea"

build/build_vendor.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,4 @@ cp /workspace/LICENSE /workspace/vendor/github.com/kubernetes-sigs/kubebuilder/L
2323

2424
export DEST=/workspace/_output/kubebuilder/bin/
2525
mkdir -p $DEST || echo ""
26-
sed -i "s/KUBEBUILDER_VERSION/"${VERSION-master}"/" Gopkg.toml
2726
tar -czvf $DEST/vendor.tar.gz vendor/ Gopkg.lock Gopkg.toml

cmd/kubebuilder/initproject/vendor.go

Lines changed: 49 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,15 @@ package initproject
1919
import (
2020
"archive/tar"
2121
"compress/gzip"
22-
"fmt"
22+
"fmt"
2323
"io/ioutil"
2424
"log"
2525
"os"
2626
"path/filepath"
2727

2828
"github.com/spf13/cobra"
29+
30+
"github.com/kubernetes-sigs/kubebuilder/cmd/kubebuilder/version"
2931
)
3032

3133
var vendorInstallCmd = &cobra.Command{
@@ -95,7 +97,7 @@ func RunVendorInstall(cmd *cobra.Command, args []string) {
9597
deleteOld()
9698
}
9799

98-
// Get the executable directory
100+
// Get the executable directory
99101
e, err := os.Executable()
100102
if err != nil {
101103
log.Fatal("unable to get directory of kubebuilder tools")
@@ -121,10 +123,10 @@ func RunVendorInstall(cmd *cobra.Command, args []string) {
121123
tr := tar.NewReader(gr)
122124

123125
for file, err := tr.Next(); err == nil; file, err = tr.Next() {
124-
if file.FileInfo().IsDir() {
125-
continue
126-
}
127-
p := filepath.Join(".", file.Name)
126+
if file.FileInfo().IsDir() {
127+
continue
128+
}
129+
p := filepath.Join(".", file.Name)
128130
if Update && filepath.Dir(p) == "." {
129131
continue
130132
}
@@ -142,4 +144,45 @@ func RunVendorInstall(cmd *cobra.Command, args []string) {
142144
log.Fatalf("Could not write file %s: %v", p, err)
143145
}
144146
}
147+
148+
err = updateDepConfig()
149+
if err != nil {
150+
log.Fatalf("Could not update Gopkg.toml file: %v", err)
151+
}
152+
}
153+
154+
// updateDepConfig updates the Dep config Gopkg.toml to include Kubebuilder
155+
// project dependency. It uses the Kubebuilder version to determine whether
156+
// to include branch or version in the contraint stanza.
157+
func updateDepConfig() error {
158+
var depConstraint string
159+
160+
kbVersion := version.GetVersion().KubeBuilderVersion
161+
if kbVersion == "unknown" {
162+
// KB is built from master branch
163+
depConstraint = `
164+
[[constraint]]
165+
branch = "master"
166+
name = "github.com/kubernetes-sigs/kubebuilder"
167+
`
168+
} else {
169+
depConstraint = fmt.Sprintf(`
170+
[[constraint]]
171+
version = "%s"
172+
name = "github.com/kubernetes-sigs/kubebuilder"
173+
`, kbVersion)
174+
}
175+
176+
f, err := os.OpenFile("Gopkg.toml", os.O_APPEND|os.O_WRONLY, 0644)
177+
if err != nil {
178+
return err
179+
}
180+
181+
defer f.Close()
182+
183+
if _, err = f.WriteString(depConstraint); err != nil {
184+
return err
185+
}
186+
187+
return nil
145188
}

test.sh

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,13 @@ if [ -n "$TRACE" ]; then
2525
set -x
2626
fi
2727

28+
# By setting INJECT_KB_VERSION variable in your environment, KB will be compiled
29+
# with this version. This is to assist testing functionality which depends on
30+
# version .e.g gopkg.toml generation.
31+
#
32+
# $ INJECT_KB_VERSION=0.1.7 test.sh
33+
INJECT_KB_VERSION=${INJECT_KB_VERSION:-unknown}
34+
2835
# Make sure, we run in the root of the repo and
2936
# therefore run the tests on all packages
3037
base_dir="$( cd "$(dirname "$0")/" && pwd )"
@@ -109,7 +116,13 @@ function fetch_tools {
109116

110117
function build_kb {
111118
header_text "building kubebuilder"
112-
go build -o $tmp_root/kubebuilder/bin/kubebuilder ./cmd/kubebuilder
119+
120+
if [ "$INJECT_KB_VERSION" = "unknown" ]; then
121+
go build -o $tmp_root/kubebuilder/bin/kubebuilder ./cmd/kubebuilder
122+
else
123+
go build -ldflags "-X github.com/kubernetes-sigs/kubebuilder/cmd/kubebuilder/version.kubeBuilderVersion=$INJECT_KB_VERSION" -o $tmp_root/kubebuilder/bin/kubebuilder ./cmd/kubebuilder
124+
fi
125+
113126
go build -o $tmp_root/kubebuilder/bin/kubebuilder-gen ./cmd/kubebuilder-gen
114127
}
115128

@@ -123,7 +136,6 @@ function prepare_vendor_deps {
123136
cp Gopkg.toml Gopkg.lock $tmp_root/
124137
cp -a vendor/* $kb_vendor_dir/
125138
cd $tmp_root
126-
sed -i "s/KUBEBUILDER_VERSION/"${VERSION-master}"/" Gopkg.toml
127139
tar -czf $kb_root_dir/bin/vendor.tar.gz vendor/ Gopkg.lock Gopkg.toml
128140
}
129141

@@ -165,7 +177,7 @@ metadata:
165177
creationTimestamp: null
166178
labels:
167179
api: ""
168-
kubebuilder.k8s.io: unknown
180+
kubebuilder.k8s.io: $INJECT_KB_VERSION
169181
name: bees.insect.sample.kubernetes.io
170182
spec:
171183
group: insect.sample.kubernetes.io
@@ -213,6 +225,11 @@ function test_generated_controller {
213225
go test -v ./pkg/...
214226
}
215227

228+
function run_dep_ensure {
229+
header_text "running dep ensure"
230+
dep ensure
231+
}
232+
216233
prepare_staging_dir
217234
fetch_tools
218235
build_kb
@@ -221,4 +238,8 @@ prepare_testdir_under_gopath
221238

222239
generate_crd_resources
223240
test_generated_controller
241+
run_dep_ensure
242+
# Run controller tests after running dep ensure because we want ensure code
243+
# compiles and tests pass after user ran dep ensure on the generated project.
244+
test_generated_controller
224245
exit $rc

0 commit comments

Comments
 (0)