CodeCommitは非常に便利なソース管理サービスではありますが、未だ発展途上なイメージがあります。
正直、ソース管理サービスでしたら、現状GitHubに勝るものはないと思います。
コード管理をGitHubからCodeCommitに移行したいけど、いきなりはちょっと不安といった方は、まずはGitHubリポジトリをCodeCommitリポジトリにミラーリングするといった方法を取ると良いでしょう。
GitHubでコードを管理しつつ、CodeCommit側での挙動も確認できますし、CodeCommit初心者には非常にオススメです。
本記事では、GitHubのリポジトリをCodeCommitリポジトリにミラーリングする手順を公開します。
概要
本記事の概要を以下に記載します。
本記事の目的
GitHubリポジトリをCodeCommitリポジトリへミラーリングする。
作業工程
本記事の大まかな作業手順を以下に記載します。
- SSH鍵の作成
- IAMユーザへ公開鍵を登録
- GitHubリポジトリへSecretを登録
- GitHubリポジトリにてGitHubアクションを実行
事前準備
本記事の手順を進める上で、事前に以下の準備をお願いします。
- GitHubにてリポジトリが作成済みであること
- CodeCommitにて空のリポジトリが作成済みであること
- CodeCommitへの権限を持っているIAMユーザが作成済であること
SSH鍵の作成
GitHubとCodeCommitのミラーリングにはsshプロトコルを使用します。
ですので、各サービスを連携させる為のSSH鍵を作成する必要があります。
以下コマンドを実行して、SSH鍵を作成します。
$ pwd
/home/ec2-user/.ssh/
# SSH鍵の作成
$ ssh-keygen -t rsa -b 4096 -m PEM -C <メールアドレス>
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ec2-user/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in id_rsa_nopass.
Your public key has been saved in id_rsa_nopass.pub.
The key fingerprint is:
SHA256:mnUBnJ+Idya8EQNsnkJYUTveaAA2rnsvEAY49NQybKc <メールアドレス>
The key's randomart image is:
+---[RSA 4096]----+
|o.=+++oo.. |
~~~ 略 ~~~
| .. |
+----[SHA256]-----+
カレントディレクトリ内に以下公開鍵と秘密鍵が作成されていることを確認します。
# 鍵の生成を確認
$ ls
id.rsa id.rsa.pub
IAMユーザへ公開鍵を登録
生成された公開鍵(id.rsa.pub)をIAMユーザへ登録します。
AWSマネージメントコンソールを開き、画面上部の検索バーから「IAM」と検索します。
「IAM」コンソール画面左ペイン「アクセス権限」-「ユーザ」をクリックします。
対象ユーザーを選択し、「認証情報」タブ -「AWS CodeCommit の SSH キー」-「SSHパブリックキーのアップロード」をクリックします。
ポップアップが表示されますので、入力フィールドに先程生成した公開鍵(id.rsa.pub)の中身を貼り付け、公開鍵をアップロードします。
IAMユーザに公開鍵が登録されたことと、SSH キー IDをコピーしてメモ帳に控えておきます。
GitHubリポジトリへSecretを登録
GitHubリポジトリの認証情報に秘密鍵(id.rsa)とIAMユーザの認証情報を登録します。
分かりやすく言えば、~/.ssh/configにユーザ名と秘密鍵のパスを通すイメージです。
以下、手順を実行して下さい。
GitHubにて、ミラーリング対象のリポジトリを開きます。
「Settings」タブを開きます。
左ペイン「Secrets」-「Actions」をクリックします。
「Actions secrets」にて、画面右上「New repository secrets」から以下の認証情報を登録します。
- 秘密鍵
- Name:CODECOMMIT_SSH_PRIVATE_KEY
- Value:秘密鍵の中身
- SSHキーID
- Name:CODECOMMIT_SSH_PRIVATE_KEY_ID
- Value:SSHキーID
「Actions secrets」にて、「CODECOMMIT_SSH_PRIVATE_KEY」と「CODECOMMIT_SSH_PRIVATE_KEY_ID」が登録されていることを確認します。
GitHub Actionsを実行
ミラーリングの設定自体はGitHub Actionsにて実行します。
GitHubにて、ミラーリング対象のリポジトリを開きます。
「Actions」タブを開きます。
画面左ペイン「New WorkFlow」をクリックします。
「Choose a workflow」項目の下にある「set up a workflow yourself 」をクリックします。
main.ymlの中身を一旦全て削除し、以下のコードを貼り付けます。
name: Mirroring
on: [ push, delete ]
jobs:
to_codecommit:
runs-on: ubuntu-18.04
steps:
- uses: actions/checkout@v1
- uses: pixta-dev/repository-mirroring-action@v1
with:
target_repo_url:
ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/xxxxx
ssh_private_key:
${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY }}
ssh_username:
${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY_ID }}
コード内の「target_repo_url:」をCodeCommitリポジトリのSSHURLに修正します。
修正後、画面右上「Start Commit」よりActionsファイルをコミットします。
コミット後、GitHub Actionsが自動実行されます。
※Actions画面からから実行ログを確認することができます。
動作確認
GitHubリポジトリの中身がCodeComitリポジトリにミラーリング(反映)されていることを確認します。
まとめ
ミラーリングと聞くと大変そうなイメージがありますが、上記手順の通り、簡単にミラーリングを行うことができます。
注意点としては、GitHub ⇒ CodeCommitとミラーリングしているので、CodeCommit側で更新をかけてしまうとGitHubのバージョンと差異がでてしまう為注意が必要です。
コメント