github / safe-settings

ISC License
563 stars 138 forks source link

"Error TypeError: Cannot read properties of undefined" when reading Collaborators & Teams for Repo #586

Closed tegataiprime closed 4 months ago

tegataiprime commented 4 months ago

Problem Description

When running with v2.1.0, all is well. When running with v2.1.3 or v2.1.4-rc1 Safe Settings reports the following errors:

Error TypeError: Cannot read properties of undefined (reading 'indexOf') in Collaborators for repo: Error TypeError: Cannot read properties of undefined (reading 'indexOf') in Teams for repo:

What is actually happening

When attempting to apply a change to teams for a suborg, Safe Settings produces an error an aborts the operation. Changes are not applied.

What is the expected behavior

Changes to teams will be applied.

Error output, if available

{"level":20,"time":1707516110100,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","msg":"GitHub request: GET https://api.github.com/repos/my-organization/jrc-test - 200"}
{"level":50,"time":1707516110101,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":" Error {}"}
{"level":20,"time":1707516110101,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":"Finding teams for my-organization/jrc-test"}
{"level":20,"time":1707516110214,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","msg":"GitHub request: GET https://api.github.com/repos/my-organization/jrc-test/invitations - 200"}
{"level":20,"time":1707516110289,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","msg":"GitHub request: GET https://api.github.com/repos/my-organization/jrc-test/collaborators?affiliation=outside - 200"}
{"level":20,"time":1707516110482,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","msg":"GitHub request: GET https://api.github.com/repos/my-organization/jrc-test/collaborators?affiliation=direct - 200"}
{"level":20,"time":1707516110482,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":" [\n  {\n    \"username\": \"us-nbi-ci-svc\",\n    \"pendinginvite\": false,\n    \"permission\": \"push\"\n  },\n  {\n    \"username\": \"us-nbi-cd-svc\",\n    \"pendinginvite\": false,\n    \"permission\": \"admin\"\n  }\n] \n\n [\n  {\n    \"username\": \"us-nbi-ci-svc\",\n    \"permission\": \"push\"\n  },\n  {\n    \"username\": \"us-nbi-cd-svc\",\n    \"permission\": \"pull\"\n  }\n] "}
{"level":50,"time":1707516110483,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":"Error TypeError: Cannot read properties of undefined (reading 'indexOf') in Collaborators for repo: {\"owner\":\"my-organization\",\"repo\":\"jrc-test\"} entries [{\"username\":\"us-nbi-ci-svc\",\"permission\":\"push\"},{\"username\":\"us-nbi-cd-svc\",\"permission\":\"pull\"}]"}
{"level":20,"time":1707516110508,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","msg":"GitHub request: GET https://api.github.com/repos/my-organization/jrc-test/teams - 200"}
{"level":20,"time":1707516110508,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":" [\n  {\n    \"name\": \"DevOps\",\n    \"id\": 7462229,\n    \"node_id\": \"T_kwDOBzfxl84Acd1V\",\n    \"slug\": \"devops\",\n    \"description\": \"NBI Platform / DevSecOps\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/7462229\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/devops\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/7462229/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7462229/repos\",\n    \"permission\": \"pull\",\n    \"permissions\": {\n      \"admin\": false,\n      \"maintain\": false,\n      \"push\": false,\n      \"triage\": false,\n      \"pull\": true\n    },\n    \"parent\": null\n  },\n  {\n    \"name\": \"DevOps Admins\",\n    \"id\": 7187669,\n    \"node_id\": \"T_kwDOBzfxl84AbazV\",\n    \"slug\": \"devops-admins\",\n    \"description\": \"System Administrators for DevSecOps Services\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/7187669\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/devops-admins\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/7187669/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7187669/repos\",\n    \"permission\": \"admin\",\n    \"permissions\": {\n      \"admin\": true,\n      \"maintain\": true,\n      \"push\": true,\n      \"triage\": true,\n      \"pull\": true\n    },\n    \"parent\": {\n      \"name\": \"DevOps Maintainers\",\n      \"id\": 7473699,\n      \"node_id\": \"T_kwDOBzfxl84Acgoj\",\n      \"slug\": \"devops-maintainers\",\n      \"description\": \"NBI DevSevOps Maintainers\",\n      \"privacy\": \"closed\",\n      \"notification_setting\": \"notifications_enabled\",\n      \"url\": \"https://api.github.com/organizations/121106839/team/7473699\",\n      \"html_url\": \"https://github.com/orgs/my-organization/teams/devops-maintainers\",\n      \"members_url\": \"https://api.github.com/organizations/121106839/team/7473699/members{/member}\",\n      \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7473699/repos\",\n      \"permission\": \"maintain\",\n      \"permissions\": {\n        \"admin\": false,\n        \"maintain\": true,\n        \"push\": true,\n        \"triage\": true,\n        \"pull\": true\n      }\n    }\n  },\n  {\n    \"name\": \"DevOps Developers\",\n    \"id\": 7187666,\n    \"node_id\": \"T_kwDOBzfxl84AbazS\",\n    \"slug\": \"devops-developers\",\n    \"description\": \"NBI Platorm / DevSecOps Developers\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/7187666\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/devops-developers\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/7187666/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7187666/repos\",\n    \"permission\": \"push\",\n    \"permissions\": {\n      \"admin\": false,\n      \"maintain\": false,\n      \"push\": true,\n      \"triage\": true,\n      \"pull\": true\n    },\n    \"parent\": {\n      \"name\": \"DevOps\",\n      \"id\": 7462229,\n      \"node_id\": \"T_kwDOBzfxl84Acd1V\",\n      \"slug\": \"devops\",\n      \"description\": \"NBI Platform / DevSecOps\",\n      \"privacy\": \"closed\",\n      \"notification_setting\": \"notifications_enabled\",\n      \"url\": \"https://api.github.com/organizations/121106839/team/7462229\",\n      \"html_url\": \"https://github.com/orgs/my-organization/teams/devops\",\n      \"members_url\": \"https://api.github.com/organizations/121106839/team/7462229/members{/member}\",\n      \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7462229/repos\",\n      \"permission\": \"pull\",\n      \"permissions\": {\n        \"admin\": false,\n        \"maintain\": false,\n        \"push\": false,\n        \"triage\": false,\n        \"pull\": true\n      }\n    }\n  },\n  {\n    \"name\": \"DevOps Maintainers\",\n    \"id\": 7473699,\n    \"node_id\": \"T_kwDOBzfxl84Acgoj\",\n    \"slug\": \"devops-maintainers\",\n    \"description\": \"NBI DevSevOps Maintainers\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/7473699\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/devops-maintainers\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/7473699/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7473699/repos\",\n    \"permission\": \"maintain\",\n    \"permissions\": {\n      \"admin\": false,\n      \"maintain\": true,\n      \"push\": true,\n      \"triage\": true,\n      \"pull\": true\n    },\n    \"parent\": {\n      \"name\": \"DevOps Developers\",\n      \"id\": 7187666,\n      \"node_id\": \"T_kwDOBzfxl84AbazS\",\n      \"slug\": \"devops-developers\",\n      \"description\": \"NBI Platorm / DevSecOps Developers\",\n      \"privacy\": \"closed\",\n      \"notification_setting\": \"notifications_enabled\",\n      \"url\": \"https://api.github.com/organizations/121106839/team/7187666\",\n      \"html_url\": \"https://github.com/orgs/my-organization/teams/devops-developers\",\n      \"members_url\": \"https://api.github.com/organizations/121106839/team/7187666/members{/member}\",\n      \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7187666/repos\",\n      \"permission\": \"push\",\n      \"permissions\": {\n        \"admin\": false,\n        \"maintain\": false,\n        \"push\": true,\n        \"triage\": true,\n        \"pull\": true\n      }\n    }\n  },\n  {\n    \"name\": \"DevOps Managers\",\n    \"id\": 7563194,\n    \"node_id\": \"T_kwDOBzfxl84Ac2e6\",\n    \"slug\": \"devops-managers\",\n    \"description\": \"DevOps Project Managers; Manage Issues, Projects & Pull Requests\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/7563194\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/devops-managers\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/7563194/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7563194/repos\",\n    \"permission\": \"push\",\n    \"permissions\": {\n      \"admin\": false,\n      \"maintain\": false,\n      \"push\": true,\n      \"triage\": true,\n      \"pull\": true\n    },\n    \"parent\": {\n      \"name\": \"DevOps\",\n      \"id\": 7462229,\n      \"node_id\": \"T_kwDOBzfxl84Acd1V\",\n      \"slug\": \"devops\",\n      \"description\": \"NBI Platform / DevSecOps\",\n      \"privacy\": \"closed\",\n      \"notification_setting\": \"notifications_enabled\",\n      \"url\": \"https://api.github.com/organizations/121106839/team/7462229\",\n      \"html_url\": \"https://github.com/orgs/my-organization/teams/devops\",\n      \"members_url\": \"https://api.github.com/organizations/121106839/team/7462229/members{/member}\",\n      \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7462229/repos\",\n      \"permission\": \"pull\",\n      \"permissions\": {\n        \"admin\": false,\n        \"maintain\": false,\n        \"push\": false,\n        \"triage\": false,\n        \"pull\": true\n      }\n    }\n  },\n  {\n    \"name\": \"Engineering Platforms Developers\",\n    \"id\": 8522895,\n    \"node_id\": \"T_kwDOBzfxl84AggyP\",\n    \"slug\": \"engineering-platforms-developers\",\n    \"description\": \"Engineering Platforms Developers\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/8522895\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/engineering-platforms-developers\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/8522895/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/8522895/repos\",\n    \"permission\": \"push\",\n    \"permissions\": {\n      \"admin\": false,\n      \"maintain\": false,\n      \"push\": true,\n      \"triage\": true,\n      \"pull\": true\n    },\n    \"parent\": {\n      \"name\": \"Engineering Platforms\",\n      \"id\": 8522894,\n      \"node_id\": \"T_kwDOBzfxl84AggyO\",\n      \"slug\": \"engineering-platforms\",\n      \"description\": \"Engineering Platforms\",\n      \"privacy\": \"closed\",\n      \"notification_setting\": \"notifications_enabled\",\n      \"url\": \"https://api.github.com/organizations/121106839/team/8522894\",\n      \"html_url\": \"https://github.com/orgs/my-organization/teams/engineering-platforms\",\n      \"members_url\": \"https://api.github.com/organizations/121106839/team/8522894/members{/member}\",\n      \"repositories_url\": \"https://api.github.com/organizations/121106839/team/8522894/repos\",\n      \"permission\": null,\n      \"permissions\": {\n        \"admin\": false,\n        \"maintain\": false,\n        \"push\": false,\n        \"triage\": false,\n        \"pull\": false\n      }\n    }\n  },\n  {\n    \"name\": \"SecOps\",\n    \"id\": 7470132,\n    \"node_id\": \"T_kwDOBzfxl84Acfw0\",\n    \"slug\": \"secops\",\n    \"description\": \"Engineering Platforms SecOps Team\",\n    \"privacy\": \"closed\",\n    \"notification_setting\": \"notifications_enabled\",\n    \"url\": \"https://api.github.com/organizations/121106839/team/7470132\",\n    \"html_url\": \"https://github.com/orgs/my-organization/teams/secops\",\n    \"members_url\": \"https://api.github.com/organizations/121106839/team/7470132/members{/member}\",\n    \"repositories_url\": \"https://api.github.com/organizations/121106839/team/7470132/repos\",\n    \"permission\": \"pull\",\n    \"permissions\": {\n      \"admin\": false,\n      \"maintain\": false,\n      \"push\": false,\n      \"triage\": false,\n      \"pull\": true\n    },\n    \"parent\": null\n  }\n] \n\n [\n  {\n    \"name\": \"secops\",\n    \"permission\": \"pull\"\n  },\n  {\n    \"name\": \"devops-developers\",\n    \"permission\": \"push\"\n  },\n  {\n    \"name\": \"devops-admins\",\n    \"permission\": \"admin\"\n  },\n  {\n    \"name\": \"devops\",\n    \"permission\": \"pull\"\n  },\n  {\n    \"name\": \"devops-maintainers\",\n    \"permission\": \"maintain\"\n  },\n  {\n    \"name\": \"devops-managers\",\n    \"permission\": \"push\"\n  }\n] "}
{"level":50,"time":1707516110509,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":"Error TypeError: Cannot read properties of undefined (reading 'indexOf') in Teams for repo: {\"owner\":\"my-organization\",\"repo\":\"jrc-test\"} entries [{\"name\":\"secops\",\"permission\":\"pull\"},{\"name\":\"devops-developers\",\"permission\":\"push\"},{\"name\":\"devops-admins\",\"permission\":\"admin\"},{\"name\":\"devops\",\"permission\":\"pull\"},{\"name\":\"devops-maintainers\",\"permission\":\"maintain\"},{\"name\":\"devops-managers\",\"permission\":\"push\"}]"}
{"level":20,"time":1707516110509,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"event","id":"c0b8759a-c796-11ee-945c-563912c95a01","msg":"Not run in nop"}
{"level":20,"time":1707516110801,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","msg":"GitHub request: GET https://api.github.com/repos/my-organization/devops-admin-safe-settings/commits - 200"}
{"level":20,"time":1707516111471,"pid":25,"hostname":"nbi-safe-settings-7c66b447c6-stmkl","name":"probot","name":"probot","name":"octokit","name":"Safe-Settings","head_sha":"09b8789f409e08e485d1e81b501593104379c779","status":"completed","started_at":"2024-02-09T22:01:50.509Z","conclusion":"failure","completed_at":"2024-02-09T22:01:50.801Z","output":{"title":"Safe-Settings","summary":"Safe-Settings finished with errors.","text":"Run on: `2024-02-09T22:01:50.511Z`\n\n#### Breakdown of Errors\n| Owner| Repo | Plugin | Error \n| --- | --- | --- | --- \nmy-organization | jrc-test | Repository |  Error {}\nmy-organization | jrc-test | Collaborators | Error TypeError: Cannot read properties of undefined (reading 'indexOf') in Collaborators for repo: {"owner":"my-organization","repo":"jrc-test"} entries [{"username":"us-nbi-ci-svc","permission":"push"},{"username":"us-nbi-cd-svc","permission":"pull"}]\nmy-organization | jrc-test | Teams | Error TypeError: Cannot read properties of undefined (reading 'indexOf') in Teams for repo: {"owner":"my-organization","repo":"jrc-test"} entries [{"name":"secops","permission":"pull"},{"name":"devops-developers","permission":"push"},{"name":"devops-admins","permission":"admin"},{"name":"devops","permission":"pull"},{"name":"devops-maintainers","permission":"maintain"},{"name":"devops-managers","permission":"push"}]\n\n\n"},"msg":"GitHub request: POST https://api.github.com/repos/my-organization/devops-admin-safe-settings/check-runs - 201"}

Context

settings.yml

# NBI Organization Defaults
repository:
  auto_init: true
teams:
  - name: secops
    permission: pull
  - name: devops-developers
    permission: push
  - name: devops-admins
    permission: admin
collaborators:
  - username: US-NBI-CI-SVC
    permission: push
  - username: US-NBI-CD-SVC
    permission: pull

jrc-suborg.yml

# Team JRC!
suborgrepos:
  - jrc-*
teams:
  - name: devops
    permission: pull
  - name: devops-developers
    permission: push
  - name: devops-maintainers
    permission: maintain
  - name: devops-admins
    permission: admin
  - name: devops-managers
    permission: push
repository:
  auto_init: true
  visibility: private
  has_issues: false
  has_projects: false
  has_wiki: false
  default_branch: main
  topics:
  - safe-settings
  - test
  - jrc

Are you using the hosted instance of probot/settings or running your own?

Self-Hosted

If running your own instance, are you using it with github.com or GitHub Enterprise?

GitHub Enterprise Cloud

Version of probot/settings

v2.1.3 v2.1.4-rc1

Version of GitHub Enterprise

GitHub Enterprise Cloud