3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GitHubからCodeCommitへのミラーリング方法とハマったこと

Last updated at Posted at 2022-12-28

はじめに

表題の通り、この記事は GitHub Actions によるミラーリングで、GitHub にあるレポジトリを CodeCommit へと同期する方法と、その際に詰まったポイントについて書いてあります。

参考にした記事

「そもそもGitHub Actionsを用いたミラーリングってどうするんだろう?」となっている人は以下三つの記事あたりに目を通してもらうと良いかと思います。

(この記事を参考にするだけでミラーリングに成功する方も多いと思いますが、ググっても解決方法が出なかった詰まりポイントがあったので続けます)

やったこと

上記の記事にあるようにまずローカルで SSH鍵を作成し、作成したキーを AWS の IAMユーザに登録しました。

次にGitHubの該当リポジトリのActions secretsにて

  • CONFIG
Host git-codecommit.*.amazonaws.com
  User ${IAMで登録したSSHキーID}
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null
  • SSH_PRIVATE_KEY
ローカルで作成した秘密鍵

を登録します。
(自分はマージされたことをトリガーにして、特定のブランチのみでミラーリングを動かしたかったので二つ目の記事を主に参考にしました)

そしてミラーリングしたいリポジトリの /.github/workflows/mirror.yml にて

name: Mirroring

on:
  pull_request:
    branches:
      - test-branch
    types: [closed]

jobs:
  push_to_codecommit:
    runs-on: ubuntu-latest
    if: github.event.pull_request.merged == true
    env:
      TARGET_MIRROR_REPOSITORY: ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repository
      REF: ${{ github.ref }}
    steps:
      - uses: actions/checkout@v1
        with:
          fetch-depth: 0
      - name: set-git
        run: |
          mkdir ~/.ssh                                            
          chmod 700 ~/.ssh                                        
          echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
          echo "${{ secrets.CONFIG }}" > ~/.ssh/config 
          chmod 600 ~/.ssh/id_rsa
          chmod 600 ~/.ssh/config
      - name: push
        run: |
          git remote add codecommit $TARGET_MIRROR_REPOSITORY
          git checkout $REF
          git push codecommit $REF

のように記載します。

これで設定は完了しました。
あとはこの mirror.yml にあるように test-branch に何か適当なブランチをマージすればできるはず!
……なんですが、あれ?
Error: Process completed with exit code 255.
というエラーでミラーリングが出来ない、、、

解決方法

色々試してみましたが結果、 Actions secrets に登録した CONFIG を以下のように書き換えると上手くいきました。

Host git-codecommit.ap-northeast-1.amazonaws.com
  User ${IAMで登録したSSHキーID}
  IdentityFile ~/.ssh/id_rsa
  StrictHostKeyChecking no
  UserKnownHostsFile=/dev/null

つまりHostの部分を
git-codecommit.*.amazonaws.comから
git-codecommit.ap-northeast-1.amazonaws.comに修正すると上手くいきました。

ちょっと原因がわかってないのでかっこよくないのですが、
mirror.yml の中で

TARGET_MIRROR_REPOSITORY: ssh://git-codecommit.ap-northeast-1.amazonaws.com/v1/repos/test-repository

と記載した部分が関わってるのかなと推察しています。
もしこの原因がわかる方がいらっしゃったらぜひコメントなどで教えていただきたいです。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?