Refactor rpm build process
* Move rpm build files to contrib/rpm/ directory structure * Update top level README.md for referencing to contrib/rpm/README.md for rpm build
This commit is contained in:
parent
188c9ef67f
commit
b72f43d24f
23
README.md
23
README.md
|
@ -45,28 +45,9 @@ You can build a Docker container with the included `docker` make target:
|
|||
This will not even require Go tooling on the host. See the included [docker
|
||||
compose example](docker-compose.yml) for how to use the resulting container.
|
||||
|
||||
### Building RPM Package
|
||||
### Building a RPM Package
|
||||
|
||||
The RPM package build targets to run the exporter locally with sudo permissions to expose most metrics.
|
||||
|
||||
#### Directly on CentOS with rpmbuild
|
||||
|
||||
Build script is located in `rpm/build.sh`.
|
||||
|
||||
The RPM package will be available under `$HOME/rpmbuild/`.
|
||||
|
||||
#### Docker Build Container
|
||||
|
||||
The build container uses CentOS7.
|
||||
|
||||
```bash
|
||||
# from repo base dir run
|
||||
|
||||
sudo docker build -t rpm_dock -f docker/RPM-Dockerfile .
|
||||
sudo docker run -v $PWD:/rpm -it rpm_dock
|
||||
```
|
||||
|
||||
The RPM package will be available under `build/`.
|
||||
See [how to build a RPM package](contrib/rpm/README.md).
|
||||
|
||||
## Running
|
||||
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# Building a RPM Package
|
||||
|
||||
The RPM package build targets to run the exporter locally as Prometheus user with sudo permissions to expose most metrics.
|
||||
|
||||
For building a RPM package a build script and [Docker](https://www.docker.com/) build container are available.
|
||||
|
||||
NOTE:
|
||||
> The build script and the Docker build image must be executed from the project base directory!
|
||||
|
||||
## CentOS with rpmbuild
|
||||
|
||||
A Build script is located in `contrib/rpm/build.sh` to be executed on a CentOS-based host with rpmbuild tool.
|
||||
|
||||
The RPM package will be available under `$HOME/rpmbuild/`.
|
||||
|
||||
## Docker Build Container
|
||||
|
||||
A Docker build container is provided for CentOS7.
|
||||
|
||||
```bash
|
||||
sudo docker build -t centos7_rpmbuild_ipmi_exporter -f contrib/rpm/docker/Dockerfile-centos7 .
|
||||
sudo docker run -v $PWD/contrib/rpm/build:/outdir -it centos7_rpmbuild_ipmi_exporter
|
||||
```
|
||||
|
||||
The RPM package will be available under `contrib/rpm/build/`.
|
|
@ -0,0 +1,49 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
function do_checks {
|
||||
|
||||
info_msg="The build script must be executed from the projects base directory!"
|
||||
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo "ERROR: Build failed! VERSION file not found" >&2
|
||||
echo "INFO: $info_msg"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ ! -d "$CONTRIB_DIR" ]; then
|
||||
echo "ERROR: Build failed! Directory does not exist: $CONTRIB_DIR" >&2
|
||||
echo "INFO: $info_msg"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
export VERSION=$(cat VERSION)
|
||||
export BUILD_DIR=$HOME/rpmbuild
|
||||
export CONTRIB_DIR="contrib/rpm"
|
||||
export PACKAGE_DIR=prometheus-ipmi-exporter-$VERSION
|
||||
|
||||
do_checks
|
||||
|
||||
make build
|
||||
|
||||
mkdir -p $BUILD_DIR/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||
mkdir -p $BUILD_DIR/SOURCES/$PACKAGE_DIR/usr/bin
|
||||
mkdir -p $BUILD_DIR/SOURCES/$PACKAGE_DIR/usr/lib/systemd/system
|
||||
mkdir -p $BUILD_DIR/SOURCES/$PACKAGE_DIR/etc/sysconfig
|
||||
mkdir -p $BUILD_DIR/SOURCES/$PACKAGE_DIR/etc/sudoers.d
|
||||
|
||||
sed "s/VERSION/$VERSION/" $CONTRIB_DIR/prometheus-ipmi-exporter.spec > $BUILD_DIR/SPECS/prometheus-ipmi-exporter.spec
|
||||
|
||||
cp $CONTRIB_DIR/systemd/prometheus-ipmi-exporter.service $BUILD_DIR/SOURCES/$PACKAGE_DIR/usr/lib/systemd/system/
|
||||
cp $CONTRIB_DIR/sudoers/prometheus-ipmi-exporter $BUILD_DIR/SOURCES/$PACKAGE_DIR/etc/sudoers.d/
|
||||
cp $CONTRIB_DIR/config/prometheus-ipmi-exporter.yml $BUILD_DIR/SOURCES/$PACKAGE_DIR/etc/sysconfig/
|
||||
cp ipmi_exporter $BUILD_DIR/SOURCES/$PACKAGE_DIR/usr/bin/
|
||||
|
||||
cd $BUILD_DIR/SOURCES
|
||||
tar -czvf $PACKAGE_DIR.tar.gz $PACKAGE_DIR
|
||||
cd $BUILD_DIR
|
||||
echo Build dir is: $BUILD_DIR
|
||||
ls -la $BUILD_DIR/SOURCES
|
||||
rpmbuild -ba $BUILD_DIR/SPECS/prometheus-ipmi-exporter.spec
|
|
@ -7,9 +7,8 @@ RUN tar -C /usr/local -xvzf go1.18.1.linux-amd64.tar.gz
|
|||
ENV PATH=$PATH:/usr/local/go/bin
|
||||
COPY . /go/ipmi_exporter
|
||||
WORKDIR /go/ipmi_exporter
|
||||
RUN rpm/build.sh
|
||||
RUN mkdir /rpm
|
||||
RUN contrib/rpm/build.sh
|
||||
RUN mkdir /outdir
|
||||
ENTRYPOINT ["/bin/sh"]
|
||||
ENTRYPOINT ["cp"]
|
||||
CMD ["-r","/root/rpmbuild/RPMS/x86_64/","/rpm/build"]
|
||||
|
||||
CMD ["-r", "/root/rpmbuild/RPMS/x86_64/", "/outdir"]
|
23
rpm/build.sh
23
rpm/build.sh
|
@ -1,23 +0,0 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
export VERSION=$(cat VERSION)
|
||||
export promdir=prometheus-ipmi-exporter-$VERSION
|
||||
export builddir=$HOME/rpmbuild
|
||||
make build
|
||||
sed -i "s/VERSION/$(cat VERSION)/" rpm/prometheus-ipmi-exporter.spec
|
||||
mkdir -p $builddir/{BUILD,RPMS,SOURCES,SPECS,SRPMS}
|
||||
mkdir -p $builddir/SOURCES/$promdir/usr/bin
|
||||
mkdir -p $builddir/SOURCES/$promdir/usr/lib/systemd/system
|
||||
mkdir -p $builddir/SOURCES/$promdir/etc/sysconfig
|
||||
mkdir -p $builddir/SOURCES/$promdir/etc/sudoers.d
|
||||
cp rpm/prometheus-ipmi-exporter.spec $builddir/SPECS/
|
||||
cp systemd/prometheus-ipmi-exporter.service $builddir/SOURCES/$promdir/usr/lib/systemd/system/
|
||||
cp sudoers/prometheus-ipmi-exporter $builddir/SOURCES/$promdir/etc/sudoers.d/
|
||||
cp prometheus-ipmi-exporter.yml $builddir/SOURCES/$promdir/etc/sysconfig/
|
||||
cp ipmi_exporter $builddir/SOURCES/$promdir/usr/bin/
|
||||
cd $builddir/SOURCES
|
||||
tar -czvf $promdir.tar.gz $promdir
|
||||
cd $builddir
|
||||
echo build dir is $builddir
|
||||
ls -la $builddir/SOURCES
|
||||
rpmbuild -ba $builddir/SPECS/prometheus-ipmi-exporter.spec
|
Loading…
Reference in New Issue