LoginSignup
41
15

More than 3 years have passed since last update.

GithubActionsでプライベートリポジトリをsubmoduleとして取り込む

Last updated at Posted at 2019-12-21

GithubActionsでプライベートリポジトリをsubmoduleとして取り込む方法はsubmodule addコマンドでhttps方式で追加したかssh方式で追加したかによって変わります。それぞれのメリットデメリットを説明しつつ、実現方法を記しておきます。

https方式
git submodule add https://github.com/u-nation/GITHUB_REPOSITORY.git
ssh方式
git submodule add git@github.com:u-nation/GITHUB_REPOSITORY.git

https方式

手軽なのはhttps方式です。
以下の権限を持つパーソナルアクセストークンを作成し、secretsに登録してワークフロー内でwithオプションに渡してあげるだけで済みます。
※パーソナルアクセストークンはhttps方式しか使えません1

.github/workflows/sample.yml
      - name: submodule
        uses: actions/checkout@v1
        with:
          submodules: true
          token: ${{ secrets.PERSONAL_TOKEN }}
  • メリット 手軽さ
  • デメリット パーソナルアクセストークンは発行したアカウントがアクセスできるリポジトリ全てに権限が及ぶのでトークンが漏れた場合のセキリュティリスクが大きい。Bot用のアカウントを作成やトークン作成の依頼・共有など運用がしんどい。

ssh方式

  1. ssh-keygenコマンドで秘密鍵公開鍵を作成
  2. submodule先のリポジトリのDeploy Keysに公開鍵を登録(必要に応じてwrite権限を付与)
  3. 取り込む方のリポジトリのsecretsに秘密鍵を登録
  4. ワークフローでsshの設定とsubmodule update --initをする
.github/workflows/sample.yml
      - uses: actions/checkout@v2
      - name: SSH Setting
        env:
          TOKEN: ${{ secrets.TOKEN }}
        run: |
          mkdir -p /home/runner/.ssh/
          echo -e "$TOKEN" > /home/runner/.ssh/id_rsa
          chmod 600 /home/runner/.ssh/id_rsa
      # https://github.com/actions/checkout#checkout-submodules
      - name: Checkout submodules
        shell: bash
        run: |
          git submodule sync --recursive
          git submodule update --init --force --recursive
  • メリット 鍵の権限はそのリポジトリに限定されるので漏れた時のセキュリティリスクが軽減される。必要に応じて各々が鍵の設定を追加できるので運用が楽。
  • デメリット 鍵作ったり設定するのがちょっとだけめんどい。

所感

企業でGithubを使う場合は大抵プライベートなリポジトリだと思うので、誰かのお役に立てると嬉しいです。

ssh方式を実現するのに6時間位ハマって辛かったですが、運用が楽になるのでssh方式がオススメです。

注釈

注釈


  1. GithubActionsに移行する前は、AWSのCodeBuildを使用していました(GithubAcitonsの方がめちゃくちゃ早いです)。その時は秘密鍵をSystem Managerで用意してssh方式をしていましたが、途中でhttps方式のsubmoduleオプションが登場しました。 

41
15
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
41
15