2013-04-22 7 views
8
Name:     My Software 
Version:    1.0.5 
Release:    1 
Summary:    This is my software 

わからないRPMのspecファイルでビルド番号を使用して、しかし:は、誰もが前か、それは簡単である場合は、これを試みた場合ジェンキンスは

specファイルはそのバージョンのための2つのユニークな指標があります

  • (ソフトウェアのバージョンを指定する)バージョンのパッケージの数を指定します
  • リリース( - 。あなたはRPMをビルドする場合、それは壊れていて、別のものを構築し、あなたがアップ「リリース」数は

Jenkinsの$ BUILD_NUMBER変数を使用してReleaseの番号を動的に変更して、新しい成功したビルドが完了するたびにReleaseの数を増やす方法があれば、誰でも試してみたかったり、

+0

sed -i "/ VERSION/$ BUILD_NUMBER /" rpm.spec –

+0

あなたはソース管理の下にあるべきですので、ビルドはそれを変更すべきではありません。 – thekbb

+1

[fpm](https://github.com/jordansissel/fpm)を試してみてください。スペックファイルの80%をはるかに上回ります! – quickshiftin

答えて

7

これは長い時間でした...ありがたいことに私はrpmベースのシステムを持っていないので、これはテストできません。

あなたは仕様とあなたがRPMを構築するために使用しているスクリプトのスニペットを投稿する参考になるコマンドライン rpmbuild --define="version = ${env.BUILD_NUMBER}

rpmbuildにパラメータを渡すことができます。 ビルドスクリプトがスペックファイルを編集しないようにしています。スペックファイルは、いくつかのソースコントロールから引き出していると仮定しています。

+0

specファイルはソース管理にあります。ビルドスクリプトを使用してspecファイルの内容を変更しないという必要性を理解しています。一方、私たちがビルドするたびに、スペックファイルを手動で変更してチェックインし、他のすべての関連する変更を行わなければなりません。それが自動的に変更されると、それはずっと簡単になります。\ – Sagar

+1

はい...それでビルドパスがあり、9.9.9-1のように仕様ファイルに偽の値を残すのですビルドが適切なバージョンを注入していないことが非常に明白である – thekbb

+0

それはうまくいかなかった。 rpmbuildヘルプで述べたように、 '--define =" Release = $ {BUILD_NUMBER} "と' --define = "Release $ {BUILD_NUMBER}" 'を試しました。 – Sagar

3

私はJenkinsビルド番号をfpmで 'リリース'とパッケージとして使用しています。

ジェンキンス

# $BUILD_ID - The current build id, such as "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss) 
# $BUILD_NUMBER - The current build number, such as "153" 
# $BUILD_TAG - String of jenkins-${JOB_NAME}-${BUILD_NUMBER}. Convenient to put into a resource file, a jar file, etc for easier identification. 

によって提供されるいくつかのグローバル変数をもつ

カップルFPMは、以下のコマンド例では、いくつかの漠然とした変数がありますが、$BUILD_NUMBERが、私はここにリリース(FPM呼び出し、それを反復のために使用しているものです代わりに)。

fpm_out=$(fpm -a all -n $real_pkg_name -v $version -t rpm -s dir --iteration $BUILD_NUMBER ./*) 
2

私のJenkinsセットアップでは、RPMバージョンの番号付けに関してビルド番号をバイパスすることにしました。代わりに、私は、生成されているさまざまなリリースを生成して追跡する自家製のスクリプトを使用します。私のspecファイルで

​​

rpm-release-number.pyが容易なメンテナンスのため、JSON形式のファイルベースのデータベースを(維持単純なスクリプトです:

Version: %{_iv_pkg_version} 
Release: %{_iv_pkg_release}%{?dist} 

そしてジェンキンス構築スクリプトで

)。それは同時に動くことを扱うことができるので、そこに心配はありませんが、あなたがビルドスレーブを持っていれば動作しません(私が言うことができる限り、私はそれらを使用しないのでテストできません)。ソースコードとドキュメント hereがあります。

結果は、私は次のパッケージバージョン管理方式を得ることです:

# Build the same version 3 times 
foo-1.1-1 
foo-1.1-2 
foo-1.1-3 
# Increment the version number, and build twice 
foo-1.2-1 
foo-1.2-2 

PSを:ジェンキンスは、スクリプトを構築することに注意してくださいは、rpmbuildのディレクトリ構造を作成し、.SRCの取得の背後にあるロジック単なる一例です。 rpmと.specファイル名は少し複雑です。

関連する問題