From ab3cdd57b7e769510ae5a9eea026d180e31e74e1 Mon Sep 17 00:00:00 2001 From: Nikhita Raghunath Date: Mon, 24 Jun 2019 14:01:20 +0530 Subject: [PATCH] publishing: use deps in replace directive in rules The list of dependencies for a repo right now is equal to the list of deps mentioned in the require directive in the repo's go.mod file. This means that we loose all transitive deps mentioned in the replace directive in go.mod files. So instead use all deps mentioned in the replace directive, and prune any extra dependencies. Also add a test for this in verify-publishing-bot.py --- hack/verify-publishing-bot.py | 7 ++++++- staging/publishing/rules.yaml | 28 ++++++++-------------------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/hack/verify-publishing-bot.py b/hack/verify-publishing-bot.py index b2cf19e0adb..dc8c3d791d1 100755 --- a/hack/verify-publishing-bot.py +++ b/hack/verify-publishing-bot.py @@ -34,7 +34,7 @@ def get_gomod_dependencies(rootdir, components): for dep in components: if dep == component: continue - if ("k8s.io/" + dep + " v0.0.0") not in line: + if ("k8s.io/" + dep + " =>") not in line: continue print("\t"+dep) if dep not in all_dependencies[component]: @@ -80,10 +80,12 @@ def main(): if rule["destination"] not in gomod_dependencies: raise Exception("missing go.mod for %s" % rule["destination"]) processed_repos.append(rule["destination"]) + processed_deps = [] for dep in set(gomod_dependencies[rule["destination"]]): found = False if "dependencies" in branch: for dep2 in branch["dependencies"]: + processed_deps.append(dep2["repository"]) if dep2["branch"] != "master": raise Exception("Looking for master branch and found : %s for destination", dep2, rule["destination"]) @@ -96,6 +98,9 @@ def main(): raise Exception("Please add %s as a dependency under destination %s in %s" % (dep, rule["destination"], rules_file)) else: print(" found dependency %s" % dep) + extraDeps = set(processed_deps) - set(gomod_dependencies[rule["destination"]]) + if len(extraDeps) > 0: + raise Exception("extra dependencies in rules for %s: %s" % (rule["destination"], ','.join(str(s) for s in extraDeps))) items = set(gomod_dependencies.keys()) - set(processed_repos) if len(items) > 0: raise Exception("missing rules for %s" % ','.join(str(s) for s in items)) diff --git a/staging/publishing/rules.yaml b/staging/publishing/rules.yaml index 572129a478c..dab1c1c8275 100644 --- a/staging/publishing/rules.yaml +++ b/staging/publishing/rules.yaml @@ -216,8 +216,6 @@ rules: branch: master - repository: code-generator branch: master - - repository: component-base - branch: master required-packages: - k8s.io/code-generator - source: @@ -234,8 +232,6 @@ rules: branch: release-12.0 - repository: code-generator branch: release-1.15 - - repository: component-base - branch: release-1.15 required-packages: - k8s.io/code-generator smoke-test: | @@ -354,8 +350,6 @@ rules: branch: master - repository: client-go branch: master - - repository: component-base - branch: master - source: branch: release-1.15 dir: staging/src/k8s.io/sample-cli-plugin @@ -370,8 +364,6 @@ rules: branch: release-1.15 - repository: client-go branch: release-12.0 - - repository: component-base - branch: release-1.15 - destination: kube-proxy library: true branches: @@ -406,8 +398,6 @@ rules: branch: master - repository: api branch: master - - repository: component-base - branch: master - source: branch: release-1.15 dir: staging/src/k8s.io/kubelet @@ -418,8 +408,6 @@ rules: branch: release-1.15 - repository: api branch: release-1.15 - - repository: component-base - branch: release-1.15 - destination: kube-scheduler library: true branches: @@ -430,8 +418,6 @@ rules: dependencies: - repository: apimachinery branch: master - - repository: apiserver - branch: master - repository: component-base branch: master - source: @@ -442,8 +428,6 @@ rules: dependencies: - repository: apimachinery branch: release-1.15 - - repository: apiserver - branch: release-1.15 - repository: component-base branch: release-1.15 - destination: kube-controller-manager @@ -456,8 +440,6 @@ rules: dependencies: - repository: apimachinery branch: master - - repository: apiserver - branch: master - repository: component-base branch: master - source: @@ -468,8 +450,6 @@ rules: dependencies: - repository: apimachinery branch: release-1.15 - - repository: apiserver - branch: release-1.15 - repository: component-base branch: release-1.15 - destination: cluster-bootstrap @@ -532,6 +512,8 @@ rules: branch: master - repository: apimachinery branch: master + - repository: client-go + branch: master - repository: cloud-provider branch: master - source: @@ -544,6 +526,8 @@ rules: branch: release-1.15 - repository: apimachinery branch: release-1.15 + - repository: client-go + branch: release-12.0 - repository: cloud-provider branch: release-1.15 - destination: legacy-cloud-providers @@ -630,6 +614,8 @@ rules: dir: staging/src/k8s.io/kubectl name: master dependencies: + - repository: api + branch: master - repository: apimachinery branch: master - repository: client-go @@ -640,6 +626,8 @@ rules: name: release-1.15 go: 1.12.5 dependencies: + - repository: api + branch: release-1.15 - repository: apimachinery branch: release-1.15 - repository: client-go