こんにちは、さるまりんです 🐒🔧
前回の記事では、
「make init && make up で即実験!Spring Boot devboxテンプレを対話式にしてみた」
という内容で、Spring Boot 用の devbox を 対話式ジェネレータとして作ってみました。
devbox 自体は無事完成して、
「よし、これでまとめたものを書けるぞ!」と思ったわけですが……
その次に来たのが、
じゃあ、GitHubに置こうか
という工程で、
ここからが、思ったよりも長い道のりだったんです。
今回ハマったこと一覧
まず、今回実際に遭遇したイベントをまとめると、こんな感じです。
- GitHub用に別アカウントを作った
- HTTPS で push しようとして失敗
- 「パスワードではダメ?」となる
- SSH鍵?ed25519?と混乱
- 既存の
id_rsaがあって不安になる - SSH config で Host を切り分ける
ssh -Tが通って一安心- Repository not found
- 実はリポジトリ名が違っていた
- リポジトリ名を変更して remote を修正
- ようやく
git pushが通る
……書いてみると、なかなかですね。
一つ一つは難しくないはずなのに、
トラブルが連鎖すると、どうしてもあわててしまいます。
今回は、この一連の流れそのものを、
そのまま記事としてまとめてみます。
GitHubアカウントを分けた理由
まず最初にやったのが、
GitHubアカウントを新しく作ることでした。
普段使っている GitHub アカウントは、
- 仕事でも使っている
- private なリポジトリも多い
- 実験用としてはちょっと気を遣う
という状態。
今回作った devbox は、
- 壊してOK
- 書き捨てOK
- 試行錯誤そのものが目的
なので、
気持ちとして「雑に扱える場所」を作りたかったんですね。
結果として、
これはかなり良い判断だったと思っています。
HTTPS push が通らない問題
ローカルで git init して、
README を書いて、いざ push。
git push -u origin main
すると……
Password authentication is not supported for Git operations.
はい、来ました。
そう、GitHub はもう
パスワード認証では push できません。
ここで初めて、
あ、SSH鍵の話だな
というステージに進みます。
ed25519って何?既存の id_rsa があるけど?
SSH鍵を作ろうとして、次に出てきた疑問がこれでした。
ed25519って何?- すでに
~/.ssh/id_rsaがあるけど大丈夫? - 仕事用のリポジトリに影響しない?
結論から言うと、
- 新しく鍵を作っても既存の鍵には影響しない
- SSH config で Host を分ければ安全
- ed25519 は今どきの標準的な方式
ということが分かりました。
なので今回は、
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_salumarine
という形で、
「salumarine 専用鍵」として切り分けています。
SSH config で Host を分ける
鍵を作っただけでは終わりません。
次にやったのが、~/.ssh/config の設定です。
Host github-salumarine
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_salumarine
これで、
ssh -T github-salumarine
と叩くと……
Hi salumarine! You've successfully authenticated
この瞬間、かなり安心しました。
ちゃんと salumarine で繋がってくれていますね。
Repository not found…??
SSH も通った。
鍵も正しい。
なのに、次に出たのがこれ。
ERROR: Repository not found.
原因は、
リポジトリ名がローカルと GitHub でズレていたことでした。
最初は spring-boot-devbox-generator という名前で作っていたのですが、
- 今後、Spring Boot 以外にも広げたい
- devbox ジェネレータ全体の拠点にしたい
という理由で、
👉 salumarine-devbox-generator
にリネーム。
GitHub 側で名前を変更したあと、
ローカルの remote も修正します。
git remote set-url origin git@github-salumarine:salumarine/salumarine-devbox-generator.git
そして、ようやく push
ここまで整えて、改めて:
git push -u origin main
今度は無事に通りました。
正直、
「やっと外に出た……」
という感覚でした。
git push
世界に、自分の作った何かが放たれる瞬間です。
開発はコードだけじゃない
今回あらためて感じたのは、
開発はコードを書いて終わりじゃない
ということ。
- Git
- GitHub
- 認証
- 公開
- 名前付け
全部ひっくるめて「開発」。
devbox 自体を作るのも楽しかったですが、
外に出せる形にする工程も、ちゃんと価値があるなと思いました。
次にやりたいこと
この devbox は、ここからさらに育てていく予定です。
- MySQL 対応
- Java / Kotlin のサンプル API 自動生成
- DB 定義付きテンプレート
- その先に Next.js devbox
ガレージでの作業、まだまだ楽しんで続けていきます 🐒🔧
読んでくださってありがとうございました。
それではまた!