GitHub Actions でプライベートリポジトリを clone する方法

1 min read読了の目安(約1100字

構成

  • RepoA: GitHub Actions を使って RepoB を git clone したい
  • RepoB: private repository

actions/checkout は Personal Access Token のみの対応のようなので、この記事では ssh を使った方法を記します。
この方法では、秘密鍵を GitHub に登録することになるので、あまりおすすめではありません。どうしても Personal Access Token 以外を使わないといけない状況の場合に参考にして頂ければ。

事前準備

ローカル開発環境等で ssh-key-gen コマンドで鍵を作成

// -f はファイル名を指定
$ ssh-keygen -f zenn

// ファイル確認
$ ls ~/.ssh
zenn    zenn.pub

設定

  • 公開鍵 (zenn.pub) は RepoB の Deploy Keys に登録

    • [repo] - [Settings] - [Deploy Keys]
  • RepoA の Secrets に 秘密鍵(zenn)を登録

    • [repo] - [Settings] - [Secrets]
    • ここでは ZENN_SECRET という名前で登録
  • RepoA に GitHub Actions の設定ファイルを作成

$ cat .github/workflows/main.yml
name: Zenn Example

on:
  push:
    branches: [ master ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: git clone
        env:
          ZENN_SECRET: ${{ secrets.ZENN_SECRET }}
          GIT_SSH_COMMAND: ssh -i ~/zenn_secret
        run: |
          echo "$ZENN_SECRET" > ~/zenn_secret
          chmod 600 ~/zenn_secret
          git clone git@github.com:<org>/<RepoB>.git