运维 | DevOps | Jenkins 构建分支选择及执行日志展示
基于 Jenkins 2.541.3 的实战案例,演示如何在 Jenkins 中完成分支选择、Git 提交日志展示、远程 Shell 执行日志展示以及应用日志查看。主要操作
分支选择
git提交日志展示
远程shell执行日志展示
展示应用日志分支选择
分支选择的核心是 Git Parameter Plugin 插件,通过该插件可以在构建时动态选择分支,提升 Jenkins 多分支构建的灵活性。插件安装

分支参数配置

拉取git源码地方
将上面参数名 BRANCH 配置到 Branches to build 中,即 ${BRANCH},从而实现按选择分支拉取源码。
构建前后功能变化
- 配置前

- 配置后

git提交日志展示

执行命令日志结果展示
插件ssh安装

系统配置ssh

任务配置调整
- 点击 【增加构建步骤】 不是 【增加构建后操作步骤】

先把【SSH Server】配置好,然后再继续配置【SSH site】。
注意 SSH Publishers 里面【Exec command】 为空- SSH Server

- SSH site

#!/bin/bash
app_name="app"
app_pattern="${app_name}-*.jar"
port=8081
temp_path=/usr/local/temp
deploy_path=/usr/local
JA VA_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 "ja va -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 ${JA VA_HOME}/bin/ja va -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 命令的方式来实现应用日志展示。
配置如下

命令
#!/bin/bash
# 等待5秒,让服务完成启动输出日志
sleep 5
# 查看最后300行日志,自行调整行数
tail -n 300 /data/log/app.log展示结果

