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
This commit is contained in:
Nikhita Raghunath 2019-06-24 14:01:20 +05:30
parent 2109c1a7a3
commit ab3cdd57b7
2 changed files with 14 additions and 21 deletions

View File

@ -34,7 +34,7 @@ def get_gomod_dependencies(rootdir, components):
for dep in components: for dep in components:
if dep == component: if dep == component:
continue continue
if ("k8s.io/" + dep + " v0.0.0") not in line: if ("k8s.io/" + dep + " =>") not in line:
continue continue
print("\t"+dep) print("\t"+dep)
if dep not in all_dependencies[component]: if dep not in all_dependencies[component]:
@ -80,10 +80,12 @@ def main():
if rule["destination"] not in gomod_dependencies: if rule["destination"] not in gomod_dependencies:
raise Exception("missing go.mod for %s" % rule["destination"]) raise Exception("missing go.mod for %s" % rule["destination"])
processed_repos.append(rule["destination"]) processed_repos.append(rule["destination"])
processed_deps = []
for dep in set(gomod_dependencies[rule["destination"]]): for dep in set(gomod_dependencies[rule["destination"]]):
found = False found = False
if "dependencies" in branch: if "dependencies" in branch:
for dep2 in branch["dependencies"]: for dep2 in branch["dependencies"]:
processed_deps.append(dep2["repository"])
if dep2["branch"] != "master": if dep2["branch"] != "master":
raise Exception("Looking for master branch and found : %s for destination", dep2, raise Exception("Looking for master branch and found : %s for destination", dep2,
rule["destination"]) 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)) raise Exception("Please add %s as a dependency under destination %s in %s" % (dep, rule["destination"], rules_file))
else: else:
print(" found dependency %s" % dep) 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) items = set(gomod_dependencies.keys()) - set(processed_repos)
if len(items) > 0: if len(items) > 0:
raise Exception("missing rules for %s" % ','.join(str(s) for s in items)) raise Exception("missing rules for %s" % ','.join(str(s) for s in items))

View File

@ -216,8 +216,6 @@ rules:
branch: master branch: master
- repository: code-generator - repository: code-generator
branch: master branch: master
- repository: component-base
branch: master
required-packages: required-packages:
- k8s.io/code-generator - k8s.io/code-generator
- source: - source:
@ -234,8 +232,6 @@ rules:
branch: release-12.0 branch: release-12.0
- repository: code-generator - repository: code-generator
branch: release-1.15 branch: release-1.15
- repository: component-base
branch: release-1.15
required-packages: required-packages:
- k8s.io/code-generator - k8s.io/code-generator
smoke-test: | smoke-test: |
@ -354,8 +350,6 @@ rules:
branch: master branch: master
- repository: client-go - repository: client-go
branch: master branch: master
- repository: component-base
branch: master
- source: - source:
branch: release-1.15 branch: release-1.15
dir: staging/src/k8s.io/sample-cli-plugin dir: staging/src/k8s.io/sample-cli-plugin
@ -370,8 +364,6 @@ rules:
branch: release-1.15 branch: release-1.15
- repository: client-go - repository: client-go
branch: release-12.0 branch: release-12.0
- repository: component-base
branch: release-1.15
- destination: kube-proxy - destination: kube-proxy
library: true library: true
branches: branches:
@ -406,8 +398,6 @@ rules:
branch: master branch: master
- repository: api - repository: api
branch: master branch: master
- repository: component-base
branch: master
- source: - source:
branch: release-1.15 branch: release-1.15
dir: staging/src/k8s.io/kubelet dir: staging/src/k8s.io/kubelet
@ -418,8 +408,6 @@ rules:
branch: release-1.15 branch: release-1.15
- repository: api - repository: api
branch: release-1.15 branch: release-1.15
- repository: component-base
branch: release-1.15
- destination: kube-scheduler - destination: kube-scheduler
library: true library: true
branches: branches:
@ -430,8 +418,6 @@ rules:
dependencies: dependencies:
- repository: apimachinery - repository: apimachinery
branch: master branch: master
- repository: apiserver
branch: master
- repository: component-base - repository: component-base
branch: master branch: master
- source: - source:
@ -442,8 +428,6 @@ rules:
dependencies: dependencies:
- repository: apimachinery - repository: apimachinery
branch: release-1.15 branch: release-1.15
- repository: apiserver
branch: release-1.15
- repository: component-base - repository: component-base
branch: release-1.15 branch: release-1.15
- destination: kube-controller-manager - destination: kube-controller-manager
@ -456,8 +440,6 @@ rules:
dependencies: dependencies:
- repository: apimachinery - repository: apimachinery
branch: master branch: master
- repository: apiserver
branch: master
- repository: component-base - repository: component-base
branch: master branch: master
- source: - source:
@ -468,8 +450,6 @@ rules:
dependencies: dependencies:
- repository: apimachinery - repository: apimachinery
branch: release-1.15 branch: release-1.15
- repository: apiserver
branch: release-1.15
- repository: component-base - repository: component-base
branch: release-1.15 branch: release-1.15
- destination: cluster-bootstrap - destination: cluster-bootstrap
@ -532,6 +512,8 @@ rules:
branch: master branch: master
- repository: apimachinery - repository: apimachinery
branch: master branch: master
- repository: client-go
branch: master
- repository: cloud-provider - repository: cloud-provider
branch: master branch: master
- source: - source:
@ -544,6 +526,8 @@ rules:
branch: release-1.15 branch: release-1.15
- repository: apimachinery - repository: apimachinery
branch: release-1.15 branch: release-1.15
- repository: client-go
branch: release-12.0
- repository: cloud-provider - repository: cloud-provider
branch: release-1.15 branch: release-1.15
- destination: legacy-cloud-providers - destination: legacy-cloud-providers
@ -630,6 +614,8 @@ rules:
dir: staging/src/k8s.io/kubectl dir: staging/src/k8s.io/kubectl
name: master name: master
dependencies: dependencies:
- repository: api
branch: master
- repository: apimachinery - repository: apimachinery
branch: master branch: master
- repository: client-go - repository: client-go
@ -640,6 +626,8 @@ rules:
name: release-1.15 name: release-1.15
go: 1.12.5 go: 1.12.5
dependencies: dependencies:
- repository: api
branch: release-1.15
- repository: apimachinery - repository: apimachinery
branch: release-1.15 branch: release-1.15
- repository: client-go - repository: client-go