权限管理
Role Strategy插件,此插件适用于jenkins 2.346.3版本,是在https://plugins.jenkins.io/下载的插件
安装完插件重启,在系统管理里就可以可到这个选项了

全局安全配置,授权策略选择role-based-strategy,保存即可

配置管理角色
1.先创建一个角色test_role(空白处填写后add提交),勾选全部read选项(此处不勾选,普通用户登录界面会报错)
2.创建了一个测试组,正则匹配所有包含uat的项目

创建普通用户jenkins_test
返回分配角色,将普通用户添加到策略组内

保存即可。使用普通用户登录,只可以看到uat关键字相关的项目,并且只有构建权限,没有任务的配置权限
钉钉告警
dingtalk插件,装完重启

钉钉群内新建机器人
群聊设置添加机器人

添加自定义机器人

选项加密,同意即可,随即弹出webhook地址(加密信息和webhook地址需要用到)

系统配置添加钉钉的webhook

完成后在项目里添加钉钉通知

构建任务即可触发

maven多项目构建
maven构建时,会下载依赖包,当下次构建的时候会使用本地的依赖包进行构建
多个项目怕依赖冲突或者是想分开管理,可参考如下方法
首先,默认settings.xml文件在如下位置,此文件在maven工作目录下的conf目录

cp一个例如settings-api.xml文件,修改localRepository选项,设置一个新的目录(目录需要新建)

maven构建的时候添加如下参数:
--settings /data/soft/maven3.6.3/apache-maven-3.6.3/conf/settings-api.xml clean install -Dmaven.test.skip=true
--settings参数值得是构建的时候指定此文件作为依赖下载,此文件指向了一个新的目录,这样就可以避免多个项目共用一个maven本地源
构建任务布尔值参数选择


#!/bin/bash
echo "---------------------------------------"
echo "BUILD_COMMON的值为:$BUILD_COMMON"
echo "BUILD_MAPPER的值为:$BUILD_MAPPER"
echo "BUILD_THIRDPARTY_PAY的值为:$BUILD_THIRDPARTY_PAY"
echo "---------------------------------------"
PROJECT_LIST=""
if [ "$BUILD_COMMON" = "true" ]; then
echo "选择项目:baoan-common"
if [ -z "$PROJECT_LIST" ]; then
PROJECT_LIST="baoan-common"
else
PROJECT_LIST="$PROJECT_LIST baoan-common"
fi
else
echo "跳过 baoan-common 构建"
fi
if [ "$BUILD_MAPPER" = "true" ]; then
echo "选择项目:baoan-v2-mapper"
if [ -z "$PROJECT_LIST" ]; then
PROJECT_LIST="baoan-v2-mapper"
else
PROJECT_LIST="$PROJECT_LIST baoan-v2-mapper"
fi
else
echo "跳过 baoan-v2-mapper 构建"
fi
if [ "$BUILD_THIRDPARTY_PAY" = "true" ]; then
echo "选择项目:thirdparty-pay-service"
if [ -z "$PROJECT_LIST" ]; then
PROJECT_LIST="thirdparty-pay-service"
else
PROJECT_LIST="$PROJECT_LIST thirdparty-pay-service"
fi
else
echo "跳过 thirdparty-pay-service 构建"
fi
echo "最终的项目列表: $PROJECT_LIST"
JENKINS_WORKSPACE="/root/.jenkins/workspace/baoan-common--v2-sdk"
# 遍历每个选中的项目
for PROJECT_NAME in $PROJECT_LIST; do
PROJECT_DIR="$JENKINS_WORKSPACE/$PROJECT_NAME"
echo "开始构建项目: $PROJECT_NAME, 路径: $PROJECT_DIR"
# 检查目录是否存在
if [ ! -d "$PROJECT_DIR" ]; then
echo "错误:目录 $PROJECT_DIR 不存在"
exit 1
fi
# 进入目录并构建
cd "$PROJECT_DIR"
/data/soft/maven3.6.3/apache-maven-3.6.3/bin/mvn -f pom.xml --settings /data/soft/maven3.6.3/apache-maven-3.6.3/conf/settings_baoan_uat.xml clean deploy -Dmaven.test.skip=true
done
# 检查构建结果
if [ $? -eq 0 ]; then
echo "项目 $PROJECT_NAME 构建成功"
else
echo "项目 $PROJECT_NAME 构建失败"
exit 1
fi
jenkins灰度发布示例
方式1:nginx权重是一种方式,通过设置权重来控制流量的转入
方式2:jenkins的灰度发布
构建参数设置发布的机器范围


测试脚本内容:
#!/bin/bash
HOST=$1
if [[ $HOST == "GROUP1" ]];then
HOST_LIST="192.168.1.1"
elif [[ $HOST == "GROUP2" ]];then
HOST_LIST="192.168.1.1 192.168.1.2"
elif [[ $HOST == "GROUP3" ]];then
HOST_LIST="192.168.1.1 192.168.1.2 192.168.1.3"
fi
echo ${HOST_LIST}
for server_ip in ${HOST_LIST};do
echo "${server_ip}--->"
done
build构建的时候通过选择参数来指定升级的服务器范围

这里选择了GROUP3

这样通过选择group3获取到了全部机器,后续利用ssh和scp等命令拷贝,替换,执行等操作即可

268

被折叠的 条评论
为什么被折叠?



