JenkinsでCI/CDからSlack通知への挙動不具合
あくまでメモです。(誰かのご参考になれば)
JenkinsのSlack用プラグインを使いなさい。というご意見はごもっともですが、
諸事情から、shellから叩く方向で実施しています。
jenkinsの使い方
CI/CDツールにてバージョンが古いJenkinsを利用しておりました。
※ビルド・デプロイを実施
Jenkinのパイプライン処理(shell)の内部で、成功・失敗をSlackにSlack-API postMessageを利用し通知しています。
挙動不具合とは
実行されていない過去のビルド履歴がSlackに通知される。
調査
Jenkinsサーバーについては以下を調査しました。
ログ:不具合の挙動はログに記録されておらず。
プラグイン:既にインストールされているプラグインのアップデートは必要であったが、相関関係は認められず。
ジョブ履歴:ジョブ履歴のログローテートが未設定。肥大化していた。
対応
各ジョブの履歴にローテーション設定。
ログの肥大化を防いだところ、挙動不具合(Slackの過去分送信)は発生しなくなりました。
考察
ジョブの履歴のログローテーションを設定していないと、ビルド番号が大きくなるにつれ、
不具合などが発生する可能性が高い。
(=ジョブ履歴のログローテーションをしていないと、不具合の原因になる。)
対応
素直に、Jenkinsのバージョンアップを推奨します。
経緯としては、取消し線部分を対応しましたが、しばらくすると同じ事象が再発。
またJenkinsのJIRAチケットを見てみると、
・ログローテーションのバグ
・スケジュール設定時のバグ
など複数のチケットが報告されていることが確認できました。
結論
可能であれば、素直にJenkinsのバージョンを最新版にする。
がベストな選択なだと思います。
ここは推測ですが、Jenkins自体の不具合とプラグインの不具合が、本事象の原因かと考えれます。
ただし一つ一つ調べていくことは、非常に複雑で、時間がかかることから私は諦めました。笑
もしこのあたり同じ症状があった方いらっしゃいましたら、コメントなどで教えて頂けると助かります。
→ちなみに最新版にしたところ、特にトラブルは発生しておらず
エラーログも格段に減らすことができました。(半年ほど経っても特に問題 は発生していません。)
参考ページ