summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorshizhendong <[email protected]>2024-05-22 10:40:19 +0800
committershizhendong <[email protected]>2024-05-22 10:40:19 +0800
commitabda618596680520e938bd86d7ecdc87e1cf0ffa (patch)
tree168389f3babc6be014c1a0d9c8a0efa7edf6ee1a
parent8cf926a9ce87be40f4e286f3ecf5ad39e28db26c (diff)
build: feat build deb packagenz_ipmi_exporter-24.01.10
-rw-r--r--.gitlab-ci.yml2
-rw-r--r--deb_tools/afterinstall.sh131
-rw-r--r--deb_tools/afterremove.sh24
-rw-r--r--deb_tools/beforeinstall.sh23
-rw-r--r--deb_tools/deps/freeipmi-bmc-watchdog_1.6.6-4+deb11u1_amd64.debbin0 -> 208316 bytes
-rw-r--r--deb_tools/deps/freeipmi-common_1.6.6-4+deb11u1_all.debbin0 -> 352604 bytes
-rw-r--r--deb_tools/deps/freeipmi-ipmidetect_1.6.6-4+deb11u1_amd64.debbin0 -> 205688 bytes
-rw-r--r--deb_tools/deps/freeipmi-tools_1.6.6-4+deb11u1_amd64.debbin0 -> 806600 bytes
-rw-r--r--deb_tools/deps/freeipmi_1.6.6-4+deb11u1_all.debbin0 -> 168828 bytes
-rw-r--r--deb_tools/deps/libipmiconsole2_1.6.6-4+deb11u1_amd64.debbin0 -> 253752 bytes
-rw-r--r--deb_tools/deps/libipmidetect0_1.6.6-4+deb11u1_amd64.debbin0 -> 194524 bytes
-rw-r--r--deb_tools/ipmi_local.yml11
-rw-r--r--deb_tools/package.sh53
-rw-r--r--tools/package.sh17
14 files changed, 244 insertions, 17 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ed28753..3790a2b 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -24,6 +24,8 @@ build_rpm:
- env | sort
- chmod +x ./tools/package.sh
- ./tools/package.sh
+ - chmod +x ./deb_tools/package.sh
+ - ./deb_tools/package.sh
# 在哪个分支上可用
only:
- /^nz_ipmi_exporter-.*$/i
diff --git a/deb_tools/afterinstall.sh b/deb_tools/afterinstall.sh
new file mode 100644
index 0000000..a999dd0
--- /dev/null
+++ b/deb_tools/afterinstall.sh
@@ -0,0 +1,131 @@
+#!/bin/bash
+
+WORK_DIR=/opt/nezha/ipmi_exporter
+
+fn_init_service(){
+ cat > /usr/lib/systemd/system/nz-ipmi-exporter.service <<"EOF"
+[Unit]
+Description=nz-ipmi-exporter
+After=network.target
+[Service]
+WorkingDirectory=/opt/nezha/ipmi_exporter
+EnvironmentFile=-/opt/nezha/ipmi_exporter/config.conf
+ExecStart=/opt/nezha/ipmi_exporter/ipmi_exporter $OPTION
+RestartSec=10s
+Restart=always
+LimitNOFILE=524288
+[Install]
+WantedBy=multi-user.target
+EOF
+}
+
+fn_init_config(){
+ cat > /opt/nezha/ipmi_exporter/config.conf <<EOF
+OPTION=" --web.listen-address='0.0.0.0:19290' --config.file='/opt/nezha/ipmi_exporter/ipmi_local.yml' "
+EOF
+}
+
+# 初始化 rsyslog & logrotate 配置
+fn_init_syslog_logrotate_config(){
+ cat > /etc/rsyslog.d/nz-ipmi-exporter.conf << "EOF"
+if $programname == 'ipmi_exporter' then {
+ /var/log/nezha/nz-ipmi-exporter/nz-ipmi-exporter.log
+ stop
+}
+EOF
+ cat > /etc/logrotate.d/nz-ipmi-exporter << "EOF"
+/var/log/nezha/nz-ipmi-exporter/*.log {
+ daily
+ missingok
+ maxsize 100M
+ rotate 7
+ copytruncate
+ compress
+}
+EOF
+}
+
+compareMD5(){
+ if [ ! -f $1 ] || [ ! -f $2 ];then
+ echo 1
+ return 1
+ fi
+
+ local f1MD5=`md5sum $1|awk '{print $1}'`
+ local f2MD5=`md5sum $2|awk '{print $1}'`
+
+ if [ ${f1MD5} = ${f2MD5} ];then
+ echo 0
+ return 0
+ else
+ echo 1
+ return 1
+ fi
+}
+
+# 还原配置文件
+# $1 需要还原的文件目录 /opt/nezha/ipmi_exporter
+# $2 备份文件目录 /tmp/nezha/ipmi_exporter
+restoreComponentConfig(){
+ if [ ! -d $1 ] || [ ! -d $2 ];then
+ echo "Directory does not exist"
+ return 1
+ fi
+
+ for i in $(ls $2);do
+ if [ 1 -eq `compareMD5 $1/$i $2/$i` ];then
+ echo 'return config file '$1/${i}
+ cp -f $2/$i $1/$i
+ fi
+ done
+}
+
+# install
+if [ 1 -eq $1 ];then
+ fn_init_config
+ fn_init_service
+ fn_init_syslog_logrotate_config
+
+ # 检查命令是否存在,以此判断是否存在 freeipmi 依赖
+ if ! command -v bmc-info &> /dev/null ||
+ ! command -v ipmimonitoring &> /dev/null ||
+ ! command -v ipmi-dcmi &> /dev/null ||
+ ! command -v ipmi-sel &> /dev/null; then
+
+ echo 'freeipmi not found, install freeipmi_1.6.6-4+deb11u1_all.deb'
+ (
+ sleep 5s
+ dpkg -i /opt/nezha/ipmi_exporter/deps/*.deb &> /dev/null
+ ) &
+ else
+ echo 'freeipmi already exists'
+ fi
+
+ systemctl daemon-reload
+ systemctl enable nz-ipmi-exporter && systemctl restart nz-ipmi-exporter
+ systemctl enable cron && systemctl restart cron
+ systemctl enable rsyslog && systemctl restart rsyslog
+ echo 'install nz-ipmi-exporter success !'
+fi
+
+# update
+if [ 2 -eq $1 ];then
+ fn_init_config
+ fn_init_service
+ fn_init_syslog_logrotate_config
+
+ # restore nz-ipmi-exporter config
+ NZ_IPMI_EXPORTER_PATH=/opt/nezha/ipmi_exporter
+ TMP_PATH=/tmp/nezha/ipmi_exporter
+ echo 'move backup config file...'
+ if [ -d $TMP_PATH ];then
+ restoreComponentConfig $NZ_IPMI_EXPORTER_PATH $TMP_PATH
+ fi
+
+ # restart all components
+ systemctl daemon-reload
+ systemctl enable nz-ipmi-exporter && systemctl restart nz-ipmi-exporter
+ systemctl enable cron && systemctl restart cron
+ systemctl enable rsyslog && systemctl restart rsyslog
+ echo 'update nz-ipmi-exporter success !'
+fi
diff --git a/deb_tools/afterremove.sh b/deb_tools/afterremove.sh
new file mode 100644
index 0000000..af18cef
--- /dev/null
+++ b/deb_tools/afterremove.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# 安装目录
+NZ_IPMI_EXPORTER_PATH=/opt/nezha/ipmi_exporter
+
+if [ 0 -eq $1 ];then
+
+ echo 'start remove nz-ipmi-exporter from disk...'
+
+ systemctl stop nz-ipmi-exporter.service
+
+ rm -rf $NZ_IPMI_EXPORTER_PATH
+
+ systemctl disable nz-ipmi-exporter.service
+
+ rm -rf /usr/lib/systemd/system/nz-ipmi-exporter.service
+ rm -rf /etc/rsyslog.d/nz-ipmi-exporter.conf
+ rm -rf /etc/logrotate.d/nz-ipmi-exporter
+
+ systemctl daemon-reload
+ systemctl restart rsyslog
+
+ echo 'uninstall success!'
+fi
diff --git a/deb_tools/beforeinstall.sh b/deb_tools/beforeinstall.sh
new file mode 100644
index 0000000..c591940
--- /dev/null
+++ b/deb_tools/beforeinstall.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+# 安装目录
+NZ_IPMI_EXPORTER_PATH=/opt/nezha/ipmi_exporter
+# 临时目录
+TMP_PATH=/tmp/nezha/ipmi_exporter
+
+# 备份配置
+if [ -d $NZ_IPMI_EXPORTER_PATH ];then
+ rm -rf $TMP_PATH
+ mkdir -p $TMP_PATH
+
+ file=$NZ_IPMI_EXPORTER_PATH/config.conf && [ -f "${file}" ] && \cp -f ${file} $TMP_PATH
+ echo 'backup config file from '${NZ_IPMI_EXPORTER_PATH}
+fi
+
+# 停止服务并卸载
+if [ 0 -lt $(rpm -aq nz-ipmi-exporter|wc -w) ];then
+ echo "stop nz-ipmi-exporter service"
+ systemctl stop nz-ipmi-exporter.service
+ echo 'clean before install...'
+ rm -rf $NZ_IPMI_EXPORTER_PATH
+fi
diff --git a/deb_tools/deps/freeipmi-bmc-watchdog_1.6.6-4+deb11u1_amd64.deb b/deb_tools/deps/freeipmi-bmc-watchdog_1.6.6-4+deb11u1_amd64.deb
new file mode 100644
index 0000000..94b1de5
--- /dev/null
+++ b/deb_tools/deps/freeipmi-bmc-watchdog_1.6.6-4+deb11u1_amd64.deb
Binary files differ
diff --git a/deb_tools/deps/freeipmi-common_1.6.6-4+deb11u1_all.deb b/deb_tools/deps/freeipmi-common_1.6.6-4+deb11u1_all.deb
new file mode 100644
index 0000000..7a6a9a9
--- /dev/null
+++ b/deb_tools/deps/freeipmi-common_1.6.6-4+deb11u1_all.deb
Binary files differ
diff --git a/deb_tools/deps/freeipmi-ipmidetect_1.6.6-4+deb11u1_amd64.deb b/deb_tools/deps/freeipmi-ipmidetect_1.6.6-4+deb11u1_amd64.deb
new file mode 100644
index 0000000..5d6ce47
--- /dev/null
+++ b/deb_tools/deps/freeipmi-ipmidetect_1.6.6-4+deb11u1_amd64.deb
Binary files differ
diff --git a/deb_tools/deps/freeipmi-tools_1.6.6-4+deb11u1_amd64.deb b/deb_tools/deps/freeipmi-tools_1.6.6-4+deb11u1_amd64.deb
new file mode 100644
index 0000000..0c41f5c
--- /dev/null
+++ b/deb_tools/deps/freeipmi-tools_1.6.6-4+deb11u1_amd64.deb
Binary files differ
diff --git a/deb_tools/deps/freeipmi_1.6.6-4+deb11u1_all.deb b/deb_tools/deps/freeipmi_1.6.6-4+deb11u1_all.deb
new file mode 100644
index 0000000..904209b
--- /dev/null
+++ b/deb_tools/deps/freeipmi_1.6.6-4+deb11u1_all.deb
Binary files differ
diff --git a/deb_tools/deps/libipmiconsole2_1.6.6-4+deb11u1_amd64.deb b/deb_tools/deps/libipmiconsole2_1.6.6-4+deb11u1_amd64.deb
new file mode 100644
index 0000000..8770b02
--- /dev/null
+++ b/deb_tools/deps/libipmiconsole2_1.6.6-4+deb11u1_amd64.deb
Binary files differ
diff --git a/deb_tools/deps/libipmidetect0_1.6.6-4+deb11u1_amd64.deb b/deb_tools/deps/libipmidetect0_1.6.6-4+deb11u1_amd64.deb
new file mode 100644
index 0000000..b06cbea
--- /dev/null
+++ b/deb_tools/deps/libipmidetect0_1.6.6-4+deb11u1_amd64.deb
Binary files differ
diff --git a/deb_tools/ipmi_local.yml b/deb_tools/ipmi_local.yml
new file mode 100644
index 0000000..5fd331b
--- /dev/null
+++ b/deb_tools/ipmi_local.yml
@@ -0,0 +1,11 @@
+modules:
+ # cloudatlas:
+ default:
+ # Available collectors are bmc, bmc-watchdog, ipmi, chassis, dcmi, sel, sel-events and sm-lan-mode
+ collectors:
+ - bmc
+ - ipmi
+ - dcmi
+ - chassis
+ - sel
+ - sel-events
diff --git a/deb_tools/package.sh b/deb_tools/package.sh
new file mode 100644
index 0000000..eda86d5
--- /dev/null
+++ b/deb_tools/package.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+set -evx
+CUR_PWD=`pwd`
+
+PACKAGE_NAME=nz-ipmi-exporter
+BRANCH_ARRAY=(${CI_COMMIT_REF_NAME//-/ })
+PACKAGE_VERSION=${BRANCH_ARRAY[1]}.$CI_COMMIT_SHORT_SHA
+ITERATION=Release
+
+RPM_FULL_NAME=${PACKAGE_NAME}_${PACKAGE_VERSION}-${ITERATION}_amd64.deb
+
+# 初始化 minio
+mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD
+
+#依赖包版本
+IPMI_EXPORTER_PKG=ipmi_exporter-1.8.0.linux-amd64.tar.gz
+
+# 拉取依赖文件
+mc cp nz/depends/exporter/$IPMI_EXPORTER_PKG ./
+# rpm 编译目录
+BUILD_PATH=$CUR_PWD/build
+RPM_NZ_IPMI_EXPORTER_PATH=$BUILD_PATH/opt/nezha/ipmi_exporter
+
+mkdir -p $BUILD_PATH $RPM_NZ_IPMI_EXPORTER_PATH $RPM_NZ_IPMI_EXPORTER_PATH/deps
+
+echo 'packaging begin ...'
+
+# 解压
+tar -xzf ./$IPMI_EXPORTER_PKG --strip-components 1 -C $RPM_NZ_IPMI_EXPORTER_PATH
+
+# 配置文件
+cp ./deb_tools/ipmi_local.yml $RPM_NZ_IPMI_EXPORTER_PATH
+
+# 依赖资源
+cp ./deb_tools/deps/*.deb $RPM_NZ_IPMI_EXPORTER_PATH/deps
+
+# DEB
+fpm -s dir -t deb -n ${PACKAGE_NAME} -v ${PACKAGE_VERSION} --iteration ${ITERATION} \
+ --pre-install ./deb_tools/beforeinstall.sh \
+ --post-install ./deb_tools/afterinstall.sh \
+ --post-uninstall ./deb_tools/afterremove.sh \
+ -C $BUILD_PATH -f \
+ -p $BUILD_PATH
+
+# 计算md5值
+cd $BUILD_PATH && md5sum $RPM_FULL_NAME > $RPM_FULL_NAME.md5sum.txt
+cd $CUR_PWD
+
+# 上传编译的rpm 文件
+mc cp $BUILD_PATH/$RPM_FULL_NAME nz/release/$PACKAGE_NAME/$RPM_FULL_NAME
+mc cp $BUILD_PATH/$RPM_FULL_NAME.md5sum.txt nz/release/$PACKAGE_NAME/$RPM_FULL_NAME.md5sum.txt
+
+echo 'package finished'
diff --git a/tools/package.sh b/tools/package.sh
index 79b892d..5f3ce61 100644
--- a/tools/package.sh
+++ b/tools/package.sh
@@ -8,7 +8,6 @@ PACKAGE_VERSION=${BRANCH_ARRAY[1]}.$CI_COMMIT_SHORT_SHA
ITERATION=Release
RPM_FULL_NAME=${PACKAGE_NAME}-${PACKAGE_VERSION}-${ITERATION}.x86_64.rpm
-DEB_FULL_NAME=${PACKAGE_NAME}_${PACKAGE_VERSION}-${ITERATION}_amd64.deb
# 初始化 minio
mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD
@@ -45,14 +44,6 @@ fpm -s dir -t rpm -n ${PACKAGE_NAME} -v ${PACKAGE_VERSION} --iteration ${ITERATI
-C $BUILD_PATH -f \
-p $BUILD_PATH
-# DEB
-fpm -s dir -t deb -n ${PACKAGE_NAME} -v ${PACKAGE_VERSION} --iteration ${ITERATION} \
- --pre-install ./tools/beforeinstall.sh \
- --post-install ./tools/afterinstall.sh \
- --post-uninstall ./tools/afterremove.sh \
- -C $BUILD_PATH -f \
- -p $BUILD_PATH
-
# 计算md5值
cd $BUILD_PATH && md5sum $RPM_FULL_NAME > $RPM_FULL_NAME.md5sum.txt
cd $CUR_PWD
@@ -61,12 +52,4 @@ cd $CUR_PWD
mc cp $BUILD_PATH/$RPM_FULL_NAME nz/release/$PACKAGE_NAME/$RPM_FULL_NAME
mc cp $BUILD_PATH/$RPM_FULL_NAME.md5sum.txt nz/release/$PACKAGE_NAME/$RPM_FULL_NAME.md5sum.txt
-# 计算md5值
-cd $BUILD_PATH && md5sum $DEB_FULL_NAME > $DEB_FULL_NAME.md5sum.txt
-cd $CUR_PWD
-
-# 上传编译的rpm 文件
-mc cp $BUILD_PATH/$DEB_FULL_NAME nz/release/$PACKAGE_NAME/$DEB_FULL_NAME
-mc cp $BUILD_PATH/$DEB_FULL_NAME.md5sum.txt nz/release/$PACKAGE_NAME/$DEB_FULL_NAME.md5sum.txt
-
echo 'package finished'