Skip to content

Commit b3de038

Browse files
authored
Merge pull request #8417 from BenTheElder/wip-maintainers-dump
generate maintainers table for cncf
2 parents b51e2a3 + b6a24f3 commit b3de038

File tree

3 files changed

+74
-0
lines changed

3 files changed

+74
-0
lines changed

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
# this file contains information that we don't want to further surface for
2+
# scraping but do generate locally
3+
maintainers.txt
4+
15
# OSX leaves these everywhere on SMB shares
26
._*
37

generator/README.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,19 @@ for i in $(ls -1 generator/generated/*.md); do gh issue create --repo kubernetes
8484
You may run into rate limiting issues, which is why this command removes the
8585
files after an issue has been successfully created.
8686

87+
<!--TODO: we probably won't need maintainers.txt longterm-->
88+
To generate the maintainers.txt file for updating with the CNCF re:
89+
https://github.com/kubernetes/steering/issues/281
90+
91+
```bash
92+
make MAINTAINERS_LIST=true
93+
```
94+
95+
This will generate an untracked (not saved in git) maintainers.txt file with a
96+
table in the format requested by the CNCF.
97+
Most contributors will never need to do this.
98+
For more details see the linked steering issue.
99+
<!--END-TODO: we probably won't need maintainers.txt longterm-->
87100

88101
## Adding custom content
89102

generator/app.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1100,6 +1100,58 @@ func prepForAnnualReportGeneration() error {
11001100
return nil
11011101
}
11021102

1103+
func generateCNCFMaintainersList(ctx *Context) error {
1104+
maintainers := map[string]Person{}
1105+
serviceDesk := map[string]bool{}
1106+
for _, group := range ctx.Committees {
1107+
if group.Name == "Steering" {
1108+
for _, member := range group.Leadership.Chairs {
1109+
maintainers[member.GitHub] = member
1110+
serviceDesk[member.GitHub] = true
1111+
}
1112+
}
1113+
}
1114+
for _, sig := range ctx.Sigs {
1115+
// these groups retain service desk access in addition to steering
1116+
// as outlined in https://github.com/kubernetes/steering/issues/281
1117+
isServiceDesk := sig.Name == "Contributor Experience" || sig.Name == "K8s Infra" || sig.Name == "Release"
1118+
for _, chair := range sig.Leadership.Chairs {
1119+
maintainers[chair.GitHub] = chair
1120+
// only set service desk true as needed, do not override to false
1121+
// in case of maintainers spanning groups
1122+
if isServiceDesk {
1123+
serviceDesk[chair.Name] = true
1124+
}
1125+
}
1126+
for _, tl := range sig.Leadership.TechnicalLeads {
1127+
maintainers[tl.GitHub] = tl
1128+
// only set service desk true as needed, do not override to false
1129+
// in case of maintainers spanning groups
1130+
if isServiceDesk {
1131+
serviceDesk[tl.Name] = true
1132+
}
1133+
}
1134+
}
1135+
outputPath := filepath.Join(baseGeneratorDir, "maintainers.txt")
1136+
f, err := os.Create(outputPath)
1137+
if err != nil {
1138+
return err
1139+
}
1140+
defer f.Close()
1141+
fmt.Fprintln(f, "name | company | github | email | service-desk?")
1142+
fmt.Fprintln(f, "===============================================")
1143+
keys := []string{}
1144+
for gh := range maintainers {
1145+
keys = append(keys, gh)
1146+
}
1147+
sort.Strings(keys)
1148+
for _, gh := range keys {
1149+
m := maintainers[gh]
1150+
fmt.Fprintf(f, "%s | %s | %s | %s | %t\n", m.Name, m.Company, m.GitHub, m.Email, serviceDesk[m.GitHub])
1151+
}
1152+
return nil
1153+
}
1154+
11031155
func main() {
11041156
yamlPath := filepath.Join(baseGeneratorDir, sigsYamlFile)
11051157
var ctx Context
@@ -1153,6 +1205,11 @@ func main() {
11531205
}
11541206
}
11551207

1208+
if envVal, ok := os.LookupEnv("MAINTAINERS_LIST"); ok && envVal == "true" {
1209+
fmt.Println("Generating CNCF maintainers list")
1210+
generateCNCFMaintainersList(&ctx)
1211+
}
1212+
11561213
fmt.Println("Generating sig-list.md")
11571214
outputPath := filepath.Join(baseGeneratorDir, sigListOutput)
11581215
err = writeTemplate(filepath.Join(baseGeneratorDir, templateDir, listTemplate), outputPath, "markdown", ctx)

0 commit comments

Comments
 (0)