8
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 3 years have passed since last update.

Github Actionsで複数のサブモジュールの取得をSSHで行う

Posted at

やりたいこと

リポジトリAにプライベートリポジトリのサブモジュールA・Bがある
これをGithubActionsで取得したい
色々参考にするが、複数の取得だと
以下の2つのエラーでうまく行かなかった

git@github.com: Permission denied (publickey).
ERROR: Repository not found.
fatal: Could not read from remote repository.

参考にさせていただいた記事

やり方

  1. 鍵の作成
  2. それぞれのサブモジュールのリポジトリのDeploy keysに公開鍵を登録
  3. 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の箇所に貼り付けます。
これをサブモジュールの数だけやります。

ss.png

3. GithubActionsからSSHの方式を変更する

メインのリポジトリ(GithubActions使う側)にSecret Ketを設定します

ss1.png

Valueには秘密鍵を設定します。
どの秘密鍵がどのサブモジュールのかわかるような名前を入れておきましょう

あとは、GithubActionsで使用するだけです

github-actions.yml
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

やってることは

  1. ディレクトリ作成して
  2. secret keyを秘密鍵として作成
  3. パーミッションの変更
  4. Gitがどの秘密鍵を使うかを設定しています
  5. 指定したサブモジュールの取得を行います

むちゃくちゃ詰まったので参考になれば幸いです

8
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
8
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?