新钛云服已为您服务1459天
前言:
jenkins 多分支扫描相信从事运维工作的相关人员很多都使用过,本身是一个很简单的问题。写这篇文章的目的其实也是很简单,主要解决以下几个问题,以及简单的使用演示。
问题:
问题一:多分支扫描后生成n个job(每个分支会生成一个jobs), 怎么解决指定分支提交代码触发对应分支的job,而不是触发所有jobs执行。
问题二:怎么使相同的jenkinsfile 在不用做任何修改的情况下满足所有分支的jobs。每个分支使用的文件不同后期维护起来也是相当的麻烦。因此保持jenkinsfile 文件一样也是非常有必要的。
简单流程图如下:
优势:
· 方便后期维护,不需要反复的修改jenkinsfile 文件
· 减少了jenkins 压力,屏蔽不必要构建。
疑问:
1、有没有其他方式可以屏蔽不必要的构建呢?
a: 有的,简单点比如每个分支维护一个jenkinsflile. 其他的方案没有进行尝试,留给各位客官自己尝试!
2、多分支流水线是最好的方案吗?
a: 个人观点建议直接使用共享库+参数化构建。共享库的优势在于,所有项目集中管理。更利于devops 工作人员进行管理所有项目的流水线。参数化构建可以解决多分支构建问题。
下面我们将分章节进行进行简单的演示:
第一部分:使用docker 安装jenkins以及相关环境依赖
1.1:jenkins 安装脚本
安装脚本目录结构
root@flysky:/home/gpc# tree -La 1 script/
script/
└── install_jenkins_use_docker.sh
install_jenkins_use_docker.sh
#!/usr/bin/env bash
# jenkins cdn 刷新相关模块安装
# install npm nodejs ant
#docker exec -it -u root jenkins sh
# docker 外挂目录
# docker 容器名字
docker_name=$1
# docker 宿主机的地址
docker_jenkins_export_port=$2
# 判断目录不存在就创建
[ ! -d ${docker_mount_dir} ] && mkdir -p ${docker_mount_dir};
run_jenkins_docker(){
docker run -d --restart=always --name ${docker_name} -p ${docker_jenkins_export_port}:8080 jenkins/jenkins
echo "容器启动完成"
}
echo_jenkins_admin_password(){
jenkins_init_password=$(docker exec ${docker_name} cat /var/jenkins_home/secrets/initialAdminPassword)
echo jenkins admin 密码: ${jenkins_init_password}
}
## 拉取代码jenkins 编译或者构建需要的 脚本代码 如果没有直接屏蔽掉此方法即可
download_jenkins_shell_to_docker(){