LoginSignup
2
0

More than 5 years have passed since last update.

テスト環境のマイグレーションに失敗した場合にコミッターを吊るし上げる

Posted at

やりたいこと

ソースのビルドでこけた場合はjenkinsが自動でよしなにしてくれるが、
内製ツールで社内のテスト環境のDBのマイグレーションをしているのでそれがこけた場合には自動では開発者に正しく通知できない
社内のテスト環境とはいえ、マイグレーションがこけるとごみデータができたりテストをブロックしたりするので、迅速に通知したい

やったこと

DBのマイグレーションツールは結果をログに吐く
そこから対象ファイルを特定し、前回の成功したジョブ時点でのコミット以降にそのファイルに変更を加えた人にslackでメンションする

使ったもの

git rev-list --format=%cE ${GIT_PREVIOUS_SUCCESSFUL_COMMIT}..HEAD $line | grep 弊社のメールアドレスの@以降 | perl -pe 's/\@弊社のメールアドレスの@以降//g'| sort | uniq
| perl -pe 's/^(.*)$/\@$1/g' 
  • git rev-listで特定のファイルのあるコミットから現在までのコミッターのメールアドレスを抽出する
  • そのうち@以前を抽出してslackのIDにする

スクリプト

cat migration.log | grep ERROR! | perl -pe なんかごちゃごちゃやって対象ファイルのパスを抽出する | xargs -I {} find . -name {} | perl -pe 's/\.\/(.*)/$1/g'> ERRORS

while read line
do
        echo $line >> suspects
        git rev-list --format=%cE ${GIT_PREVIOUS_SUCCESSFUL_COMMIT}..HEAD $line | grep 弊社のメールアドレスの@以降 | perl -pe 's/\@弊社のメールアドレスの@以降//g'| sort | uniq
| perl -pe 's/^(.*)$/\@$1/g' >> suspects
 done < ERRORS

jenkinsのslack notification pluginの設定

「高度な設定」(Advanced Settings)の
「Include Custom Message」にチェックを入れ、以下のイメージでメッセージを設定した

$ENV へのDBスクリプトの適用が完了しました。
コミット$GIT_COMMIT まで適用されています。

やらかしたかもしれない人リスト↓
${FILE, path="suspects"}
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0