🛵

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

1 min read

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

ここで利用するprivateなsubmodule及びプロジェクトは恥ずかしいから公開したくないなど、セキュリティリスクのないプロジェクトに限り利用することをオススメします。

手順

  • ローカル環境で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

ログインするとコメントできます