JavaプログラムからプログラムでMavenのリリースを開始したい。 This webpageは一般的にどのように行われているかを示しています。だから、私がやったことだ:リモートからトリガーMavenを解放
final URL url = new URL("http://jenkins/job/MyProject/m2release/submit");
final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.setDoOutput(true);
final String userpass = "User:Password";
final String authentication = "Basic " + DatatypeConverter.printBase64Binary(userpass.getBytes());
urlConnection.setRequestProperty("Authorization", authentication);
try (final OutputStream os = urlConnection.getOutputStream();
final BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));) {
writer.write("releaseVersion=1.2.3&");
writer.write("developmentVersion=1.2.4-SNAPSHOT&");
// writer.write("isDryRun=on&"); // uncomment for dry run
writer.write("scmUsername=User&");
writer.write("scmPassword=Password&");
writer.write("scmCommentPrefix=[test]&");
writer.write("json={\"releaseVersion\":\"1.2.3\",\"developmentVersion\":\"1.2.4-SNAPSHOT\",\"isDryRun\":false}&");
writer.write("Submit=Schedule Maven Release Build");
writer.flush();
}
urlConnection.connect();
try (BufferedReader reader = new BufferedReader(
new InputStreamReader(urlConnection.getInputStream(), "UTF-8"))) {
for (String line; (line = reader.readLine()) != null;) {
System.out.println(line);
}
}
This forumは「あなたがリリースを行うbeforちょうどフォームを見て、あなたはcURLのリクエストを作ることができるはず」ことを示唆している、それは私がそこまで得るためにやったことです。リリースは少なくとも開始されます。
私は今、すべてをエスケープする方法はありません。ブラウザはスペースを "+"として表示しますが、データをそのように送信すると機能しません。実際、 ""、 "+"、 "%20"のいずれもスペースとしては機能しません。
まだ私はUnable to commit files
をビルドしているので、ユーザー名/パスワード/コメントプレフィックスに問題があることは間違いないと思います。 Jenkins自体は、ログインが送信されていても、ログインページ(「認証が必要」)を返します。
JenkinsでMavenリリースをトリガする正しい方法は何ですか?
仕事IすでにMavenプロジェクトです。そして、 "release"がパラメータだったならば、私はそれを設定することができます。しかし、そうではありません。これは、ジョブがMavenジョブとして宣言されると追加される任意のアクションです。 –