main() blog

プログラムやゲーム、旅、愛する家族について綴っていきます。

【Jenkins】slack通知で2回に1回通知に失敗する場合の対処方法

pipelineで作成したジョブで、同じジョブ内で連続してslack通知を行うと2回に1回送信されないという不具合が起きた時の対処方法です。
pipelineでも最後の通知のみでジョブを連続で実行した場合や、フリースタイルでも同様の不具合が起きている可能性もありますが、今回はpipelineの同じジョブ内で2回通知を送った際にこの現象が発生しました。

以下の環境で動作確認などを行っています。
Windows10
Jenkins 2.426.2
jdk11

不具合が発生した際のjenkinsのログを確認したところ、javaSSL関連でエラーが出ていると思われます。

2023-12-01 08:12:47.493+0000 [id=2237]   WARNING j.p.slack.StandardSlackService#postToSlack: Error posting to Slack
javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
    at java.base/sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:516)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.verifyHostname(SSLConnectionSocketFactory.java:504)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.createLayeredSocket(SSLConnectionSocketFactory.java:437)
    at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:384)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108)
    at jenkins.plugins.slack.StandardSlackService.postToSlack(StandardSlackService.java:214)
    at jenkins.plugins.slack.StandardSlackService.publish(StandardSlackService.java:340)
    at jenkins.plugins.slack.StandardSlackService.publish(StandardSlackService.java:379)
    at jenkins.plugins.slack.StandardSlackService.publish(StandardSlackService.java:351)
    at jenkins.plugins.slack.workflow.SlackSendStep$SlackSendStepExecution.run(SlackSendStep.java:359)
    at jenkins.plugins.slack.workflow.SlackSendStep$SlackSendStepExecution.run(SlackSendStep.java:258)
    at org.jenkinsci.plugins.workflow.steps.SynchronousNonBlockingStepExecution.lambda$start$0(SynchronousNonBlockingStepExecution.java:47)
    at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:834)

こちでも同様の報告がありました。
github.com

今回、自分の場合はjdkを別のものに変更して試したところ解消されました。
試しにMicrosoftが提供しているjdk11のビルドを使用するようにしたところ現象が確認できなくなりました。

もしも同じような状況でお困りの場合はjdkのビルドを変更していただくと改善される可能性があるので試していただければと思います。