Jenkinsで2回も同じ箇所で引っかかったので、ブログ化。新規性はありません。
状況
Jenkins上でGitリポジトリとブランチを指定して、JenkinsFileを取得している。同一のリポジトリにリリースバージョンを管理するファイルがあり、パイプラインでリリースするたびにバージョンをインクリメントしたい。
だが、git push
をしようとすると、下のエラーログが出力されてgit push
ができない。
fatal: You are not currently on a branch. To push the history leading to the current (detached HEAD) state now, use git push origin HEAD:<name-of-remote-branch>
環境
- Jenkins
- バージョン不明
申し訳ないですが、バージョンはわかりませんでした。
原因と対応
ブランチを指定して取得しても、起動時のブランチのコミットIDで取得することになります。特定のコミットIDでGit pullをしているため、PushしようとするとPush先のブランチが分からず、Git detachedが発生してしまいます。
Additional BehabiorをJenkins側で「Check out to specific local branch」と指定し、ブランチ名を固定するとPushすることができます。
画像が欲しい人は、参考元のStackOverflowを確認してみてください。私が使用していたバージョンとは表示は異なっておりましたが、似たような位置にありました。
終わりに
正直、StackOverflowを読めば一発でわかりますが、2回も同じ経験で失敗したにもかかわらず、キーワードが思いつかずに参考元にたどり着くまでに3時間を無駄にしてしまいました。
同一事象を経験していることは覚えていても、どんな対応したかは残しておかないと覚えられませんね…。
私が3度目の失敗を踏まないように、備忘録としてこの記事を残します。
この記事がお役に立ちましたら、各種SNSでのシェアや、今後も情報発信しますのでフォローよろしくお願いします。
参考
StackOverflow: Jenkins Git plugin detached HEAD stackoverflow.com