気づき #902
Updated by 奈良 裕記 almost 5 years ago
Redmine本家チケットのコピー/VoteCount集計
アドベントカレンダーの21日目です。
h1. 作成方法
h2. 事前準備
・Redmine本家のアカウント作成(ID/PASSでログイン)
・転送先のサーバインスタンス作成(新規Redmineを強く推奨)
・以下は転送先サーバ上作業
・Redmineをインストール。
・管理者権限の作業用アカウント作成、REST-API有効化、APIキー作成
RESTによるWebサービスを有効にする
・Python-redmineをインストール(参考サイト)
・Python-redmineでRedmineにアクセスできることを確認
・本チケット添付のファイルを展開
(redmineorg_copy.py , redmineorg_copy_sub.py , authinfo.py , presetting.py)
(custom_fields.sql , custom_fields_trackers.sql,trackers.sql)
---
h2. 認証情報の設定
authinfo.pyに、下記情報を設定して保存してください。
redmine.orgのID/PASS redmine_org_id , redmine_org_pass
転送先RedmineのAPI-KEY redmine_copy_key
転送先RedmineのURL redmine_copy_url
転送先RedmineのURL欄は、IPアドレスではなく、逆引き可能なURLを記入してください
---
h2. カスタムフィールド定義の設定
現在のRedmine REST-APIに追加機能はありません。
カスタムフィールド定義の手動作成は面倒だし、決め打ちにした方が転送作業も楽です。
→カスタムフィールド、トラッカー定義については、作成済サーバの定義内容をSQLで直接設定します。
注意! 下記登録を行うと、既存のカスタムフィールドとトラッカーの定義が上書きされます。
mysqlのログインID=redmine,PASS= pass-word1の場合の実行例
mysql -u redmine -ppass-word1 redmine < custom_fields_trackers.sql
mysql -u redmine -ppass-word1 redmine < custom_fields.sql
mysql -u redmine -ppass-word1 redmine < trackers.sql
カスタムフィールド、トラッカーが作成されていることを確認してください。
---
h2. Redmine本家のversion,issue_categoriesの転送
REST-APIで実施します。
・転送先Redmineにプロジェクト作成(identifier=redmineorg-copy)
・Redmine本家のバージョン定義内容を読み出して、転送先Redmineに設定。
・Redmine本家のカテゴリ定義内容を読み出して、転送先Redmineに設定。
注意! 下記登録を行うと、既存のバージョンととカテゴリ定義内容が上書きされます。
python ./presetting.py
転送先Redmineプロジェクトに、バージョンとカテゴリ定義が追加されていることを確認
補足
Redmine本家の定義番号と合わせるため下記実施。
・最大の番号を取得し、ダミー定義作成。
・Redmine本家の定義内容を参照し上書き。
(手抜きモードです。未定義分エラー回避のため、不要な項目をコメントアウト。本家削除済分ID残り)
---
h2. Redmine本家のチケット転送
上記が成功している前提で実行
python ./redmine_org_copy.py
数千件実行するとException発生します。
上記を再度実行してください。
補足
再実行は、転送済チケット数を確認し、その番号から転送再開します。
途中のチケット削除/アクセス禁止があれば、ずれます。
(Redmine本家では実質的に問題ありませんが、普通の環境の場合にはチケット番号の確認必要です)