web-dev-qa-db-ja.com

BambooビルドでGitリポジトリにタグを付ける方法

私はBambooビルドでRuby gemのgitリポジトリにタグを付けようとしています。Rubyでこのようなことをすると

`git tag v#{current_version}`
`git Push --tags`

しかし問題は、レポにオリジンがないことです。どういうわけか、BambooはOriginの手がかりを取り除いていますか?

22
Allen Bargi

はい、ジョブワークスペースに移動すると、Bambooは「内部」で単純なgitクローンを実行せず、リモートが内部ファイルパスに設定されていることがわかります。

幸い、Bambooは元のリポジトリURLを$ {bamboo.repository.git.repositoryUrl}として保存するので、必要なのは、元の場所を指すようにリモートを設定し、そこにプッシュすることだけです。これは、基本的なGitリポジトリとStashの両方で使用していて、ビルド番号に基づいてタグを作成しています。

git tag -f -a ${bamboo.buildNumber} -m "${bamboo.planName} build number ${bamboo.buildNumber} passed automated acceptance testing." ${bamboo.planRepository.revision}
git remote add central ${bamboo.planRepository.repositoryUrl}
git Push central ${bamboo.buildNumber}
git ls-remote --exit-code --tags central ${bamboo.buildNumber} 

最後の行は、新しく作成されたタグを読み戻すことができない場合にタスクを失敗させるだけです。

編集:変数$ {bamboo.repository.git.repositoryUrl}を使用するように誘惑されないでください。これは、ジョブでチェックアウトされたリポジトリを必ずしも指すとは限らないためです。

また、複数のソースからチェックアウトしている場合、$ {bamboo.planRepository.repositoryUrl}は「ソースコードチェックアウト」タスクの最初のリポジトリを指すことにも注意してください。より具体的なURLは、以下を介して参照されます。

${bamboo.planRepository.1.repositoryUrl}
${bamboo.planRepository.2.repositoryUrl}
...

等々。

49
RCross

バンブーエージェントによるチェックアウト後、OriginのリモートリポジトリのURLがfile://nothingに設定されているようです

[remote "Origin"]
url = file://nothing
fetch = +refs/heads/*:refs/remotes/Origin/*

そのため、git remote set-urlを使用してURLを更新できます。または、私の場合、新しいエイリアスを作成しただけなので、既存の動作を壊しません。これがこのように設定されているのには十分な理由があるはずです。

[remote "build-Origin"]
url = <remote url>
fetch = +refs/heads/*:refs/remotes/build-Origin/*

私の計画ではhttpsとして定義されているため、${bamboo.planRepository.<position>.repositoryUrl}を使用しても機能しないことにも気付きました。 sshへの切り替えが機能しました。

1
Paul

これは古いスレッドであることは知っていますが、この情報を追加することを考えました。

Bambooバージョン6.7以降、Gitリポジトリのタグ付け機能 Repository Tag を備えています。

リポジトリタグ付けタスクをジョブに追加し、Bamboo変数をタグ名として追加できます。アプリケーションリンクを介して統合されたBamboo-Bitbucketが必要です。

0
Jijo John