これは何?
- Jenkins から Redmineのチケット操作したいなーと考えて、REST APIを使って叩くことにした。
- でも、REST APIをベタで作るのは馬鹿らしいのでLibraryを探した。
- その結果、GETはできても、POST(UPDATE系)がダメっぽい事実。
JavaからRedmineを操作できるLibraryは?
※ 自分で作るきはさらさらない。
※ 一旦ライセンスとか気にしない。
Java での REST API の使用法 を参考に3つの選択肢があることを知る。
Library名 | コメント |
---|---|
Jredmine | × : よくわからない。Javaのライブラリではない? |
redmine-jconnector | × : redmine1.4 対象なのできつい。2.5.2 or 2.6 で動作させたい |
Redmine Java API library from taskadapter | ○ : 動いた。 |
Redmine Java API library from taskadapter の感想
Redmine Java API library from taskadapter の version : 2.0.0
GET系は動く模様。サンプルソース
RedmineManager mgr = RedmineManagerFactory.createWithApiKey(uri, apiAccessKey);
IssueManager issueManager = mgr.getIssueManager();
List<Issue> issues = issueManager.getIssues(projectKey, queryId);
for (Issue issue : issues) {
System.out.println(issue.toString());
System.out.println(issue.getDescription());
}
POST系(UPDATE系)が動かない模様
※ しかもExceptionも何もなく、無反応。プログラムは正常に終了するがRedmine側に反映されない模様。
※ Redmine2.5.2 でも 2.6.0でも両方試したが。ダメだった。
※ APIの呼び方が悪いのか・・・?悪いなら指摘いただきたき。
Issue i = issues.get(0);
i.setSubject("CHANGED");
i.setAssignee(currentUser);
i.setNotes("FUGA");
mgr.getIssueManager().update(i);
ただし、Deleteは動く模様。
mgr.getIssueManager().deleteIssue(0); #動いた
コメント
- JenkinsだからJavaでやるみたいな短絡的発想。じゃなくて、Rubyとかで書けばいいのにって言うことなのかな。だって、Java好きなんだもん。