运维|devops|jenkins构建分支选择及执行日志展示

运维|devops|jenkins构建分支选择及执行日志展示

📑 目录

  1. 运维|devops|jenkins构建分支选择及执行日志展示

1.1 主要操作

1.2 分支选择

1.2.1 插件安装

1.2.2 分支参数配置

1.2.3 拉取git源码地方

1.2.4 构建前后功能变化

1.3 git提交日志展示

1.4 执行命令日志结果展示

1.4.1 插件ssh安装

1.4.2 系统配置ssh

1.4.3 任务配置调整

1.4.4 执行命令日志

1.5 展示应用日志

1.5.1 配置如下

1.5.2 命令

1.5.3 展示结果

基于 jenkins Version 2.541.3 实操案例

主要操作

text

复制代码
分支选择
git提交日志展示
远程shell执行日志展示
展示应用日志

分支选择

分支的选择,核心插件 Git Parameter Plugin

插件安装

分支参数配置

拉取git源码地方

将上面参数名BRANCH,录入到Branches to build 地方(${BRANCH})

构建前后功能变化

  • 配置前
  • 配置后

git提交日志展示

执行命令日志结果展示

插件ssh安装

系统配置ssh

任务配置调整

  • 点击 【增加构建步骤】 不是 【增加构建后操作步骤】
  • 先配置【SSH Server】再配置 【SSH site】

注意 SSH Publishers 里面【Exec command】 为空

  • SSH Server
  • SSH site

配置脚本如下:

bash

复制代码
#!/bin/bash
app_name="app"
app_pattern="${app_name}-*.jar"
port=8081
temp_path=/usr/local/temp
deploy_path=/usr/local
JAVA_HOME=/usr/local/jdk-21.0.11
log_path=/data/log
log_file=${log_path}/app.log
deploy_log=${log_path}/deploy-app-$(date +%Y%m%d_%H%M%S).log

mkdir -p "${log_path}"

# 定义日志函数:同时输出到控制台和日志文件(带时间戳)
log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') $*" | tee -a "${deploy_log}"
}

log "=====部署开始 ${app_name}====="

# 等待Jar包上传完成,最多10s
new_jar=""
for ((i=0;i<10;i++)); do
    new_jar=$(find "${temp_path}" -maxdepth 1 -name "${app_pattern}" | head -1)
    [ -f "${new_jar}" ] && break
    log "等待Jar包上传 $i/10"
    sleep 1
done
[ ! -f "${new_jar}" ] && log "错误:未找到Jar包" && exit 1

jar_name=$(basename "${new_jar}")
target_jar="${deploy_path}/${jar_name}"
log "待部署包:${new_jar}"

# 停止旧进程并等待进程消亡
run_pid=$(ps -ef | grep "java -jar" | grep "${app_name}" | grep -v grep | awk '{print $2}')
if [ -n "${run_pid}" ]; then
    log "终止旧进程 ${run_pid}"
    kill -15 "${run_pid}"
    for ((i=0;i<8;i++)); do
        ! ps -p "${run_pid}" >/dev/null && break
        log "等待旧进程退出..."
        sleep 2
    done
    if ps -p "${run_pid}" >/dev/null; then
        log "超时,强制杀死 ${run_pid}"
        kill -9 "${run_pid}"
        sleep 2
    fi
fi

# 端口兜底释放
while lsof -t -i:"${port}" >/dev/null; do
    log "端口${port}占用,等待释放"
    sleep 2
done

# 更新jar
rm -f "${deploy_path}/${app_pattern}"
mv "${new_jar}" "${target_jar}"

# 启动服务
log "启动应用 port:${port}"
nohup ${JAVA_HOME}/bin/java -jar \
-Dserver.port=${port} \
-Xmx512m -Xms256m \
"${target_jar}" >> "${log_file}" 2>&1 &
new_pid=$!
log "新进程PID: ${new_pid}"

sleep 3
if ! ps -p "${new_pid}" >/dev/null; then
    log "警告:进程启动异常,请查看日志 ${log_file}"
fi

rm -rf "${temp_path:?}"/*
log "=====部署完成====="
exit 0

执行命令日志

展示应用日志

  • 通过增加ssh 命令方式

配置如下

命令

bash

复制代码
#!/bin/bash
# 等待5秒,让服务完成启动输出日志
sleep 5
# 查看最后300行日志,自行调整行数
tail -n 300 /data/log/app.log

展示结果

相关推荐
A-刘晨阳9 分钟前
K8s集群中的数据库新范式:KES-Operator解锁部署、扩缩容、备份全链路自动化
运维·数据库·云原生·kubernetes·自动化
JoyCong199839 分钟前
知识科普:ToDesk鸿蒙版高级功能免费开放使用了!
运维·服务器·华为·智能手机·harmonyos·远程工作
cjp5601 小时前
011. UG二次开发,UG管道通讯服务器与wpf客户端通讯
linux·运维·服务器
迪康coolmu1 小时前
企业文档防泄密五层防护实战:基于迪康端点安全一体化管理系统的设计与落地
运维·经验分享·安全
智能运维指南1 小时前
AI加持下的可观测平台与传统平台有什么本质区别?智能告警降噪和根因分析是否可靠?
运维·人工智能·可观测平台·嘉为蓝鲸
就叫飞六吧1 小时前
SSH 本地端口转发:用 localhost 访问远程服务
运维·ssh
snow@li2 小时前
服务器运维:Redis 安装笔记
运维
JavaPub-rodert2 小时前
Docker 容器启动了,不代表服务真的能用:Healthcheck 实战
运维·docker·容器
正仪2 小时前
systemd 是什么?
linux·运维·windows
暖核2 小时前
华为云运维三件套实战:云审计 + 云监控 + 云日志完整操作指南
linux·运维·华为云