diff options
| author | fangshunjian <[email protected]> | 2022-03-31 10:44:28 +0800 |
|---|---|---|
| committer | fangshunjian <[email protected]> | 2022-03-31 10:44:28 +0800 |
| commit | 3f9ff7e918b143872ae741a7a0e7d7b2aaa3eb73 (patch) | |
| tree | 80e92ab3be3f712c4d30084eab21f299e0e56ab8 | |
| parent | 7ea335e9456110d41634819e361116d8925d61a9 (diff) | |
feat: 新增 ci
| -rw-r--r-- | .gitlab-ci.yml | 62 | ||||
| -rw-r--r-- | tools/afterinstall.sh | 93 | ||||
| -rw-r--r-- | tools/afterremove.sh | 20 | ||||
| -rw-r--r-- | tools/beforeinstall.sh | 32 | ||||
| -rw-r--r-- | tools/config.conf | 1 | ||||
| -rw-r--r-- | tools/package.sh | 43 | ||||
| -rw-r--r-- | tools/promtail.yaml | 13 |
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 |
