🛵
Github ActionsでSSHを利用しsubmoduleをcloneする
こちらの方法は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