1. codeCommit側にリポジトリを適当に作っておく
直感的に操作できるのでかんたんに作れる.
2. パスフレーズなし秘密鍵をローカルの.sshで生成
ssh-keygen -t rsa -b 4096 -m PEM -C -f <filename> <githubアカウントメールアドレス>
注:OpenSSHの構成がOpenSSH 7.8から変わりヘッダが
-----BEGIN RSA PRIVATE KEY-----
から
-----BEGIN OPENSSH PRIVATE KEY-----
に変わり、ActionでのSSH接続が失敗する場合がある.
その対策のため、-m PEM
をオプションに追加してSSH鍵を生成する.
参照記事URLhttps://qiita.com/miu200521358/items/8e2875e9c96249261f66#02-パスフレーズなしのssh鍵を生成するローカル
3. 公開鍵をIAMに登録する
pbcopy < ./<filename>.pub
上記コマンドでローカルの~./sshで作成した公開鍵の内容をコピー
IAMの「AWS CodeCommit の SSH キー」にある「SSH パブリックキーのアップロード」に登録する.
4. githubのSecretsに秘密鍵とSSHキーIDを登録する
codecommitと連携させるgithubリポジトリのsettingタブ内にある、Secrets->Actionsから「new repository secrets」を選択.
codecommitのSSHキーに登録する際に、生成した秘密鍵(<filename>
)とcodecommitに登録した公開鍵のID(SSHキーID)を変数化する.
pbcopy < ./<filename>
上記コマンドで秘密鍵の内容をローカルの./sshからコピーする。
公開鍵のID(SSHキーID)はIAMのコンソール画面から確認可能
CODECOMMIT_SSH_PRIVATE_KEY = ローカルで作成した秘密鍵と一緒に生成された秘密鍵(<filename>)
CODECOMMIT_SSH_PRIVATE_KEY_ID = AWS CodeCommitのSSHキーIDを入力
5. .gitattributesファイルを生成する
このファイルでcodecommitにミラーリングするべきでないファイルなどを制御できる.
6. Git Actionからミラーリング設定を行う
ミラーリングさせたいgithubリポジトリのActionタブから「set up a workflow yourself→」をクリック.
デフォルトのmain.ymlのまま以下のコードを貼り付け.
参照元URLhttps://hikari-blog.com/github-codecommit-mirroring/
※2023/07/28 ubuntuのversionを更新しました(18.04が非推奨になっていたため)
name: Mirroring
on: [ push, delete ]
jobs:
to_codecommit:
runs-on: ubuntu-22.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/<repository-name>
ssh_private_key:
${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY }}
ssh_username:
${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY_ID }}