Jenkins プラグインで外向きの HTTP リクエストを行う場合、Jenkins の公開プロキシ対応クライアントヘルパーを利用できます。

HttpClient client = ProxyConfiguration.newHttpClient();
HttpRequest request = ProxyConfiguration.newHttpRequestBuilder(
        URI.create("https://service.example/status"))
    .GET()
    .build();
HttpResponse<Void> response = client.send(
    request, HttpResponse.BodyHandlers.discarding());

この断片は hudson.ProxyConfiguration、java.net.URI、java.net.http の型を使います。入出力と中断の処理は、呼び出し側が通常のプラグインの流れで行います。ボディハンドラーはレスポンスボディを消費して破棄します。

newHttpClient とそのビルダーインターフェースは Jenkins 2.379 から利用できます。コントローラーの JVM では、Jenkins が対応するプロキシ設定が適用されます。リクエストごとに新しく作らず、クライアントを再利用してください。

これにより、コントローラーに保存されたプロキシのユーザー名とパスワードを、別途設定したトランスポートへ複製せずに済みます。コントローラーの画面にプロキシ項目があるというだけでは、別に作成した Java の HTTP クライアントはプロキシ対応にはなりません。

宛先へ Authorization ヘッダーを送るリクエストでは、Java 17 以降で文書化されている認証付きプロキシの制限を確認してください。Javadoc はこの組み合わせを明示しており、このヘルパーを選んでもクライアント側の制限は解消されません。

関連記事