以下の内容はhttps://kakakakakku.hatenablog.com/entry/2025/05/27/193453より取得しました。


GitHub Actions で GitHub Organization のチームに所属しているかどうかを判定する

GitHub Actions でワークフローを実行した GitHub アカウントが GitHub Organization のチームに所属しているかどうかを判定できる tspascoal/get-user-teams-membership を試してみた❗️tspascoal/get-user-teams-membership では大きく2種類の値を取得できる.

  • teams: 所属しているチーム一覧
  • isTeamMember: 指定したチームに所属しているかどうか

今回は isTeamMember を試す \( 'ω')/

github.com

準備

検証用の GitHub Organization にチームを2つ(adminsmembers)作った.そして,members チームに自分自身 (@kakakakakku) を所属させた😀

👾 get-user-teams-membership.yml

ワークフローは以下のように実装した.今回はサンプルとして「admins チームに所属していたら echo」「members チームに所属していたら echo」という条件付きのステップにした.

tspascoal/get-user-teams-membership に username / organization / team を指定すると if: ${{ steps.checkUserInAdmins.outputs.isTeamMember == 'true' }} という構文で取得できて,次のステップで制御に使える👌

name: Check user is in the team

on:
  workflow_dispatch:

jobs:
  main:
    runs-on: ubuntu-latest
    steps:
      - name: Check user is in the admins team
        uses: tspascoal/get-user-teams-membership@v3
        id: checkUserInAdmins
        with:
          username: ${{ github.actor }}
          organization: xxxxx
          team: admins
          GITHUB_TOKEN: ${{ secrets.FINE_GRAINED_PAT }}
      - name: Echo if user is in the admins team
        if: ${{ steps.checkUserInAdmins.outputs.isTeamMember == 'true' }}
        run: echo "${{ github.actor }} is in the admins team"

      - name: Check user is in the members team
        uses: tspascoal/get-user-teams-membership@v3
        id: checkUserInMembers
        with:
          username: ${{ github.actor }}
          organization: xxxxx
          team: members
          GITHUB_TOKEN: ${{ secrets.FINE_GRAINED_PAT }}
      - name: Echo if user is in the members team
        if: ${{ steps.checkUserInMembers.outputs.isTeamMember == 'true' }}
        run: echo "${{ github.actor }} is in the members team"

動作確認

期待通りに Echo if user is in the admins team はスキップされて,Echo if user is in the members team は実行された👏 イイ感じ〜

PAT (Personal access tokens)

ちなみに README に書いてある通り,tspascoal/get-user-teams-membership では GitHub Organization のチーム情報を取得するために PAT (Personal access tokens) が必要になる.実際に試したところ Personal access tokens (classic) でも Fine-grained personal access tokens でも動いた👌

  • Personal access tokens (classic) なら read:org
  • Fine-grained personal access tokens なら Organization permissions > Members > Read-only

最近(2025年3月)Fine-grained personal access tokens が GA になったこともあって,今回はこっちを使うことにした😀

github.blog

そして README に Fine-grained personal access tokens が使えることも書いてあると良いんじゃないかな〜と考えてプルリクエストも出してみた❗️

github.com

まとめ

GitHub Actions でワークフローを実行した GitHub アカウントが GitHub Organization のチームに所属しているかどうかを判定する場合に tspascoal/get-user-teams-membership が使える❗️実装も複雑ではなく src/index.js を読めば GraphQL クエリを実行してる流れも確認できて勉強になる👌




以上の内容はhttps://kakakakakku.hatenablog.com/entry/2025/05/27/193453より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14