@@ -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+
11031155func 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