Skip to content

Commit

Permalink
📝 READMEにデプロイについて詳しく
Browse files Browse the repository at this point in the history
  • Loading branch information
ikura-hamu committed Aug 22, 2024
1 parent 8d249ed commit 46ed72c
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 2 deletions.
21 changes: 20 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,34 @@ Organizationメンバー管理用のtraQ bot

GoとMySQL(MariaDB)

### GitHub App

Organizationのメンバーの管理に、GitHub Appを使う。

[GitHub App インストールとしての認証](https://docs.github.com/ja/apps/creating-github-apps/authenticating-with-a-github-app/authenticating-as-a-github-app-installation#using-an-installation-access-token-to-authenticate-as-an-app-installation)

GitHub Appを作り、Organizationにinstallする。OrganizationのmembersのRead/Write権限を持たせておく。また、Private Keyをダウンロードしておく。

GitHub AppのInstallation IDが必要になるが、GitHubのUIからは確認できない。リポジトリルートの`installation_id.sh`を実行すると取得できる。

```sh
./installation_id.sh {GitHubAppのClient ID} {Private Keyのパス} {Org名}
```

(jqを使っているが、無い場合は最後の行をコメントアウトして`id`を見ればよい。)

### 環境変数

- `ACCEPT_STAMP_ID` 承認用スタンプのUUID
- `ACCEPT_STAMP_THRESHOLD` 何個スタンプがついたら承認とするか
- `ADMIN_GROUP_ID` adminのtraQ Group UUID
- `ADMIN_GROUP_NAME` adminのtraQ Group名
- `BOT_CHANNEL_ID` botが投稿するチャンネル
- `GITHUB_APP_ID` GitHub AppのID
- `GITHUB_APP_INSTALLATION_ID` GitHub AppのInstallation ID
- `GITHUB_APP_PRIVATE_KEY` GitHub Appの秘密鍵。改行を`\n`に置き変えたもの。
- `GITHUB_ORG_NAME` GitHubのオーガニゼーション名
- `GITHUB_TOKEN` GitHubのトークン
<!-- - `GITHUB_TOKEN` GitHubのトークン -->
- `INACTIVE_STAMP_ID` 操作を終えたメッセージに押すスタンプのUUID
- `REJECT_STAMP_ID` 却下用スタンプのUUID
- `REJECT_STAMP_THRESHOLD` 何個スタンプがついたら却下とするか
Expand Down
11 changes: 10 additions & 1 deletion jwt.sh → installation_id.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ client_id=$1 # Client ID as first argument

pem=$( cat $2 ) # file path of the private key as second argument

org_name=$3 # Organization name as third argument

now=$(date +%s)
iat=$((${now} - 60)) # Issues 60 seconds in the past
exp=$((${now} + 600)) # Expires 10 minutes in the future
Expand Down Expand Up @@ -36,4 +38,11 @@ signature=$(

# Create JWT
JWT="${header_payload}"."${signature}"
printf '%s\n' "JWT: $JWT"
# printf '%s\n' "JWT: $JWT"

curl -s -L \
-H "Accept: application/vnd.github+json" \
-H "Authorization: Bearer $JWT" \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/orgs/$org_name/installation \
| jq .id

0 comments on commit 46ed72c

Please sign in to comment.