やりたいこと
リポジトリAにプライベートリポジトリのサブモジュールA・Bがある
これをGithubActionsで取得したい
色々参考にするが、複数の取得だと
以下の2つのエラーでうまく行かなかった
git@github.com: Permission denied (publickey).
ERROR: Repository not found.
fatal: Could not read from remote repository.
参考にさせていただいた記事
- Github ActionsでSSHを利用しsubmoduleをcloneする
- GithubActionsでプライベートリポジトリをsubmoduleとして取り込む
- GitHub Actions で submodules もチェックアウトする方法
- GIthub Actions で Git Submodule を 最新に更新して処理する
やり方
- 鍵の作成
- それぞれのサブモジュールのリポジトリのDeploy keysに公開鍵を登録
- GithubActionsからSSHの方式を変更する
鍵の作成
サブモジュールA・Bように2つの公開鍵と秘密鍵を作成する
ターミナルから
ssh-keygen -t rsa -b 4096 -C ""
rsa方式で作成する鍵のビット数4096に指定して作成しています。
-C ""
は個人的な設定です
登録する公開鍵にユーザ名とホスト名が記載されるのが嫌なのでつかないようにしています
参考:sshの鍵を作るときにちょっとだけ気にしたいこと
Enter file in which to save the key (/Users/you/.ssh/id_rsa): [Press enter]
Enter passphrase (empty for no passphrase):
適当な場所に保存して、空のパスフレーズで作成しました。
これを、サブモジュールの数だけつくります。
2.それぞれのサブモジュールのリポジトリのDeploy keysに公開鍵を登録
作った公開鍵の中身をコピーします
保存場所と名前は適時変えて.pub
の公開鍵の方をコピーします
pbcopy < ~/.ssh/id_rsa.pub
あとはサブモジュール側のSettings > Deploy keysからAdd newを選択してKeyの箇所に貼り付けます。
これをサブモジュールの数だけやります。
3. GithubActionsからSSHの方式を変更する
メインのリポジトリ(GithubActions使う側)にSecret Ketを設定します
Valueには秘密鍵を設定します。
どの秘密鍵がどのサブモジュールのかわかるような名前を入れておきましょう
あとは、GithubActionsで使用するだけです
name: actions
on:
push:
branches:
- "master"
jobs:
submodule-try:
runs-on: ubuntu-latest
defaults:
run:
shell: bash
env:
SUBMODULE_A_TOKEN: ${{ secrets.A_ACCESS_TOKEN }}
SUBMODULE_B_TOKEN: ${{ secrets.B_ACCESS_TOKEN }}
steps:
- uses: actions/checkout@v2
- name: Get Submodule A
run: |
mkdir -p $HOME/.ssh/
echo -e "$SUBMODULE_A_TOKEN" > $HOME/.ssh/id_rsa
sudo chmod 600 $HOME/.ssh/id_rsa
export GIT_SSH_COMMAND="ssh -i $HOME/.ssh/id_rsa"
git submodule update --init --remote submodule_a
- name: Get Submodule B
run: |
mkdir -p $HOME/.ssh/
echo -e "$SUBMODULE_B_TOKEN" > $HOME/.ssh/id_rsa_b
sudo chmod 600 $HOME/.ssh/id_rsa_b
export GIT_SSH_COMMAND="ssh -i $HOME/.ssh/id_rsa_b"
git submodule update --init --remote submodule_b
やってることは
- ディレクトリ作成して
- secret keyを秘密鍵として作成
- パーミッションの変更
- Gitがどの秘密鍵を使うかを設定しています
- 指定したサブモジュールの取得を行います
むちゃくちゃ詰まったので参考になれば幸いです