Github から Azure DevOps にRepositoryを移行する
1. はじめに
最近、再び自分の中のAzure熱が高まったので Github に置いているPrivate Repository(C#)をAzure DevOpsに引っ越ししてみました。
ソース管理としてGithubは素晴らしいのですが、Azure DevOpsもCI/CD含めた統合環境として(特に.NETプロジェクトでは)素晴らしいようなのでちょっと遊びとして使ってみたいなぁ、というのが移行の動機です(あ、勿論Githubでも外部サービス含め、同様のCI/CD環境は得られるけど)。
という事で、ここではサンプルとして用意したGithub RepositoryをAzure DevOpsに移行してみます。
2. 移行元のGithub
移行元のGithub Repositoryは、Private の https://github.com/ryuichi111/ToAzureDevOpsMigrateTest.git というHelloWorldな.NET Coreコンソールアプリケーションを想定します。
SourceTreeで確認した状態は以下の通り。
当該Repositoryに対しては、以下のような操作が行われた状態です。
- message="init commit" として最初のソースをmasterにコミット/プッシュ
- message="modified message" としてHelloWorldのコンソール出力文字を変更したソースをmasterにコミット/プッシュ
- feature/interactiveブランチを切ってソース修正コミット/プッシュし、masterへのPRによりmerge
3. Github -> Azure DevOpsに移行する
3.1. プロジェクト作成
Azure DevOpsのホーム画面を表示します。
右上の「Create project」をクリック。
Project nameに「ToAzureDevOpsMigrateTest」と入力、Visibilityは「Private」、Version Controlは「Git」、Work item processは「Agile(まぁ、これはお好みで)」にします。
「Create」ボタンをクリックします。
3.2. Githubからインポート
プロジェクトが作成出来たら、左サイドバーから「Repos」をクリックします。
さらに、画面中央少し下の「import」をクリックします。
「Import a Git repository」ウィンドウが表示されるので、移行元のURLを「Clone URL」に、また、Username / Passwordを入力します。
3.3. GithubからPersonal Access Tokenを取得(二要素認証有効時のみ)
が・・・Githubで二要素認証を有効化している場合はパスワードで認証が通らないので、Github上で以下の操作を行って Personal Access Token を取得し、それを「Pasword / PAT」のテキストボックスに入力します。
Githubサイトに行き、「setting -> Developer settings -> Personal access tokens -> Generate new token」を選択します。
任意の説明を「Toke Description」に付け、repoへのスコープを付けて、画面下にある「Generate token」ボタンをクリックします(以下のキャプチャでは下のボタンは映っていませんが)。
トークンが生成されたのでコピーします。
Azure DevOps側の「Password / PAT」にトークンをペーストして「Import」ボタンをクリックします。
3.3. クローン中。。。
Github -> Azure DevOpsへのCloneが走って・・・
3.4. Azure DevOps上のRepositoryを確認
Azure DevOpsのRepo上でHistoryを確認してみましょう。
Commit / PR mergeの履歴含めてきれいに移行出来ました。
4. まとめ
GithubがMS傘下になり、これまでGithubに置いていた資産をAzure DevOpsに移行しても、なんだか変な安心感を覚えるように個人的にはなりました^^;;;
まぁ、少なくとも.NETプロジェクトに関してはAzure DevOpsに乗っかっていた方がCI/CDなど含め諸々のメリットが享受できそうな気がしています。
一昔前のMSであればお金を払わないと何もできなかった感じですが、最近のMSならこのAzure DevOpsに関しても個人としての入り口部分では無料でいろいろできますし。
ということで、僕はプライベートではAzure DevOpsを楽しんでいこうかと思います!(仕事はGithubだからいい感じにバランス取れてるでしょ)