一、gitlab的分支
在公司的日常工作生活中,项目确定后,会构建一条主分支,该分支为开发人员开发完成并测试运行正常的代码程序,但是,开发在开发过程中,不会立即将写好的代码程序立即合并到主分支上,所以需要在主分支之上生成一条开发分支或者说是测试分支,以供开发写好代码后,及时构建程序,查看程序是否按照要求运行。经过不断地测试及调试,确定写好的代码没问题后,最终合并到主分支上,升级程序版本。
1、gitlab新建分支
2、jenkins新建开发分支任务
1》安装插件
jenkins插件安装成功后,先修改配置,再重启jenkins程序
注:老版本Jenkins的CSRF保护功能只需要在 系统管理 > 全局安全配置 中便可进行打开或者关闭。让人头疼的是较高版本的Jenkins竟然在管理页面关闭不了CSRF在Jenkins启动前加入相关取消保护的参数配置后启动Jenkins,即可关闭CSRF。
vim /usr/lib/systemd/system/jenkins.service
Environment="JAVA_OPTS=-Djava.awt.headless=true -Dhudson.security.csrf.GlobalCrumbIssuerConfiguration.DISABLE_CSRF_PROTECTION=true"
systemctl daemon-reload
systemctl restart jenkins
2》新建job
openssl rand -hex 12 #生成随机字符串
3》gitlab配置钩子
钩子中的url为jenkins中构建触发器使用的url,点击测试,测试界面会有返回值,返回201正常,如果返回403等,注意修改跨站请求关闭,授权策略修改为登录用户可以做任何事。
4》拉取代码验证触发器
git clone -b develop http://192.168.43.111/linux43/web1.git #拉取develop分支的代码,b指定分支
cat index.html
linux43 v1 version
linux43 v2 version
注:
root@ubuntu20:/mnt/web1# git config --global user.email "1194153883@qq.com"
root@ubuntu20:/mnt/web1# git config --global user.name "user1"
root@ubuntu20:/mnt/web1# git commit -m "v2"
[develop 4c0d56f] v2
1 file changed, 2 insertions(+), 1 deletion(-)
root@ubuntu20:/mnt/web1# git push
Username for 'http://192.168.43.111': user1
Password for 'http://user1@192.168.43.111':
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 254 bytes | 254.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote:
remote: To create a merge request for develop, visit:
remote: http://192.168.43.111/linux43/web1/merge_requests/new?merge_request%5Bsource_branch%5D=develop
remote:
To http://192.168.43.111/linux43/web1.git
3489954..4c0d56f develop -> develop
gitlab克隆的是哪个分支,提交的时候就提交到哪个分支上
3、构建后项目关联
二、Jenkins分布式
在众多Job 的场景下,单台 jenkins master 同时执行代码clone、编译、打包及构建其性能可能会出现瓶颈 从而会影响代码部署效率,影响 jenkins 官方提供了 jenkins 分布式构建, 将众多 job 分散运行到不同的 jenkins slave 节点, 大幅提高并行 job 的处理能力。
1、配置slave节点的java环境
Slave 服务器创建工作目录 如果 slave 需要执行编译 job ,则也需要配置 java 环境 并且安装 git、svn、maven 等 与 master 相同的基础运行环境,另外也要创建 与 master 相同的数据 目录 ,因为脚本中调用的路径只有相对一 master 的一个路径,此路径在master 与各 node 节点必须保持一致。
mkdir -p /var/lib/jenkins #创建工作目录
chown jenkins.jenkins /var/lib/jenkins/ -R
1》配置jdk环境
tar xf jdk-8u212-linux-x64.tar.gz #解压jdk文件
ln -sv /usr/local/src/jdk1.8.0_212/ /usr/local/jdk #配置软链接,方便之后jdk版本升级
ln -sv /usr/local/src/jdk1.8.0_212/bin/java /usr/bin #之后jenkins需要在/usr/bin中使用java命令
2》修改环境变量
vim /etc/profile #修改环境变量
export HISTTIMEFORMAT="%F %T `whoami` " #修改history命令的输出,添加时间和用户
export export LANG="en_US.utf-8"
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
source /etc/profile #加载环境变量
2、添加slava节点
Jenkins--》系统管理--》节点管理--》新建节点
新建的节点时间要和主节点相同
报错
报错一:
未找到/var/lib/jenkins/jdk/bin/java命令,可以修改软链接指到该路径下
报错二:
jenkins账户对/var/lib/jenkins目录没有权限,修改权限
chown jenkins.jenkins /var/lib/jenkins/ -R
节点添加成功