LoginSignup
12
15

More than 5 years have passed since last update.

Jenkinsでクローンしてきたgitのブランチに名前を付ける

Last updated at Posted at 2016-02-19

やりたかったとこ

図1.png

gitlabにある特定のプロジェクトを、バックアップ先としてAWSのCodeCommitにもプッシュしたい。

なので方法としてはJenkins先生を使って、

  1. Gitlabの変更を検知して、Jenkins先生がGitlabをクローンする
  2. クローンしたworkspaceをCodeCommitにPush

そんなに難しくなさそうと思ったけど、はまった。

ここではまった

Jenkins先生はdetached Headの状態でリモートレポジトリをcloneしてくる。
なので、workspaceに行ってブランチ名を確認すると…

$ git branch
* (detached from 62ehoge)

のようにブランチ名でなく(detached from "Commit ID")になってる。

当たり前だけど、これで他のレポジトリにmasterブランチとしてプッシュしても

$ git push <another-repo> master
error: src refspec master does not match any.
error: failed to push some refs to <another-repo>

ってかんじでmasterブランチなんてねーよ!と言われる。
cloneしてきたときにjenkins内でbranchの名前をつけるにはどうればいいのか。

いろいろ調べて、stackoverflowのこの投稿で発見。日本語での記事は見つからなかったのでここに投稿します。

Additional Behavioursで指定できる

jenkins先生のjobの設定画面でGitセクションの下の方、[Additional Behaviours] -> [Check out to specific local branch]とし、branchnameに好きな名前を入れる。
仮にリモートからmasterブランチしかcloneしないなら、jenkins内でもmasterで名前つけてしまっていいと思う。

Additional Behavioursは全部英語なので読み飛ばしてましたけど奥が深いですなあ。

これでjobを実行してcloneしてきたWorkspaceに行くと

$ git branch
* master

というかんじでmasterというブランチ名になっている。
あとはビルド後のジョブとかで「シェルの実行」で他のレポジトリにpushしてしまえばいい。

12
15
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
15