mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-31 15:25:57 +00:00
hack: Use zeitgeist instead of cmd/verifydependencies
Signed-off-by: Stephen Augustus <foo@auggie.dev>
This commit is contained in:
parent
68b9e70f3d
commit
71008247dc
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -26,6 +26,19 @@ source "${KUBE_ROOT}/hack/lib/init.sh"
|
||||
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user