LoginSignup
1
1

More than 1 year has passed since last update.

GitHubへのPush時にAWS CodeCommitに任意のブランチを同期する

Last updated at Posted at 2021-10-14

以前、GitHubへのPush時にAWS CodeCommitにリポジトリを同期する方法をまとめました。

しかし、この方法はリポジトリをまるまるミラーリングするため、特定のブランチのみ同期したいという場合は使えません。
今回、GitHubの任意のブランチをCodeCommitの任意のブランチにGitHub Actionsから同期する方法を検討したためメモしておきます。

GitHubのSecretsに必要な情報を登録

GitHubの管理画面で、「Settings」 -> 「Secrets」から、必要な情報を登録します。
github secrets

登録する情報は下記となります。

  • CODECOMMIT_REPO_URL
    CodeCommitのリポジトリのURL

  • CODECOMMIT_SSH_CONFIG
    SSH接続するためのコンフィグ情報

Host git-codecommit.*.amazonaws.com
  User {CodeCommitのSSHキーID}
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  • CODECOMMIT_SSH_PRIVATE_KEY SSHシークレットキー

GitHub Actionsを設定

下記のコードを、GitHub Actionsのワークフローとして登録します。

name: "Deploy: main"

on: [ workflow_dispatch ]

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

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

      - name: Extract branch name
        shell: bash
        run: echo "::set-output name=branch::${GITHUB_REF#refs/heads/}"
        id: extract_branch

      - name: Push to AWS CodeCommit
        env:
          CODECOMMIT_HOST: git-codecommit.ap-northeast-1.amazonaws.com # ap-northeast-1の部分は自身のリージョンを指定
          CODECOMMIT_REPO_URL: ${{ secrets.CODECOMMIT_REPO_URL }}
          CODECOMMIT_SSH_CONFIG: ${{ secrets.CODECOMMIT_SSH_CONFIG }}
          CODECOMMIT_SSH_PRIVATE_KEY: ${{ secrets.CODECOMMIT_SSH_PRIVATE_KEY }}
          BRANCH_NAME: ${{ steps.extract_branch.outputs.branch }}
        shell: bash
        run: |
          mkdir ~/.ssh
          echo "$CODECOMMIT_SSH_PRIVATE_KEY" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
          echo "$CODECOMMIT_SSH_CONFIG" > ~/.ssh/config && chmod 600 ~/.ssh/config
          ssh-keyscan "$CODECOMMIT_HOST" >> ~/.ssh/known_hosts && chmod 600 ~/.ssh/known_hosts
          git remote add codecommit "$CODECOMMIT_REPO_URL"
          git push codecommit ${{ env.BRANCH_NAME }}:main -f # mainの部分はCodeCommitの同期したいブランチを指定

GitHub Actionsから同期を実行

GitHub Actionsから、CodeCommitに同期したいブランチを選択して「Run workflow」を実行することで、任意のブランチをCodeCommitのmainブランチにpushできます。
ワークフローの、CodeCommitの同期したいブランチを変更することで、任意のブランチと同期可能になります。
スクリーンショット 2021-10-15 3.04.10.png

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