今週も引き続き discord で開催。
https://asakusarb.esa.io/posts/1087
この日は最初から最後まで rubygems の cargo builder のテストコードが trivy などのスキャナに反応して「ん〜」となっている問題を解決していた。cargo update
が動かなくてなんだこれは〜と言うのは別のエントリで。
先に書いたように rubygems の中にある Cargo.toml
を cargo update
で更新しようと思い色々調べていたのだけど
insteadOf
を使って ssh に変換しているCARGO_NET_GIT_FETCH_WITH_CLI
を設定していると言う状態の時に git 参照を含む Cargo.toml
を cargo update
で更新できない状態になっていた。
具体的には cargo update
を実行している途中で実行される以下のような git fetch
が Git 2.36.0 では動かない。
git fetch --tags --force --update-head-ok 'https://github.com/rust-lang/rust-bindgen' '+refs/heads/:refs/remotes/origin/' '+HEAD:refs/remotes/origin/HEAD'
cargo 経由ということだけでもなく単独で実行しても動かないので、まあそういうものなのだろう。
結論としては以下のように ssh-agent
を常に使うように設定した上で
Host *
UseKeychain yes
AddKeysToAgent yes
IdentityFile ~/.ssh/id_ed25519
git cli を使う環境変数を無しにして cargo 内蔵の git をそのまま使うようにしたら全てが解決した。この辺、めちゃくちゃハマるのでもう少しいい感じになってほしい...。