Skip to content

Commit 59a8f05

Browse files
committed
fix(release): debug 6
1 parent 2577589 commit 59a8f05

File tree

1 file changed

+16
-43
lines changed

1 file changed

+16
-43
lines changed

.github/workflows/publish.yml

Lines changed: 16 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -24,69 +24,42 @@ jobs:
2424
id-token: write
2525

2626
steps:
27-
- name: Generate GitHub App token (with org members:read)
28-
id: app-token
29-
uses: actions/create-github-app-token@v2
30-
with:
31-
app-id: ${{ secrets.APP_ID }}
32-
private-key: ${{ secrets.PRIVATE_KEY }}
27+
# If your GitHub App is configured with org Members:read, you can
28+
# generate an app token instead. For now, rely on a PAT with read:org.
29+
# - name: Generate GitHub App token (with org members:read)
30+
# id: app-token
31+
# uses: actions/create-github-app-token@v2
32+
# with:
33+
# app-id: ${{ secrets.APP_ID }}
34+
# private-key: ${{ secrets.PRIVATE_KEY }}
35+
# owner: supabase
3336

3437
- name: Check if actor is member of admin or client-libs team
3538
id: team-check
3639
uses: actions/github-script@v7
3740
with:
38-
github-token: ${{ steps.app-token.outputs.token }}
41+
github-token: ${{ secrets.RELEASE_GITHUB_TOKEN }}
3942
script: |
4043
const org = 'supabase'
4144
const { actor } = context
4245
43-
async function isOrgAdmin() {
44-
try {
45-
const res = await github.rest.orgs.getMembershipForUser({ org, username: actor })
46-
return res?.status === 200 && res.data?.role === 'admin' && res.data?.state === 'active'
47-
} catch (e) {
48-
console.log('Org membership check failed', e)
49-
return false
50-
}
51-
}
52-
53-
async function resolveTeamSlug(preferredSlugs) {
54-
try {
55-
const teams = await github.paginate(github.rest.teams.list, { org })
56-
const lower = (s) => (s || '').toLowerCase()
57-
const candidates = preferredSlugs.map(lower)
58-
const team = teams.find((t) => {
59-
const slug = lower(t.slug)
60-
const name = lower(t.name)
61-
return candidates.includes(slug) || candidates.includes(name)
62-
})
63-
return team?.slug
64-
} catch (e) {
65-
console.log('Failed to list teams', e)
66-
return undefined
67-
}
68-
}
69-
70-
async function isTeamMemberByResolvedSlug(preferredSlugs) {
71-
const resolved = await resolveTeamSlug(preferredSlugs)
72-
if (!resolved) return false
46+
async function isTeamMember(team_slug) {
7347
try {
7448
const res = await github.rest.teams.getMembershipForUserInOrg({
7549
org,
76-
team_slug: resolved,
50+
team_slug,
7751
username: actor,
7852
})
7953
return res?.status === 200
8054
} catch (err) {
81-
console.log(`Membership check failed for slug ${resolved}`, err)
55+
// 404 means not a member or team not visible to token
8256
return false
8357
}
8458
}
8559
86-
const isAdminOrg = await isOrgAdmin()
87-
const isAdminTeam = await isTeamMemberByResolvedSlug(['admin','admins','owners'])
88-
const isClientLibs = await isTeamMemberByResolvedSlug(['client-libs','clientlibs','client-libraries'])
89-
const isMember = Boolean(isAdminOrg || isAdminTeam || isClientLibs)
60+
const isAdmin = await isTeamMember('admin')
61+
const isClientLibs = await isTeamMember('client-libs')
62+
const isMember = Boolean(isAdmin || isClientLibs)
9063
core.setOutput('is_team_member', isMember ? 'true' : 'false')
9164
9265
- name: Fail if not authorized

0 commit comments

Comments
 (0)