1. 導入:なぜSentryのIssueリンク機能が重要なのか
本番環境でエラーが発生した際、「どのコード変更が原因なのか?」を特定するために、ログを漁り、コミット履歴を遡る作業に時間を浪費していませんか。SentryのIssueリンク機能(GitHub連携)を導入すると、エラーが発生した際に「どのコミットが原因の可能性があるか(Suspect Commits)」をSentryが自動判定してくれます。これにより、調査の初動を劇的に短縮し、MTTR(平均復旧時間)を改善することが可能になります。
2. 基礎知識:オブザーバビリティを高める連携の仕組み
SentryがGitHubと連携することで、リリース情報とソースコードが結びつきます。
・Suspect Commits: エラー発生箇所に関連するコードを過去のコミット履歴から特定する機能です。
・Release Tracking: GitHubのコミットハッシュをSentryに送ることで、特定のリリースで混入したバグを可視化します。
・Issue Linking: SentryのIssue画面から直接GitHub Issueを作成したり、既存のIssueと紐付けたりすることで、開発者が文脈を切り替えずに対応を開始できます。
3. 実装/解決策:GitHub連携のステップ
1. Sentryの[Settings] > [Integrations]からGitHub Appをインストールします。
2. GitHubリポジトリへのアクセス権限を許可します。
3. デプロイ時にSentryへリリース情報を通知する設定を行います。CI/CDパイプライン(GitHub Actionsなど)でSentry CLIを利用するのが一般的です。
4. サンプルプログラム:GitHub Actionsでのリリース通知例
CI/CDパイプラインに以下のステップを追加することで、Sentryにリリース情報を伝え、連携を機能させます。
name: Deploy and Notify Sentry
on:
push:
branches: [ main ]
jobs:
sentry-release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
# Sentry CLIを使用して新しいリリースを作成
- name: Create Sentry Release
env:
SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
SENTRY_ORG: my-org
SENTRY_PROJECT: my-project
run: |
# リリースIDを生成(コミットハッシュを使用するのがベスト)
VERSION=$(git rev-parse –short HEAD)
# Sentryにリリース作成を通知
npm install -g @sentry/cli
sentry-cli releases new $VERSION
# コミット情報を紐付け(これでSuspect Commitsが機能するようになります)
sentry-cli releases set-commits $VERSION –auto
# リリース完了をSentryに通知
sentry-cli releases finalize $VERSION
5. 応用・注意点:現場で陥りやすい罠
・コミットの紐付け漏れ: `sentry-cli releases set-commits` を忘れると、Sentry上で「どのコードが原因か」が表示されません。必ずCIパイプラインのデプロイフローに組み込んでください。
・リリースバージョンの整合性: アプリケーション側のSentry初期化コードで設定する `release` プロパティと、CIで作成したリリースIDが完全に一致している必要があります。一致していないと、Sentryはリリース情報を正しく紐付けられません。
・セキュリティ: `SENTRY_AUTH_TOKEN` はGitHub Secretsに保存し、適切に権限を絞ったトークンを使用するようにしてください。
この仕組みを導入するだけで、障害対応時の「コードの海」を彷徨う時間がなくなります。まずは開発環境やステージング環境からでも導入を進めてみてください。

コメント