🤝

GitHubへのPush時にAWS CodeCommitにリポジトリを同期する

2021/10/14に公開

AWS AmplifyでWebアプリを開発していてAWS CodeCommitへのpushをトリガーにデプロイされる、という環境で開発していたのですが、コードの管理はGitHubで行うという機会が有りました。

そのため、GitHub Actionsから任意のタイミングでAWS CodeCommitに同期してデプロイが実行されるという環境を作りたかったので、その時のメモです。

AWS CodeCommit SSHキーのアップロード

まずはAWSのIAMコンソールから、CodeCommitのSSHパブリックキーをアップロードして、SSHキーIDを取得します。
ssh key upload

GitHubのSecretsにSSHキー情報を登録

GitHubの管理画面で、「Settings」 -> 「Secrets」から、先程取得したSSHキーIDと、SSHパブリックキーに対応するシークレットキーを登録します。

今回は例として、 CODECOMMIT_SSH_KEY_ID にSSHキーID、 CODECOMMIT_SSH_PRIVATE_KEY にシークレットキーを登録しました。
github secrets

GitHub Actionsを設定

下記のコードを、GitHub Actionsのワークフローとして登録します。
target_repo_url には、CodeCommitのリポジトリのURLを指定してください。

name: "Deploy"

on: [ workflow_dispatch ]

jobs:
  build:
    runs-on: ubuntu-latest
    timeout-minutes: 5

    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          fetch-depth: 0

      - name: Push to AWS CodeCommit
        uses: pixta-dev/repository-mirroring-action@v1
        with:
          target_repo_url:
            ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/hoge
          ssh_private_key:
            ${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY }}
          ssh_username:
            ${{ secrets.CODECOMMIT_SSH_KEY_ID }}

以上でGitHub Actions実行時にCodeCommitにリポジトリが同期されます。
意外と簡単ですね!

Discussion