概要
事の発端はこちらの記事
端的に説明するとGitHubのリポジトリ作成時、デフォルトがmaster
からmain
に変更されていた。
事象
HerokuへのデプロイをAPI経由で行う際、ブランチを指定するがそれに影響が出た。
ブランチ変更の影響でmasterを指定するとデプロイできていない。
直接打つ場合は$HEROKU_API_KEY
, $HEROKU_APP_NAME
は任意の名前に変更。
# デプロイできている
git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git main
# デプロイできていない
git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
色々な記事では末尾のmain
部分をmaster
をして記述しているがmaster
でpushをすると失敗する。
(独自でmasterブランチを作成したり昔作成したリポジトリ[masterがデフォルト]なら問題ないと思う)
まあそもそも構文の意味をちゃんと理解すればそこまでハマることもないと思うが問題は次だ。
CircleCIからHerokuへのpush時ブランチ指定を間違えても正常に動いてる(ように見えてしまう)のが問題
下記画像はCircleCIからHerokuへデプロイするjobだがこれ自体は成功しているがデプロイは出来ていない。
原因は前述したとおりブランチ指定をmaster
にしているため。
事態をややこしくしたのはCIrcleCIのjobは成功しているのにデプロイは失敗してるため何が悪いのか皆目見当がつかない点。
つまりjobは成功しているから原因はここではないと考えてしまい、余計にものすごい遠回りをしてしまった。
そしてブランチ指定をmainに変更するとjobが失敗するので(それはまた別の要因)ややこしさが加速した。
mainに指定したのは間違っているのでは?と誤った考え方に推移していった。。。
解決策
これも前述したとおりブランチ部分をちゃんとmain
に変更すれば問題なく動作する。
(しかしmainに変更したとこでまた別の問題が発生して大変な目にあったがそれは別記事に記す。)
所感
そもそもデフォルトブランチがmaster
ではなくmain
に変わっていたのは、
ネットニュースでちらほら見かけていたのでそこまで驚きはしなかった。
変更した経緯について詳細は省くが自分で動かすときはちゃんと意識しないと変にハマる。
特に単独で失敗するならまだしも色々な環境を経由してコマンド実行するとなると、
どこに原因が潜んでるかの切り分けが困難になるためある程度あたりを付けておくのは大事だなと感じた。