Redmineを遠隔操作してプロジェクトを新規作成するソースコードを書いたよ
誰でも簡単にCentOS上にRedmineやJenkinsが導入できる、Alminiumと言う日本発の素晴らしいプロジェクトがあります。
そのAlminiumで構築したRedmineに既存のソースコードを大量に登録して、リビジョングラフとかを見て何かを管理している気分に浸りたい訳です。
調べてみるとRedmineにはAPIがある模様。
これを利用してリストをバッチ処理するのが現実的かも。
てなわけで、試しにRubyでプロジェクト作成APIを叩いてみました。
ソースコードと呼ばれるプログラムの設計図
RedmineでのAPI認証は、APIキーを使用するものとHTTPのBASIC認証(管理者のユーザ名・パスワード)が選択出来ます。
httpsで運用してない場合はどっちの方式もセキュリテリィ的にノーガードなので、よりお手軽なBASIC認証を使ってます。
ちなみに、ドキュメントには無いですが(うらわざ〜)scmタグでバージョン管理システムの種類を指定してやるとリポジトリも一緒に作ってくれます。
(ここではGitにしてます。)
#! /usr/bin/ruby # coding:utf-8 require 'net/http' PJ_ID="redminehaxahaxa" PJ_NAME="れっどまいんちゃんハァハァ" PJ_DESC="れっどまいんちゃん可愛いよ可愛いよ可愛いよさぁ・・・脱" Net::HTTP::version_1_2 # プロジェクトの作成 req = Net::HTTP::Post.new("/projects.xml") req.basic_auth("admin", "admin") req.content_type = "application/xml" req.body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <project> <name>#{PJ_NAME}</name> <identifier>#{PJ_ID}</identifier> <description>#{PJ_DESC}</description> <scm>Git</scm> </project> " Net::HTTP::start("localhost") { |http| res = http.request(req) if res.code.to_i != 201 then raise res.body end } # ユーザの登録 req = Net::HTTP::Post.new("/projects/#{PJ_ID}/memberships.xml") req.basic_auth("admin", "admin") req.content_type = "application/xml" # admin:1決めうち user_id = 1 # 3:管理者、4:開発者、5:報告者 req.body = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <membership> <user_id>#{user_id}</user_id> <role_ids type=\"array\"> <role_id>3</role_id> <role_id>4</role_id> <role_id>5</role_id> </role_ids> </membership> " Net::HTTP::start("localhost") { |http| res = http.request(req) if res.code.to_i != 201 then raise res.body end }
実行してみる
Redmineに今にも逮捕されちゃいそうなプロジェクトが生成されれば成功です。

- 作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未
- 出版社/メーカー: オーム社
- 発売日: 2011/07/16
- メディア: 単行本(ソフトカバー)
- 購入: 41人 クリック: 1,977回
- この商品を含むブログ (229件) を見る

- 作者: 岡本隆史,武田健太郎,相良幸範
- 出版社/メーカー: 技術評論社
- 発売日: 2012/07/10
- メディア: 単行本(ソフトカバー)
- 購入: 7人 クリック: 98回
- この商品を含むブログ (17件) を見る