エラーのトラッキングソフトウェアにSentryを利用する機会があり、運用する中でSentryのRelease機能が便利だなと思ったので導入方法を執筆していきます。
この記事ではsentry-cli
を利用した設定方法を記述していきます。sentry-webpack-plugin
を使用した設定方法は扱いません。
SentryはAngularアプリケーションで利用していました。
Sentry Releasesとは
Sentry Releasesを利用するとどのバージョンでエラーが発生したのか特定できるようになり、バージョン別のエラーモニタリングが可能になります。
Sentryにリリースのバージョンとリリースのアーティファクトをアップロードすることで、利用できるようになります。
また、ソースマップをアップロードすることでstack traceがソースマップと関連付けられ、Minifyされてないコードで表示されるようになります。そうすることで、エラー原因となるコードが特定しやすくなります。
※ソースマップとは、デプロイされたコードを元のソースコードにマッピングする方法を含むファイルです。ソースマップによりstack traceから得たコードを、変換されてない元の形で見ることが可能になります。
SentryへのReleasesの登録方法
Sentryにリリースを登録したい場合、sentry-cliコマンドを利用し、下記を実行するだけです。
sentry-cli releases -o "$ORGANIZATION" -p "$PROJECT" new "$VERSION"
上記コマンドを実行してSentryにリリースを作成した後、アプリケーションでSentry.init()
を呼び出している箇所にrelease
を追加し、作成したリリースと同じバージョンを記述します。
一貫性を保証するために、リリースバージョンをプロジェクト内で環境変数として設定するのが良いかと思います。
import * as Sentry from "@sentry/angular";
...
Sentry.init({
dsn: ${YOUR_SENTRY_DSN},
release: ${VERSION}
});
ソースマップのアップロード方法
Sentryへのソースマップのアップロードにはsentry-cli releases files VERSION upload-sourcemaps
を使用します。
上記のアップロードコマンドをリリースフローに組み込むのが運用的にラクかと思います。
ソースマップのアップロードコマンドを実行した時点で、Sentryにリリースが作成されます。(sentry-cli releases new
と同等の働き)
下記コマンド例になります。
sentry-cli releases -o "$ORGANIZATION" -p "$PROJECT" files "$VERSION" upload-sourcemaps ${path_to_sourcemaps} --rewrite --url-prefix ~/static/js
--rewrite
オプションを付与すると対象のリリースに既にアーティファクトがアップロードされていても、上書きされます。
--url-prefix
オプションを付与するとアップロードする全てのファイルの前にプレフィックスが設定されます。デフォルトでは~/
が設定されているので、変更したい場合に使用します。stack trace上でのパスとアップロードするファイルのパスは一致している必要があるので、プレフィックスが異なる場合は--url-prefix
の設定が必須になります。
以上、SentryのReleaseの導入方法に関して簡単に紹介しました。
他にもリリースにデプロイやコミットを関連づけることも可能なので、エラーモニタリングをより効果的に運用できそうです。
参考
https://docs.sentry.io/product/cli/releases/
https://docs.sentry.io/platforms/javascript/sourcemaps/