summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfangshunjian <[email protected]>2022-03-31 10:44:28 +0800
committerfangshunjian <[email protected]>2022-03-31 10:44:28 +0800
commit3f9ff7e918b143872ae741a7a0e7d7b2aaa3eb73 (patch)
tree80e92ab3be3f712c4d30084eab21f299e0e56ab8
parent7ea335e9456110d41634819e361116d8925d61a9 (diff)
feat: 新增 ci
-rw-r--r--.gitlab-ci.yml62
-rw-r--r--tools/afterinstall.sh93
-rw-r--r--tools/afterremove.sh20
-rw-r--r--tools/beforeinstall.sh32
-rw-r--r--tools/config.conf1
-rw-r--r--tools/package.sh43
-rw-r--r--tools/promtail.yaml13
7 files changed, 264 insertions, 0 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
new file mode 100644
index 0000000..6e5b29b
--- /dev/null
+++ b/.gitlab-ci.yml
@@ -0,0 +1,62 @@
+# docker镜像
+image: git.mesalab.cn:7443/nezha/nz-build-env:1.1
+# 依赖的docker服务
+services:
+ - mariadb
+ - redis
+# 开始执行脚本前所需执行脚本
+before_script:
+ - echo "begin ci"
+# 脚本执行完后的钩子,执行所需脚本
+after_script:
+ - echo "end ci"
+# 该ci pipeline适合的场景
+stages:
+ - build
+ - test
+
+cache:
+ paths:
+ - .m2/repository
+
+# 定义的任务
+build_rpm:
+ stage: build
+ # 所需执行的脚本
+ script:
+ - env | sort
+ - chmod +x ./tools/package.sh
+ artifacts:
+ name: "$CI_COMMIT_REF_NAME"
+ when: on_success
+ paths:
+ - ./target/*.xjar
+ - ./target/xjar
+ expire_in: 1 week
+ # 在哪个分支上可用
+ only:
+ - /^rel-.*$/i
+ # 指定哪个ci runner跑该工作
+ tags:
+ - nezha
+
+# 定义的任务
+test:
+ stage: test
+ # 所需执行的脚本
+ script:
+ - env | sort
+ - mvn clean test
+ artifacts:
+ name: "$CI_COMMIT_REF_NAME"
+ when: on_success
+ paths:
+ - ./target/*.xjar
+ - ./target/xjar
+ expire_in: 1 week
+ # 在哪个分支上可用
+ only:
+ - /^dev-.*$/i
+ # 指定哪个ci runner跑该工作
+ tags:
+ - nezha \ No newline at end of file
diff --git a/tools/afterinstall.sh b/tools/afterinstall.sh
new file mode 100644
index 0000000..589002f
--- /dev/null
+++ b/tools/afterinstall.sh
@@ -0,0 +1,93 @@
+#!/bin/sh
+
+# Find Java
+if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then
+ JAVA_EXE="$JAVA_HOME/bin/java"
+elif type -p java > /dev/null 2>&1; then
+ JAVA_EXE=$(type -p java)
+elif [[ -x "/usr/bin/java" ]]; then
+ JAVA_EXE="/usr/bin/java"
+else
+ echo "Unable to find Java"
+ JAVA_EXE="java"
+# exit 1
+fi
+
+# install
+if [ 1 -eq $1 ];then
+ cat > /usr/lib/systemd/system/nz-talon.service <<EOF
+[Unit]
+Description=nz-talon
+After=network.target
+[Service]
+WorkingDirectory=/opt/nezha/nz-talon
+ExecStart=/opt/nezha/nz-talon/xjar ${JAVA_EXE} -Dnz-agent.dir=/opt/nezha/nz-talon -jar /opt/nezha/nz-talon/nz-talon.xjar
+RestartSec=5s
+Restart=always
+[Install]
+WantedBy=multi-user.target
+EOF
+
+ cat > /usr/lib/systemd/system/promtail.service <<"EOF"
+[Unit]
+Description=nz-talon
+After=network.target
+[Service]
+WorkingDirectory=/opt/nezha/promtail
+EnvironmentFile=/opt/nezha/promtail/config.conf
+ExecStart=/opt/nezha/promtail/promtail $OPTION
+RestartSec=5s
+Restart=always
+[Install]
+WantedBy=multi-user.target
+EOF
+
+ systemctl daemon-reload
+ systemctl enable nz-talon && systemctl restart nz-talon
+ systemctl enable promtail && systemctl restart promtail
+ echo 'install nz-talon success !'
+fi
+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
+}
+
+# update
+if [ 2 -eq $1 ];then
+ TALON_PATH=/opt/nezha/nz-talon
+ TMP_PATH=/tmp/nezha/nz-talon
+ PROMTAIL_PATH=/opt/nezha/promtail
+ echo 'move backup config file...'
+ if [ -d $TMP_PATH ];then
+ # 恢复 nz-talon 配置文件
+ for i in $(ls $TALON_PATH/config);do
+ if [ 1 -eq `compareMD5 $WEB_PATH/config/$i $TMP_PATH/config/$i` ];then
+ echo 'return config file '${i}
+ cp -f $TMP_PATH/config/$i $TALON_PATH/config/$i
+ fi
+ done
+ # 恢复 promtail 配置文件
+ for n in $(ls $TMP_PATH/promtail);do
+ if [ -f "$PROMTAIL_PATH/$n" ];then
+ echo 'return config file '${n}
+ cp -f $TMP_PATH/promtail/$n $PROMTAIL_PATH/$n
+ fi
+ done
+ fi
+ systemctl restart nz-talon
+ systemctl restart promtail
+fi
diff --git a/tools/afterremove.sh b/tools/afterremove.sh
new file mode 100644
index 0000000..39cf06b
--- /dev/null
+++ b/tools/afterremove.sh
@@ -0,0 +1,20 @@
+#!/bin/sh
+if [ 0 -eq $1 ];then
+
+ echo 'start remove nz-talon module from disk...'
+
+ systemctl stop nz-talon.service
+ systemctl stop promtail.service
+
+ rm -rf /opt/nezha/nz-talon
+ rm -rf /opt/nezha/promtail
+
+ systemctl disable nz-talon.service
+ systemctl disable promtail.service
+
+ rm -rf /usr/lib/systemd/system/{nz-talon.service,promtail.service}
+
+ systemctl daemon-reload
+
+ echo 'uninstall success!'
+fi
diff --git a/tools/beforeinstall.sh b/tools/beforeinstall.sh
new file mode 100644
index 0000000..d272c6e
--- /dev/null
+++ b/tools/beforeinstall.sh
@@ -0,0 +1,32 @@
+#!/bin/bash
+
+TALON_PATH=/opt/nezha/nz-talon
+PROMTAIL_PATH=/opt/nezha/promtail
+
+if [ 2 -eq $1 ];then
+
+ if [ ! -d ${TALON_PATH}/config ];then
+ exit 0
+ fi
+
+ systemctl stop nz-talon
+ systemctl stop promtail
+
+ TMP_PATH=/tmp/nezha/nz-talon
+ rm -rf $TMP_PATH
+
+ mkdir -p $TMP_PATH
+ mkdir -p $TMP_PATH/promtail
+ cp -rf $TALON_PATH/config $TMP_PATH
+ [ -f "$PROMTAIL_PATH/promtail.yaml" ] && cp -rf $PROMTAIL_PATH/promtail.yaml $TMP_PATH/promtail
+ [ -f "$PROMTAIL_PATH/config.conf" ] && cp -rf $PROMTAIL_PATH/config.conf $TMP_PATH/promtail
+ echo 'backup config file from '${TALON_PATH}
+
+ if [ 0 -lt $(rpm -aq nz-talon|wc -w) ];then
+ echo 'clean before install...'
+ rm -rf $TALON_PATH
+ rm -rf $PROMTAIL_PATH
+ fi
+fi
+
+
diff --git a/tools/config.conf b/tools/config.conf
new file mode 100644
index 0000000..eb25dc3
--- /dev/null
+++ b/tools/config.conf
@@ -0,0 +1 @@
+OPTION=" -config.file /opt/nezha/promtail/promtail.yaml " \ No newline at end of file
diff --git a/tools/package.sh b/tools/package.sh
new file mode 100644
index 0000000..9821e84
--- /dev/null
+++ b/tools/package.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+set -evx
+pwd
+
+# 初始化 minio
+MINIO_HOST=http://192.168.44.36:2020/
+MINIO_USER=admin
+MINIO_PWD=Nezha@02!
+mc alias set nz $MINIO_HOST $MINIO_USER $MINIO_PWD
+
+
+BUILD_PATH=./build
+RPM_TALON_PATH=$BUILD_PATH/opt/nezha/nz-talon
+RPM_PROMTAIL_PATH=$BUILD_PATH/opt/nezha/promtail
+
+mkdir -p $RPM_TALON_PATH $RPM_PROMTAIL_PATH
+mkdir -p $RPM_TALON_PATH/bin $RPM_TALON_PATH/conf
+mkdir -p $RPM_PROMTAIL_PATH/bin $RPM_PROMTAIL_PATH/conf
+
+echo 'packaging nz-talon ...'
+# mvn 编译 nz-talon
+mvn clean install -Dxjar.password=111111 -Dxjar.excludes=/db/*,/static/**/*
+go build ./target/xjar.go
+
+chmod -x ./target/xjar
+cp -f ./target/nz-talon.xjar $RPM_TALON_PATH/bin
+cp -f ./target/xjar $RPM_TALON_PATH/bin
+cp -f ./src/main/resources/{application-prod.yml,application.yml,logback-spring.xml,config/auth.yml,config/token.auth,config/promtail.version} ${RPM_TALON_PATH}/config
+sed -i 's/<property name="log.path" value=".*"/<property name="log.path" value="\/var\/log\/nezha\/nz-talon\/"/g' ${RPM_TALON_PATH}/config/logback-spring.xml
+
+# 下载 promtail
+mc cp nz/depends/loki/promtail-linux-amd64.zip ./
+unzip -o promtail-linux-amd64.zip -d $RPM_PROMTAIL_PATH/bin
+cp -f ./tools/config.conf $RPM_TALON_PATH
+cp -f ./tools/promtail.yaml $RPM_TALON_PATH
+
+
+#修改日志地址 2021_08_26
+sed -i 's/<property name="log.path" value=".*"/<property name="log.path" value="\/var\/log\/nezha\/nz-talon\/"/g' ${RPM_TALON_PATH}/config/logback-spring.xml
+
+fpm -s dir -t rpm -n ${PACKAGE_NAME} -v ${PACKAGE_VERSION} --iteration ${ITERATION} --rpm-os 'linux' --pre-install ${CUR_PATH}/script/nz-talon/beforeinstall.sh --post-install ${CUR_PATH}/script/nz-talon/afterinstall.sh --post-uninstall ${CUR_PATH}/script/nz-talon/afterremove.sh -C ${CUR_PATH}/build/nz-talon -f -p ${CUR_PATH}/rpm
+
+echo 'package nz-talon finished' \ No newline at end of file
diff --git a/tools/promtail.yaml b/tools/promtail.yaml
new file mode 100644
index 0000000..588ade6
--- /dev/null
+++ b/tools/promtail.yaml
@@ -0,0 +1,13 @@
+server:
+ http_listen_address: 127.0.0.1
+ http_listen_port: 19080
+ grpc_listen_port: 19081
+positions:
+ filename: /tmp/positions.yaml
+clients:
+ - url: http://127.0.0.1
+scrape_configs:
+ - job_name: init
+ pipeline_stages:
+ syslog:
+ listen_address: 127.0.0.1:56799 \ No newline at end of file