CC56

CC56: 567収束までに達成したい56リスト

Kaggle NotebookでGitHubのprivateリポジトリをcloneする方法 (ver.2)

記事を投稿後、あるごんさん(@ar90n)とかまろさん(@mlaass1)からアドバイスを頂いたので、対応してアップグレードしました。

結論

  • Kaggle Notebook のAdd-ons機能でシークレットな変数(秘密鍵、リポジトリ名など)を入力
  • 以下のセルでクローンを実行

gist75523f5de4a571cecf35b124aa319474

変数取得後のコードの流れは以下のとおり

  1. 重複防止の rm -rf (2回目以降をgit pullにしてもOKのはず)
  2. 秘密鍵をシークレットな変数から作成
  3. 権限の変更
  4. git clone。引数の core.sshCommand~/.ssh/config の役割をしている
  5. 秘密鍵の削除

セルに必要なシークレットな変数は、Notebook上部にあるAdd-onsからセットできます。

f:id:hyper-pigeon:20210123132352p:plain:w600
Notebook上部

f:id:hyper-pigeon:20210123132408p:plain:w300
add-ons

f:id:hyper-pigeon:20210123132446p:plain:w300
今回非公開にしたい4変数を入力する。画面下のコピペを使えばすぐ使えるが、今回はわかりやすさのために変数名を変更している

補足:

  • 秘密鍵の改行部分は\nに置き換えています。
  • 4変数について
    • gitrepo: GitHub上でのリポジトリ名
    • ssh_keyname: id_rsa_xxなどの秘密鍵の名前
    • ssh_keyval: 秘密鍵の鍵の中身(-----BEGIN RSA PRIVATE KEY-----から-----END RSA PRIVATE KEY-----まで)
    • uname_git: GitHubのID

(別解) HTTPリクエスト+アクセストークンを使用した方法

前者よりセキュアではないですが、シンプルな手段の一つとして利用価値があるのでこちらも残しておきます。

!git clone https://[USER_ID]:[PERSONAL_ACCESS_TOKEN]@github.com/[USER_ID]/[REPOSITORY_NAME].git

モチベーション

  • Kaggleのコンペ中のコードは気軽に公開・共有できない
  • KaggleのNotebookは(私の環境では)動作が重く、コード検索に数十秒かかってとても辛い
  • (私は)Notebookのグローバル変数をベタ書きできるほど脳のメモリが無い人間なので改善したかった
  • 外部でコード実行しやすくして、Notebookの無駄時間消費を抑えたい
  • Gitの草を生やして、やってます感を出したい
  • コードが(多分)リサイクルしやすくなる

だいたいこの6つです。

おわりに

  • にわかKaggleやりはじめ人間なので、もっといい方法がKaggler内で共有されているのかもしれません
  • 改善案があれば、コメント等いただけると嬉しいです

(追記)↑教えていただいた方々、本当にありがとうございます!