0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GiteaからGitLabへ移行しよう! — もっとGitLabを使いこなすための第一歩

0
Posted at

GiteaからGitLabへ移行しよう! — もっとGitLabを使いこなすための第一歩

はじめに

「今使っているソースコード管理システム、なんとなく使い続けているけど、もっと良いものがあるんじゃないか?」

そう思ったことはありませんか?

GiteaはシンプルなセルフホストGitサービスとして人気ですが、GitLabには CI/CD、コードレビュー、Issue管理、セキュリティスキャン など、開発ライフサイクル全体をカバーする機能が揃っています。

この記事では、GiteaからGitLabへの移行手順 を、公式ドキュメント(GitLab 17.8時点)をもとにわかりやすく解説します。移行は思ったよりずっと簡単です。一歩踏み出して、GitLabの世界を体験してみましょう!


移行でできること・できないこと

まず、Giteaインポーターが対応しているアイテムを確認しましょう。

Gitea上のデータ インポート対応
リポジトリの説明 対応
Gitリポジトリデータ 対応
Issues 対応
プルリクエスト 対応
マイルストーン 対応
ラベル 対応
プルリクエストのDiffノート 非対応

主要なデータはほぼ移行できます。Diffノート(レビューコメント)は現時点では非対応のため、必要に応じて手動での移行を検討してください。


バージョン要件・前提条件

移行を始める前に、以下を確認してください。

  • Gitea 1.0.0 以降 が必要です
  • GitLabで Giteaインポートソース が有効になっていること
    • GitLab.comでは デフォルトで有効
    • セルフマネージドの場合は管理者に確認またはご自身で設定が必要
      • 設定場所:管理エリア > 設定 > インポートとエクスポートの設定
  • インポート先のグループまたはネームスペースで Maintainer または Owner ロール が必要(GitLab 16.0以降)

バージョン別の重要な変更点

GitLabバージョン 変更内容
15.8 存在しないネームスペース・グループの自動作成が廃止。個人ネームスペースへのフォールバックも廃止
16.0 / 15.11.1 / 15.10.5 インポートに必要なロールがDeveloperからMaintainerに変更
16.11 パスに . を含むプロジェクトのインポートが可能に
17.2 一部のインポートアイテムに「Imported」バッジが表示されるように
17.8 GitLab.comおよびGitLab Self-Managed で、移行後のユーザーコントリビューション・メンバーシップマッピング機能が有効化

移行手順:ステップバイステップ

ステップ1:GitLabで新規プロジェクトを作成する

  1. GitLabの右上にある 「新規作成」 から 「新規プロジェクト/リポジトリ」 を選択
  2. 「Gitea」 を選択してインポート認証フローを開始

ステップ2:GiteaでPersonal Access Tokenを発行する

GiteaはOAuthプロバイダーではないため、アクセストークンを使って認証を行います。

  1. Giteaのインスタンスで以下のURLにアクセス
    https://your-gitea-instance/user/settings/applications
    
  2. 「Generate New Token」 を選択
  3. トークンの説明を入力
  4. 「Generate Token」 をクリック
  5. 表示されたトークンハッシュをコピー(このタイミングしか表示されません)

ステップ3:GitLabにトークンを入力してリポジトリを一覧表示

  1. GitLabに戻り、コピーしたトークンをGiteaインポーターに貼り付け
  2. 「List your Gitea repositories」 をクリック
  3. GitLabがリポジトリ情報を読み込むまで待機

読み込みが完了すると、インポーター画面にリポジトリの一覧が表示されます。

ステップ4:インポートするリポジトリを選択して実行

各リポジトリには以下のステータスが表示されます:

  • インポート中:処理開始済み
  • 完了(緑):インポート済み
  • 「Import」ボタン:未インポート
  • 「Re-import」ボタン:インポート済み(再インポート可能)

インポートの方法は3通りあります:

  1. すべて一括インポート:左上の「Import all projects」を選択
  2. 選択してインポート:プロジェクト名でフィルタリングし、対象のみ選択
  3. 名前・ネームスペースを変更してインポート:権限があれば、インポート時にプロジェクト名や格納先を変更可能

プライバシー設定について
Giteaでprivateに設定されているリポジトリは、GitLabでもprivateとして作成されます。公開設定はそのまま引き継がれるので、意図せず公開されてしまう心配はありません。

「Imported」バッジについて(GitLab 17.2以降)
インポートされたIssue・マージリクエスト・コメント(IssueやMRへの返信)には 「Imported」バッジ が表示されます。「なぜバッジが付いているんだろう?」と疑問に思うことがあるかもしれませんが、これはインポートされたアイテムであることを示すものです。


ユーザーコントリビューションのマッピングについて

GiteaはOAuthプロバイダーではないため、Gitea上のユーザーとGitLab上のユーザーの自動マッピングはできません

そのため、デフォルトでは インポートを実行したユーザー(プロジェクト作成者) がコントリビューターとして設定されます。ただし、Issueについては元のGitea作者名を確認できます。

移行後マッピング(GitLab 17.8以降)

GitLab 17.8より、GitLab.comおよびGitLab Self-Managed の両方で「移行後ユーザーコントリビューション・メンバーシップマッピング」機能が利用可能になりました。インポート完了後に、コントリビューションを適切なユーザーに紐づける作業が行えます。

詳細は公式ドキュメントの post-migration user contribution and membership mapping を参照してください。

代替マッピング方法(GitLab 18.5以前のみ)

GitLab 18.5以前では、gitea_user_mapping フィーチャーフラグを無効化することで代替マッピング方法を使えます。ただし、この方法には以下の制限があります:

  • GitLab.comおよびGitLab 18.6以降のSelf-Managed / Dedicated では利用不可
  • 発見された問題は修正される予定がない

特別な理由がない限り、移行後マッピング(post-migration method)の利用を推奨します。


移行後に試してほしいGitLabの機能

せっかくGitLabに移ってきたなら、ぜひ以下の機能を活用してみてください!

CI/CDパイプライン (GitLab CI/CD)

.gitlab-ci.yml を置くだけで、ビルド・テスト・デプロイを自動化できます。GitHub Actionsと似た感覚で使えます。

マージリクエスト (Merge Request)

GitHubのPull Requestに相当する機能です。コードレビューはもちろん、承認ルールの設定や自動マージも可能です。

イシューボードとマイルストーン

カンバンスタイルのイシューボードで、チームのタスク管理が一元化できます。

セキュリティスキャン (GitLab Ultimate)

SAST(静的解析)やDependency Scanningなど、セキュリティ機能も充実しています。


まとめ

項目 内容
必要なGiteaバージョン 1.0.0以降
必要なGitLabロール Maintainerまたはオーナー(16.0以降)
ユーザーマッピング 移行後マッピングを推奨(17.8以降)
主な非対応データ プルリクエストのDiffノート

GiteaからGitLabへの移行は、思ったよりずっとスムーズに行えます。まずは1つのリポジトリを試しにインポートしてみて、GitLabの豊富な機能を肌で感じてみてください。

開発体験がきっと変わるはずです。GitLabを使いこなして、チームの生産性を一段階上げていきましょう!


参考リンク

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?