0. 基本的には竹添さんのブログを参照してください。
GitBucketをPostgreSQLやMySQLで動かす
※プラグインを入れている場合やデータ量が多い場合は、こちらも参照すると参考になるかもしれません。
1. PostgresSQL に GitBucket 用 User と DB を 用意してください。
Postgres SQL で ユーザとデータベースを作成し、ユーザにデータベースを割り当てる方法 を 参照。
2. GitBucket 用 のテーブル・その他を用意する。
2-1. gitbucket.warをダウンロード します。
2-2. ローカルPCから、一度「java -jar gitbucket.war」なりで、GitBucketを立ち上げて、GitBucket ホームを作成します。
2-3. GitBucket ホームにできた「database.conf」に 先ほど作成した、PostgreSQL の gitbucket 用の接続先を指定してください。
db {
url = "jdbc:postgresql://[PostgreSQL URL]:5432/gitbucket_db"
user = "gitbucket"
password = "xxxxxxxx"
}
2-4. もう一度「java -jar gitbucket.war」を実行することで、自動でテーブル・その他が作成されます。
3. GitBucket から データをエクスポートします。
GitBucket の 管理者機能である Data Export/Import 機能を使ってSQLを取得してください。
4. 既存のGitBucketを止めてください。
5. GitBucket の データをインポートします。
5-1. 既に root というユーザは作成されているので、Export した SQL から削除してください。
5-2. 初回インポートの場合が多いはずなので、DELETE FROM の部分も必要ないので削除してください。
5-3. データ量が多いと Data Export/Import 機能からインポートできないので、
pgAdmin なりを 利用して Export した SQL を実行してください。
6. シーケンスの更新をしてください。
竹添さんのブログに書かれてあるシーケンスの更新以外に更新する必要があるものがあります。プラグインを利用していないとしても priority_priority_id_seq は新規リポジトリを作成する際に必要になるのでご注意ください。
SELECT setval('access_token_access_token_id_seq', (select max(access_token_id) + 1 from access_token));
SELECT setval('activity_activity_id_seq', (select max(activity_id) + 1 from activity));
SELECT setval('commit_comment_comment_id_seq', (select max(comment_id) + 1 from commit_comment));
SELECT setval('commit_status_commit_status_id_seq', (select max(commit_status_id) + 1 from commit_status));
SELECT setval('deploy_key_deploy_key_id_seq', (select max(deploy_key_id) + 1 from deploy_key));
SELECT setval('gist_comment_comment_id_seq', (select max(comment_id) + 1 from gist_comment));
SELECT setval('gpg_key_key_id_seq', (select max(key_id) + 1 from gpg_key));
SELECT setval('issue_comment_comment_id_seq', (select max(comment_id) + 1 from issue_comment));
SELECT setval('label_label_id_seq', (select max(label_id) + 1 from label));
SELECT setval('milestone_milestone_id_seq', (select max(milestone_id) + 1 from milestone));
SELECT setval('priority_priority_id_seq', (select max(priority_id) + 1 from priority));
SELECT setval('release_asset_release_asset_id_seq', (select max(release_asset_id) + 1 from release_asset));
SELECT setval('ssh_key_ssh_key_id_seq', (select max(ssh_key_id) + 1 from ssh_key));
7. database.conf を 書き直して GitBucket を起動してください。
db {
url = "jdbc:postgresql://localhost/gitbucket_db"
user = "gitbucket"
password = "xxxxxxxx"
}
# PostgresSQL が localhost の 場合はポート5432は不要です(ポートを変えていたら必要になります)