0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Redmine を GitLab に移行する

Last updated at Posted at 2020-08-02

Trac/Redmine+Subversion+Jenkinsなどを捨ててGitLabに移行するまでの道のり

概要

とりあえずこんな感じ。以下説明。

overview

前回の話

前回、Trac を Redmine 経由で GitLab に移行するで、Trac を Redmine 経由で GitLab に移行できた。

これは、Trac の Ticket Id がプロジェクト毎に #1, #2, #3, ... なのが GitLab でもプロジェクト毎に Issue Id が #1, #,2 #3, ...となるからシンプルに移行できた。
Redmine の場合は #1(proj-A), #2(proj-B), #3(proj-A), ...とシステムで一意となる

  • proj-A
    • #1
    • #3
    • ...
    • #100
    • #200
    • ...
  • proj-B
    • #2
    • #101
    • ...
    • #199
    • ...

ちょっと嫌な仕様なので困る。

Redmine to Gitlab migratorの対応

こちら

You can retain the issues ID from redmine, this cannot be done via REST API, thus it requires direct access to the gitlab machine.
So you have to log in the gitlab machine (eg. via SSH), and then issue the commad with sufficient rights, from there:

一旦、-RM-{ Redmine Id }-MR-という形で Issue Title の頭に Redmine の Id 情報を付与しインポート。その後、直接データベース(PostgreSQL)を操作して、Id を書き換える機能が実装されている(昔、評価したときにはこの機能は実装されていなかったと記憶している)。しかし、これは REST API 経由で操作できないので、GitLab 本体と Redmine to Gitlab migrator が同じインスタンスで動いている必要がある(Omnibus 版を前提としているようで/opt/gitlab/embedded/bin/psql コマンドを呼び出している。ちなみにsameersbn/gitlabなどはpsqlなどのパスが異なる)

私の対応

Trac からの移行同様に GitLab を一時的な Docker container で起動し、移行作業完了後、 Export/Import で本番環境へ移行することにした。

同時にこの GitLab の中に Redmine to Gitlab migrator も組み込み、 Issue Id の対応を図った。

オリジナルを Fork し、 Dockerfiledocker-compose.yml を追加。

先程、 Pull Request を出したがどうなるか?
→ 無事 Mergeされたので本家を使えば良いです。 :smile:

作業方法

README.md に追加した通り。

作業用 GitLab を Docker 上に立ち上げる

$ export GITLAB_HOME=$PWD/srv/gitlab
$ docker-compose up -d

localhost:8081 で GitLab が立ち上がる。

Milestone/Issueの移行

Trac を Redmine 経由で GitLab に移行するで書いたことと同様。

$ docker-compose exec migrator migrate-rg issues --redmine-key xxxx --gitlab-key xxxx \
    http://redmine.example.com/projects/test \
    http://localhost:8081/test/test
INFO: Getting redmine issues
INFO: Converting issues
INFO: Creating gitlab issues
INFO: #1 -RM-83-MR-バグだよ
INFO: #2 -RM-84-MR-新しい機能をついかしてくれー
INFO: #3 -RM-88-MR-サポートよろしく
INFO: #4 -RM-93-MR-バグその2

この段階では、Redmineでこんな感じのものが、
redmine-issue.png
GitLabでこんな感じに
gitlab-issue-1.png

Redmine Issue Id の変換

docker-compose exec migrator \
  migrate-rg iid --gitlab-key xxxx \
  http://localhost:8081/mygroup/myproject

INFO: Ready to recover iid for 4 issues.
INFO: Migrated successfully iid for 4 issues

これで、きちんと Redmine と同じ Id に揃えて--RM-XX-RM--も消えてくれる!
gitlab-issue-2.png

本番環境への移行

こちらも、Trac を Redmine 経由で GitLab に移行するで書いたことと同様。

まとめ(Redmine → GitLab)

  • 懸念していた Issue Id もいい感じで変換できた(実はまだ本番環境で試しておらず、自宅での個人テストだが)。
  • Wiki は変換できないので後日楽な方法を考える(Trac 同様)

つづく(?)

Trac/Redmine 共に Wiki の移行方法について考えようかな?

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?