RPM で VCS バージョンをどこに保存しますか?

RPM で VCS バージョンをどこに保存しますか?

私たちは、VCS として Git を使用し、パッケージ化には RPM を使用しています。パッケージの作成元となった Git ハッシュを保存したいのですが、最適な場所がわかりません。

いくつかのタグRPM では利用可能ですが、VCS バージョンでは利用できません (ざっと見ただけでしょうか)。

私はかなり警戒しているカスタムタグの追加50,000 フィートのレベルだけを見てみます。

かなりハックっぽい解決策としては、Gitハッシュを説明フィールド。現時点では他に使用していませんが、これは見苦しい気がします。

では、RPM で VCS バージョンを保存する最も適切な場所は何でしょうか?

答え1

Fedora (ごくまれに RHEL)この情報をリリースタグに配置する

例えば:

Name:           mypackage
Version:        0.0.1
Release:        20140114git0abcdef

答え2

RPM には、実際には十分に文書化されていないVCSタグがあります。

使用に関するガイドラインはないようですが、存在し、サポートされています。

cat > test.spec <<'__END__'
Name: foo
Version: 1
Summary: foo
License: None
Release: 1
VCS: git:repo=my-repo:branch=my-branch:sha=1234deadbeef

%description
foo
__END__


$ rpmspec -q test.spec --qf "%{VCS}\n"
git:repo=my-repo:branch=my-branch:sha=1234deadbeef

単一の解析トークンに制限されているようです。それでも便利です。明確に定義された形式や構造に関するドキュメントは見つからず、採用も限られています。私の Fedora 32 システムでは、異なる形式でこれを使用している 2 つのパッケージを見つけました。

$ rpm -qa --qf '%{Name} %{VCS}\n' |grep -v '(none)'
bcache-tools https://github.com/g2p/bcache-tools.git
libcue scm:git:https://github.com/lipnitsk/libcue.git
$

率直に言って、rpm ではカスタム タグ情報を挿入する機能が提供されないのは本当に残念です。Jenkins ビルド ID とジョブ名、git コミット ハッシュ、git ブランチまたはタグを記録したいのですが、変更ログには記録したくありません。

タグ付きの debs でこれを行うことができますX-BS-foo


許可されている rpm タグのリストは で確認できますrpm --querytags

タグDISTURL別の用途のために予約されている候補になる可能性はあります。

またURL、そこに SCM 情報を埋め込み、ブラウザーでアクセスした場合に URL を適切な場所にリダイレクトすることもできます。


カスタム タグをサポートする「rpm5」への参照が表示される場合があります。これは、ほとんどの主要ディストリビューションで使用されている rpm.org ディストリビューションではなく、rpm のデッド フォークのようです。

答え3

必要な情報をすべて docs ディレクトリの VERSION ファイルに保存することを妨げるものは何もないと思います。そのファイルへのパスを VCS タグに追加することもできます (ただし、テストは行っていません)。

関連情報