diff options
| author | shizhendong <[email protected]> | 2024-05-22 10:40:19 +0800 |
|---|---|---|
| committer | shizhendong <[email protected]> | 2024-05-22 10:40:19 +0800 |
| commit | abda618596680520e938bd86d7ecdc87e1cf0ffa (patch) | |
| tree | 168389f3babc6be014c1a0d9c8a0efa7edf6ee1a | |
| parent | 8cf926a9ce87be40f4e286f3ecf5ad39e28db26c (diff) | |
build: feat build deb packagenz_ipmi_exporter-24.01.10
| -rw-r--r-- | .gitlab-ci.yml | 2 | ||||
| -rw-r--r-- | deb_tools/afterinstall.sh | 131 | ||||
| -rw-r--r-- | deb_tools/afterremove.sh | 24 | ||||
| -rw-r--r-- | deb_tools/beforeinstall.sh | 23 | ||||
| -rw-r--r-- | deb_tools/deps/freeipmi-bmc-watchdog_1.6.6-4+deb11u1_amd64.deb | bin | 0 -> 208316 bytes | |||
| -rw-r--r-- | deb_tools/deps/freeipmi-common_1.6.6-4+deb11u1_all.deb | bin | 0 -> 352604 bytes | |||
| -rw-r--r-- | deb_tools/deps/freeipmi-ipmidetect_1.6.6-4+deb11u1_amd64.deb | bin | 0 -> 205688 bytes | |||
| -rw-r--r-- | deb_tools/deps/freeipmi-tools_1.6.6-4+deb11u1_amd64.deb | bin | 0 -> 806600 bytes | |||
| -rw-r--r-- | deb_tools/deps/freeipmi_1.6.6-4+deb11u1_all.deb | bin | 0 -> 168828 bytes | |||
| -rw-r--r-- | deb_tools/deps/libipmiconsole2_1.6.6-4+deb11u1_amd64.deb | bin | 0 -> 253752 bytes | |||
| -rw-r--r-- | deb_tools/deps/libipmidetect0_1.6.6-4+deb11u1_amd64.deb | bin | 0 -> 194524 bytes | |||
| -rw-r--r-- | deb_tools/ipmi_local.yml | 11 | ||||
| -rw-r--r-- | deb_tools/package.sh | 53 | ||||
| -rw-r--r-- | tools/package.sh | 17 |
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 Binary files differnew file mode 100644 index 0000000..94b1de5 --- /dev/null +++ b/deb_tools/deps/freeipmi-bmc-watchdog_1.6.6-4+deb11u1_amd64.deb 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 Binary files differnew file mode 100644 index 0000000..7a6a9a9 --- /dev/null +++ b/deb_tools/deps/freeipmi-common_1.6.6-4+deb11u1_all.deb 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 Binary files differnew file mode 100644 index 0000000..5d6ce47 --- /dev/null +++ b/deb_tools/deps/freeipmi-ipmidetect_1.6.6-4+deb11u1_amd64.deb 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 Binary files differnew file mode 100644 index 0000000..0c41f5c --- /dev/null +++ b/deb_tools/deps/freeipmi-tools_1.6.6-4+deb11u1_amd64.deb 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 Binary files differnew file mode 100644 index 0000000..904209b --- /dev/null +++ b/deb_tools/deps/freeipmi_1.6.6-4+deb11u1_all.deb 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 Binary files differnew file mode 100644 index 0000000..8770b02 --- /dev/null +++ b/deb_tools/deps/libipmiconsole2_1.6.6-4+deb11u1_amd64.deb 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 Binary files differnew file mode 100644 index 0000000..b06cbea --- /dev/null +++ b/deb_tools/deps/libipmidetect0_1.6.6-4+deb11u1_amd64.deb 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' |
