🛵

Github ActionsでSSHを利用しsubmoduleをcloneする

2021/04/05に公開

こちらの方法はpublic,privateに関係なく利用することができます。

手順

  • ローカル環境でssh keyを生成
  • submodule元のリポジトリにreadのみの権限でpublic keyを登録
  • actionsでprivate keyを利用しgit submoduleコマンドを使用する

詳しく説明します。

ローカル環境でssh keyを生成

こちらについては他に記事があるため説明を省略しますが、普段利用するkeyと同じレベルのものを使用すると良さそうです。

submodule元のリポジトリにreadのみの権限でpublic keyを登録

すでに知っている方もいると思いますが、githubはリポジトリごとにssh keyを登録することが可能です。
加えてkeyに対して書き込みの可否を制限することもできます。

先ほど用意したssh keyのpublic keyをsubmoduleのリポジトリにリードのみの権限を与えて登録します。

actionsでprivate keyを利用しgit submoduleコマンドを使用する

最後に利用したいActions内でprivate keyをマシンに一時的に配置します。
この時private keyはsubmoduleを利用するrepositoryのActions secretsにsecretとして登録します。

下記は大分適当ですが、Actionで登録したsecretを使用し、sshを利用することができます。念の為作成したkey fileは利用後削除するようにしましょう。

steps:
  - uses: actions/checkout@v2
  - name: SSH Setting
    env:
      TOKEN: ${{ secrets.SUBMODULE_ACCESSKEY }}
    run: |
      mkdir -p /home/runner/.ssh/
      echo -e "$TOKEN" > /home/runner/.ssh/id_rsa
      chmod 600 /home/runner/.ssh/id_rsa
  - name: checkout submodules
      shell: bash
      run: git submodule update --init --force --recursive

Discussion