Skip to content

Commit af7fa9c

Browse files
sergey-safarovlinuxmaniac
authored andcommitted
updated rpm build spec files
1 parent 073d22c commit af7fa9c

7 files changed

Lines changed: 575 additions & 305 deletions

File tree

rpm/Dockerfile

Lines changed: 6 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -1,79 +1,11 @@
1-
ARG base_image="centos"
2-
ARG image_tag="8"
1+
ARG base_image="quay.io/centos/centos:stream10"
32

4-
FROM ${base_image}:${image_tag}
3+
FROM ${base_image}
54
ARG base_image
6-
ARG image_tag
7-
ARG rhel_username
8-
ARG rhel_password
9-
10-
# SPEC deps install command I take from https://www.terriblecode.com/blog/extracing-rpm-build-dependencies-from-rpm-spec-files/
115

126
COPY rpm_extra_specs /rpm_extra_specs/
7+
COPY get_build_env.sh /get_build_env.sh
138

14-
RUN set -e; \
15-
set -x; \
16-
echo "Preparing kamailio builder using '${base_image}:${image_tag}' image"; \
17-
pkg_manager="yum -y"; \
18-
if zypper --version &>/dev/null; then \
19-
pkg_manager="zypper -n"; \
20-
elif dnf --version &>/dev/null; then \
21-
pkg_manager="dnf -y"; \
22-
fi; \
23-
if [ "${base_image}" == "centos" ]; then \
24-
extra_packages="epel-release"; \
25-
fi; \
26-
if [ "${base_image}" == "registry.redhat.io/ubi7" -o "${base_image}" == "registry.redhat.io/ubi8" ]; then \
27-
subscription-manager register --username="${rhel_username}" --password="${rhel_password}"; \
28-
subscription-manager attach; \
29-
fi; \
30-
if [ "${base_image}" == "registry.redhat.io/ubi8" ]; then \
31-
dnf config-manager --set-enabled codeready-builder-for-rhel-8-x86_64-rpms; \
32-
dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm; \
33-
rpm_extra_builds="libphonenumber"; \
34-
fi; \
35-
if [ "${base_image}" == "registry.redhat.io/ubi7" ]; then \
36-
yum-config-manager --enable rhel-7-server-optional-rpms; \
37-
yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm; \
38-
rpm_extra_builds="libphonenumber"; \
39-
fi; \
40-
if [ "${base_image}" == "centos" -a "${image_tag}" == "8" ]; then \
41-
# Need enable additional repos \
42-
sed -i -e 's/enabled=0/enabled=1/' /etc/yum.repos.d/CentOS-PowerTools.repo; \
43-
rpm_extra_builds="libphonenumber"; \
44-
fi; \
45-
if [ "${base_image}" == "centos" -a "${image_tag}" == "7" ]; then \
46-
rpm_extra_builds="libphonenumber"; \
47-
fi; \
48-
if [ "${base_image}" == "fedora" ]; then \
49-
rpm_extra_builds="libphonenumber"; \
50-
fi; \
51-
${pkg_manager} update; \
52-
${pkg_manager} install rpm-build gcc make wget bison flex which git ${extra_packages}; \
53-
wget https://raw.githubusercontent.com/kamailio/kamailio/master/pkg/kamailio/obs/kamailio.spec; \
54-
for i in ${rpm_extra_builds}; do ${pkg_manager} install $(rpmspec -P rpm_extra_specs/${i}.spec | grep BuildRequires | sed -r -e 's/BuildRequires:\s+//' -e 's/,//g' | xargs); done; \
55-
if [ "${base_image}" == "centos" -a "${image_tag}" == "6" ]; then \
56-
sed -i -e '/libphonenumber-devel/d' -e 's/systemd-mini/systemd/' kamailio.spec; \
57-
yum -y install yum-utils; \
58-
yum-builddep -y kamailio.spec; \
59-
else \
60-
${pkg_manager} install $(rpmspec -P kamailio.spec | grep BuildRequires | sed -r -e 's/BuildRequires:\s+//' -e 's/,//g' -e '/libphonenumber-devel/d' -e 's/systemd-mini/systemd/' | xargs); \
61-
fi; \
62-
if [ "${base_image}" == "registry.redhat.io/ubi7" -o "${base_image}" == "registry.redhat.io/ubi8" ]; then \
63-
subscription-manager remove --all; \
64-
subscription-manager unregister; \
65-
fi; \
66-
rm -Rf /var/cache/dnf/* /var/cache/yum/* /var/cache/zypp/*; \
67-
rm -f kamailio.spec; \
68-
if [ ! -z "${rpm_extra_builds}" ]; then \
69-
echo "Building extra deps RPM packages"; \
70-
for i in ${rpm_extra_builds}; do rpmbuild --undefine _disable_source_fetch --nocheck -ba rpm_extra_specs/${i}.spec; done \
71-
fi; \
72-
if [ ! -z "${rpm_extra_builds}" ]; then \
73-
echo "Installing extra RPM deps"; \
74-
rpm -i $(find ~/rpmbuild/RPMS -type f \( -name "*.rpm" -not -name "*.src.rpm" \) | xargs); \
75-
mkdir /deps; \
76-
mv ~/rpmbuild/RPMS /deps; \
77-
mv ~/rpmbuild/SRPMS /deps; \
78-
rm -Rf ~/rpmbuild; \
79-
fi
9+
RUN --mount=type=secret,id=RHEL_USERNAME,env=RHEL_USERNAME \
10+
--mount=type=secret,id=RHEL_PASSWORD,env=RHEL_PASSWORD \
11+
/get_build_env.sh

rpm/README.md

Lines changed: 44 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,53 @@
1-
To build image for RHEL-7, RHEL-8 need define variables `repo_owner`, `base_image`, `image_tag`, `rhel_username`, `rhel_password` and
1+
To build image for RHEL-7, RHEL-8 need define variables `repo_owner`, `base_image`, `image_tag`, `RHEL_USERNAME`, `RHEL_PASSWORD` and
22
then start build image like
33

44
```sh
5-
export repo_owner=safarov
6-
export base_image=rhel
7-
export image_tag=8
8-
export rhel_username=${your_username}
9-
export rhel_password=${your_password}
10-
docker build \
11-
--build-arg base_image=registry.redhat.io/ubi${image_tag} \
12-
--build-arg image_tag=latest \
13-
--build-arg rhel_username=${rhel_username} \
14-
--build-arg rhel_password=${rhel_password} \
15-
-t ${repo_owner}/pkg-kamailio-docker:${base_image}-${image_tag} .
5+
export repo_owner=example
6+
export base_image=rhel-9
7+
export RHEL_USERNAME=${your_username}
8+
export RHEL_PASSWORD=${your_password}
9+
export platform=x86_64
10+
docker buildx build \
11+
--platform linux/${platform} \
12+
--secret id=RHEL_USERNAME,env=RHEL_USERNAME \
13+
--secret id=RHEL_PASSWORD,env=RHEL_PASSWORD \
14+
--build-arg base_image="registry.redhat.io/ubi9/ubi:latest" \
15+
-t ${repo_owner}/kamailio-builder:${base_image} .
1616
```
1717

18-
To build image for other rpm dists need to define environement variables `repo_owner`, `base_image`, `image_tag` and then start build image like
18+
To build image for other dist need to define environment variables `repo_owner`, `base_image`, `image_tag` and then start build image like
1919

2020
```sh
21-
export repo_owner=safarov
22-
export base_image=fedora
23-
export image_tag=31
24-
docker build \
21+
export repo_owner=example
22+
export base_image=fedora-42
23+
export platform=x86_64
24+
docker buildx build \
25+
--platform linux/${platform} \
2526
--build-arg base_image=${base_image} \
26-
--build-arg image_tag=${image_tag} \
27-
-t ${repo_owner}/pkg-kamailio-docker:${base_image}-${image_tag} .
27+
-t ${repo_owner}/kamailio-builder:${base_image} .
2828
```
29+
30+
To build for CentOS Stream
31+
```sh
32+
export repo_owner=example
33+
export base_image=centos-10
34+
export platform=x86_64
35+
docker buildx build \
36+
--platform linux/${platform} \
37+
--build-arg base_image="quay.io/centos/centos:stream10" \
38+
-t ${repo_owner}/kamailio-builder:${base_image} .
39+
```
40+
41+
Suported dist
42+
43+
| dist | version | arch |
44+
|---------------------|---------|--------------------------------
45+
| rhel | 10 |x86_64, aarch64, s390x |
46+
| rhel | 9 |x86_64, aarch64 |
47+
| rhel | 8 |x86_64, aarch64 |
48+
| centos | 10 |x86_64, aarch64, s390x, ppc64le|
49+
| centos | 9 |x86_64, aarch64, s390x, ppc64le|
50+
| centos | 8 |x86_64, aarch64, s390x |
51+
| rocky | 9 |x86_64, aarch64, s390x, ppc64le|
52+
| fedora | 42 |x86_64, aarch64, s390x, ppc64le|
53+
| fedora | 41 |x86_64, aarch64, s390x, ppc64le|

0 commit comments

Comments
 (0)