Merge pull request #98845 from justaugustus/zeitgeist
hack: Use zeitgeist instead of cmd/verifydependencies
This commit is contained in:
commit
d88d9ac3b4
@ -1,4 +1,21 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
|
# zeitgeist (https://github.com/kubernetes-sigs/zeitgeist) was inspired by
|
||||||
|
# (and now replaces) the cmd/verifydependencies tool to verify external
|
||||||
|
# dependencies across the repo.
|
||||||
|
#
|
||||||
|
# The zeitgeist dependencies.yaml file format is intended to be
|
||||||
|
# backwards-compatible with the original tooling.
|
||||||
|
#
|
||||||
|
# In instances where the file format may change across versions, this meta
|
||||||
|
# dependency check exists to ensure we're pinned to a known good version.
|
||||||
|
#
|
||||||
|
# ref: https://github.com/kubernetes/kubernetes/pull/98845
|
||||||
|
- name: "zeitgeist"
|
||||||
|
version: "v0.1.1-0.20210222132743-e06e27751b7f"
|
||||||
|
refPaths:
|
||||||
|
- path: hack/tools/go.mod
|
||||||
|
match: sigs.k8s.io/zeitgeist\ v(?P<major>0|[1-9]\d*)\.(?P<minor>0|[1-9]\d*)\.(?P<patch>0|[1-9]\d*)(?:-(?P<prerelease>(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+(?P<buildmetadata>[0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?
|
||||||
|
|
||||||
# agnhost: bump this one first
|
# agnhost: bump this one first
|
||||||
- name: "agnhost"
|
- name: "agnhost"
|
||||||
version: "2.28"
|
version: "2.28"
|
||||||
|
@ -32,7 +32,6 @@ filegroup(
|
|||||||
"//cmd/kubemark:all-srcs",
|
"//cmd/kubemark:all-srcs",
|
||||||
"//cmd/linkcheck:all-srcs",
|
"//cmd/linkcheck:all-srcs",
|
||||||
"//cmd/preferredimports:all-srcs",
|
"//cmd/preferredimports:all-srcs",
|
||||||
"//cmd/verifydependencies:all-srcs",
|
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
)
|
)
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
|
|
||||||
|
|
||||||
go_library(
|
|
||||||
name = "go_default_library",
|
|
||||||
srcs = ["verifydependencies.go"],
|
|
||||||
importpath = "k8s.io/kubernetes/cmd/verifydependencies",
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
deps = ["//vendor/gopkg.in/yaml.v2:go_default_library"],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_binary(
|
|
||||||
name = "verifydependencies",
|
|
||||||
embed = [":go_default_library"],
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "package-srcs",
|
|
||||||
srcs = glob(["**"]),
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:private"],
|
|
||||||
)
|
|
||||||
|
|
||||||
filegroup(
|
|
||||||
name = "all-srcs",
|
|
||||||
srcs = [":package-srcs"],
|
|
||||||
tags = ["automanaged"],
|
|
||||||
visibility = ["//visibility:public"],
|
|
||||||
)
|
|
@ -1,8 +0,0 @@
|
|||||||
# See the OWNERS docs at https://go.k8s.io/owners
|
|
||||||
|
|
||||||
reviewers:
|
|
||||||
- neolit123
|
|
||||||
- justaugustus
|
|
||||||
approvers:
|
|
||||||
- yastij
|
|
||||||
- dims
|
|
@ -1,101 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2019 The Kubernetes Authors.
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// verify that dependencies are up-to-date across different files
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"flag"
|
|
||||||
"log"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"bufio"
|
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"regexp"
|
|
||||||
|
|
||||||
"gopkg.in/yaml.v2"
|
|
||||||
)
|
|
||||||
|
|
||||||
type dependencies struct {
|
|
||||||
Dependencies []*dependency `yaml:"dependencies"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type dependency struct {
|
|
||||||
Name string `yaml:"name"`
|
|
||||||
Version string `yaml:"version"`
|
|
||||||
RefPaths []*refPath `yaml:"refPaths"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type refPath struct {
|
|
||||||
Path string `yaml:"path"`
|
|
||||||
Match string `yaml:"match"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
args := flag.Args()
|
|
||||||
|
|
||||||
if len(args) == 0 {
|
|
||||||
log.Fatalf("usage: verifydependency <file>")
|
|
||||||
}
|
|
||||||
externalDepsFilePath := args[0]
|
|
||||||
externalDepsFile, err := ioutil.ReadFile(externalDepsFilePath)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
mismatchErrorMessage := "ERROR: %v indicates that %v should be at version %v, but the following files didn't match:\n\n" +
|
|
||||||
"%v\n\nif you are changing the version of %v, make sure all of the following files are updated with the newest version including %v\n" +
|
|
||||||
"then run ./hack/verify-external-dependencies-version.sh\n\n"
|
|
||||||
externalDeps := &dependencies{}
|
|
||||||
var pathsToUpdate []string
|
|
||||||
err = yaml.Unmarshal(externalDepsFile, externalDeps)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, dep := range externalDeps.Dependencies {
|
|
||||||
for _, refPath := range dep.RefPaths {
|
|
||||||
func() {
|
|
||||||
file, err := os.Open(refPath.Path)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("error opening file %v : %v", refPath.Path, err)
|
|
||||||
}
|
|
||||||
defer file.Close()
|
|
||||||
matcher := regexp.MustCompile(refPath.Match)
|
|
||||||
depFileScanner := bufio.NewScanner(file)
|
|
||||||
var found bool
|
|
||||||
for depFileScanner.Scan() {
|
|
||||||
line := depFileScanner.Text()
|
|
||||||
if matcher.MatchString(line) && strings.Contains(line, dep.Version) {
|
|
||||||
found = true
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !found {
|
|
||||||
pathsToUpdate = append(pathsToUpdate, refPath.Path)
|
|
||||||
}
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
if len(pathsToUpdate) > 0 {
|
|
||||||
log.Fatalf(mismatchErrorMessage, externalDepsFilePath, dep.Name, dep.Version, strings.Join(pathsToUpdate, "\n"), dep.Name, externalDepsFilePath)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -13,4 +13,5 @@ require (
|
|||||||
gotest.tools/gotestsum v0.3.5
|
gotest.tools/gotestsum v0.3.5
|
||||||
honnef.co/go/tools v0.0.1-2020.1.6
|
honnef.co/go/tools v0.0.1-2020.1.6
|
||||||
k8s.io/repo-infra v0.1.3
|
k8s.io/repo-infra v0.1.3
|
||||||
|
sigs.k8s.io/zeitgeist v0.1.1-0.20210222132743-e06e27751b7f
|
||||||
)
|
)
|
||||||
|
1048
hack/tools/go.sum
1048
hack/tools/go.sum
File diff suppressed because it is too large
Load Diff
@ -34,4 +34,7 @@ import (
|
|||||||
_ "github.com/bazelbuild/bazel-gazelle/cmd/gazelle"
|
_ "github.com/bazelbuild/bazel-gazelle/cmd/gazelle"
|
||||||
_ "github.com/bazelbuild/buildtools/buildozer"
|
_ "github.com/bazelbuild/buildtools/buildozer"
|
||||||
_ "k8s.io/repo-infra/cmd/kazel"
|
_ "k8s.io/repo-infra/cmd/kazel"
|
||||||
|
|
||||||
|
// dependencies
|
||||||
|
_ "sigs.k8s.io/zeitgeist"
|
||||||
)
|
)
|
||||||
|
@ -26,6 +26,19 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
|||||||
|
|
||||||
kube::golang::verify_go_version
|
kube::golang::verify_go_version
|
||||||
|
|
||||||
cd "${KUBE_ROOT}"
|
# Ensure that we find the binaries we build before anything else.
|
||||||
|
export GOBIN="${KUBE_OUTPUT_BINPATH}"
|
||||||
|
PATH="${GOBIN}:${PATH}"
|
||||||
|
|
||||||
go run cmd/verifydependencies/verifydependencies.go "${KUBE_ROOT}"/build/dependencies.yaml
|
# Install zeitgeist
|
||||||
|
cd "${KUBE_ROOT}/hack/tools"
|
||||||
|
GO111MODULE=on go install sigs.k8s.io/zeitgeist
|
||||||
|
cd -
|
||||||
|
|
||||||
|
# Prefer full path for running zeitgeist
|
||||||
|
ZEITGEIST_BIN="$(which zeitgeist)"
|
||||||
|
|
||||||
|
"${ZEITGEIST_BIN}" validate \
|
||||||
|
--local \
|
||||||
|
--base-path "${KUBE_ROOT}" \
|
||||||
|
--config "${KUBE_ROOT}"/build/dependencies.yaml
|
||||||
|
@ -427,7 +427,6 @@ k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/
|
|||||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||||
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2 h1:YHQV7Dajm86OuqnIR6zAelnDWBRjo+YhYV9PmGrh1s8=
|
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.3 h1:4oyYo8NREp49LBBhKxEqCulFjg26rawYKrnCmg+Sr6c=
|
sigs.k8s.io/structured-merge-diff/v4 v4.0.3 h1:4oyYo8NREp49LBBhKxEqCulFjg26rawYKrnCmg+Sr6c=
|
||||||
sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw=
|
||||||
|
Loading…
Reference in New Issue
Block a user