diff --git a/action.yml b/action.yml index 1ba1d7098..edd58e723 100644 --- a/action.yml +++ b/action.yml @@ -62,7 +62,7 @@ runs: -e IGNORED_USERS="$IGNORED_USERS" \ -e SYNC_TEAM="$SYNC_TEAM" \ -e GITHUB_TEAM_SLUG="$GITHUB_TEAM_SLUG" \ - ghcr.io/remarkable/githubusermanager/githubusermanager:v1.5.0 + ghcr.io/remarkable/githubusermanager/githubusermanager:v1.5.2 shell: bash env: GOOGLE_EMAIL_ADDRESS: ${{ inputs.google-email-address }} diff --git a/src/github.ts b/src/github.ts index 739bb400c..faab2cb51 100644 --- a/src/github.ts +++ b/src/github.ts @@ -85,7 +85,11 @@ export async function getTeamMembers(): Promise> { export async function addUsersToTeam(users: Set): Promise { for (const user of users) { - await mod.addUserToTeam(user) + try { + await mod.addUserToTeam(user) + } catch (error) { + console.error(`Skipping team add for ${user}: ${error instanceof Error ? error.message : String(error)}`) + } } } diff --git a/tests/github.spec.ts b/tests/github.spec.ts index 5ae1a7be2..48805081e 100644 --- a/tests/github.spec.ts +++ b/tests/github.spec.ts @@ -133,6 +133,15 @@ describe('github integration', () => { return expect(mod.addUserToTeam).toMatchSnapshot() }) + it('addUsersToTeam skips users that error', async () => { + const users = new Set(['foo', 'bar']) + vi.spyOn(mod, 'addUserToTeam') + .mockRejectedValueOnce(new Error('Validation Failed: no_saml_sso')) + .mockResolvedValueOnce(false) + await expect(mod.addUsersToTeam(users)).resolves.toBeUndefined() + expect(mod.addUserToTeam).toHaveBeenCalledTimes(2) + }) + it('getTeamMembers', async () => { const fakeOctokit = { teams: { listMembersInOrg: vi.fn() },