Skip to content
Snippets Groups Projects
Unverified Commit 12fa31e4 authored by Igor Pashev's avatar Igor Pashev Committed by GitHub
Browse files

Create RPM and DEB packages (#16)

parent 96ed1ace
No related branches found
No related tags found
No related merge requests found
name: CI
on:
pull_request:
workflow_dispatch:
inputs:
versionName:
description: "Release version"
required: true
isDraft:
description: "Draft release"
required: false
default: "true"
defaults:
run:
shell: bash -eux {0}
jobs:
build_centos7_rpms:
name: Build Centos 7 RPMs
runs-on: ubuntu-latest
container:
image: centos:7
steps:
- name: Cancel Workflow Action
uses: styfle/cancel-workflow-action@0.6.0
with:
access_token: ${{ github.token }}
- name: Checkout sources
uses: actions/checkout@v3
- name: Install dependencies
run: yum install -y gcc make rpm-build
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true
- name: Build
run: make rpm
- name: Summary
run: |
find _rpm -type f -name \*.rpm -print -exec rpm -qivlp {} \;
- name: Upload RPMs
uses: actions/upload-artifact@v2
with:
name: centos7_rpm
retention-days: 1
path: _rpm/RPMS/**/*.rpm
build_rocky8_rpms:
name: Build Rockylinux 8 RPMs
runs-on: ubuntu-latest
container:
image: rockylinux:8
steps:
- name: Cancel Workflow Action
uses: styfle/cancel-workflow-action@0.6.0
with:
access_token: ${{ github.token }}
- name: Checkout sources
uses: actions/checkout@v3
- name: Install dependencies
run: dnf install -y gcc make rpm-build
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true
- name: Build
run: make rpm
- name: Summary
run: |
find _rpm -type f -name \*.rpm -print -exec rpm -qivlp {} \;
- name: Upload RPMs
uses: actions/upload-artifact@v2
with:
name: rocky8_rpm
retention-days: 1
path: _rpm/RPMS/**/*.rpm
build_ubuntu20_debs:
name: Build Ubuntu 20.04 DEBs
runs-on: ubuntu-latest
container:
image: ubuntu:20.04
steps:
- name: Cancel Workflow Action
uses: styfle/cancel-workflow-action@0.6.0
with:
access_token: ${{ github.token }}
- name: Checkout sources
uses: actions/checkout@v3
- name: Install dependencies
run: |
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y curl fakeroot
apt-get build-dep -y .
- name: Install latest rust toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: stable
default: true
override: true
- name: Build
run: make deb
- name: Summary
run: |
find _deb -type f -name \*.deb -print -exec dpkg -I {} \; -exec dpkg -c {} \;
- name: Upload DEBs
uses: actions/upload-artifact@v2
with:
name: ubuntu20_debs
retention-days: 1
path: _deb/*.deb
release:
if: github.event_name == 'workflow_dispatch'
name: Release
needs: [build_centos7_rpms, build_rocky8_rpms, build_ubuntu20_debs]
runs-on: ubuntu-latest
steps:
- name: Download Centos 7 RPMs
uses: actions/download-artifact@v3
with:
name: centos7_rpm
- name: Download Rockylinux 8 RPMs
uses: actions/download-artifact@v3
with:
name: rocky8_rpm
- name: Download Ubuntu 20.04 DEBs
uses: actions/download-artifact@v3
with:
name: ubuntu20_debs
- name: Summary
run: find -ls
- name: Publish
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.versionName }}
draft: ${{ github.event.inputs.isDraft }}
files: |
**/*.rpm
**/*.deb
Makefile 0 → 100644
RPM_OPTS = -bb -D '_topdir ${CURDIR}/_rpm' -D '_sourcedir .' -D '_builddir .'
.PHONY: rpm
rpm:
rpmbuild ${RPM_OPTS} lustrefs_exporter.spec
export DH_DESTDIR = ${CURDIR}/_deb
.PHONY: deb
deb:
mkdir -p '${DH_DESTDIR}'
./debian/rules clean
fakeroot ./debian/rules binary
./debian/rules clean
prometheus-lustrefs-exporter (0.1.0-0.1) unstable; urgency=medium
* New release.
-- EMF Team <emf@whamcloud.com> Wed, 05 Apr 2023 09:48:22 +0200
Source: prometheus-lustrefs-exporter
Section: admin
Priority: optional
Maintainer: EMF Team <emf@whamcloud.com>
Standards-Version: 4.5.1
Build-Depends: debhelper-compat (= 12)
Package: prometheus-lustrefs-exporter
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: prometheus exporter for the Lustre filesystem
LICENSE
README.md
/usr/bin/prometheus-lustrefs-exporter
#!/bin/sh
set -e
case "$1" in
configure)
# Add prometheus user
adduser --quiet --system \
--group --gecos "Prometheus daemon" prometheus
if ! dpkg-statoverride --list /var/lib/prometheus >/dev/null; then
chown prometheus:prometheus /var/lib/prometheus
fi
;;
abort-upgrade|abort-remove|abort-deconfigure)
:
;;
*)
echo "postinst called with unknown argument '$1'" >&2
exit 1
;;
esac
#DEBHELPER#
exit 0
#!/bin/sh
set -e
case "$1" in
purge)
# We do NOT remove the system user.
;;
esac
#DEBHELPER#
#!/usr/bin/make -f
export DH_VERBOSE=1
export DEB_BUILD_OPTIONS=noddebs
DH_DESTDIR ?= ..
%:
dh $@ --destdir='$(DH_DESTDIR)'
override_dh_auto_build:
cargo build --release
override_dh_auto_install:
install -v -d debian/tmp/usr/bin
install -v -T target/release/lustrefs-exporter debian/tmp/usr/bin/prometheus-lustrefs-exporter
override_dh_auto_clean:
cargo clean
# No-ops:
override_dh_auto_test:
override_dh_update_autotools_config:
override_dh_autoreconf:
[Unit]
Description=Prometheus exporter for Lustre
Documentation=https://github.com/whamcloud/lustrefs-exporter
[Service]
Restart=on-failure
User=prometheus
ExecStart=/usr/bin/prometheus-lustrefs-exporter
[Install]
WantedBy=multi-user.target
[Unit]
Description=Prometheus exporter for Lustre filesystem
Documentation=https://github.com/whamcloud/lustrefs-exporter
[Service]
Restart=on-failure
User=prometheus
ExecStart=/usr/bin/lustrefs_exporter
[Install]
WantedBy=multi-user.target
Name: lustrefs_exporter
Version: 0.1.0
Release: 1%{?dist}
Summary: prometheus exporter for lustre
License: MIT
Requires(pre): shadow-utils
%description
Prometheus exporter for the Lustre filesystem
%global debug_package %{nil}
%prep
%build
cargo build --release
%install
install -v -d %{buildroot}%{_bindir}
install -v -d %{buildroot}%{_unitdir}
install -v -m 0644 lustrefs_exporter.service %{buildroot}%{_unitdir}
install -v target/release/lustrefs-exporter %{buildroot}%{_bindir}
%{__ln_s} lustrefs-exporter %{buildroot}%{_bindir}/lustrefs_exporter
%files
%{_bindir}/lustrefs-exporter
%{_bindir}/lustrefs_exporter
%{_unitdir}/lustrefs_exporter.service
%pre
getent group prometheus >/dev/null || groupadd -r prometheus
getent passwd prometheus >/dev/null || \
useradd -r -g prometheus -s /sbin/nologin \
-c "Prometheus services" prometheus
%post
%systemd_post %{name}.service
%preun
%systemd_preun %{name}.service
%postun
%systemd_postun %{name}.service
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment