pipelineで作成したジョブで、同じジョブ内で連続してslack通知を行うと2回に1回送信されないという不具合が起きた時の対処方法です。
pipelineでも最後の通知のみでジョブを連続で実行した場合や、フリースタイルでも同様の不具合が起きている可能性もありますが、今回はpipelineの同じジョブ内で2回通知を送った際にこの現象が発生しました。
以下の環境で動作確認などを行っています。
Windows10
Jenkins 2.426.2
jdk11
不具合が発生した際のjenkinsのログを確認したところ、javaのSSL関連でエラーが出ていると思われます。
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のビルドを変更していただくと改善される可能性があるので試していただければと思います。