VCS 버전을 RPM에 어디에 저장합니까?

VCS 버전을 RPM에 어디에 저장합니까?

우리는 패키징을 위한 VCS 및 RPM으로 Git을 사용하고 있습니다. 패키지가 작성된 Git 해시를 저장하고 싶지만 가장 적절한 위치가 확실하지 않습니다.

여러 가지가 있습니다태그RPM에서는 사용할 수 있지만 VCS 버전에서는 아무것도 표시되지 않습니다(어쩌면 잠깐 살펴봤을까요?).

나는 꽤 불안하다사용자 정의 태그 추가, 단지 50,000피트 높이를 바라보고 있을 뿐입니다.

상당히 해킹적이라고 느껴지는 한 가지 해결책은 Git 해시를설명필드. 현재로서는 다른 용도로 사용하지 않지만 와, 정말 보기 흉한 느낌이 듭니다.

그렇다면 VCS 버전을 RPM에 저장하기에 가장 적합한 위치는 어디입니까?

답변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 시스템에서 이를 사용하는 두 개의 패키지가 다른 형식으로 발견되었습니다.

$ 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 태그에 추가될 수 있습니다(테스트하지는 않았지만).

관련 정보