gitlab集成jenkins触发构建
转载
- 开发人员在每次开发完或修改一个bug后都要手动合并,打包或者连接服务器执行打包部署,每次手动操作,极大的影响了开发人员的效率。
- gitlab和jenkins组合起来,开发人员只需要进行推送或合并代码到gitlab就可以实现服务自动打包,发布,部署,通知。
- 操作流程:
- 实验环境:
- 环境准备:三台服务器 版本:Centos7.3
- jenkins版本:jenkins-2.222-1.1
- 插件软件包:jenkins-plugins.tar.gz
- nginx版本:nginx/1.18.0
- yum install curl policycoreutils openssh-server openssh-clients postfix -y
- 2.下载清华源的gitlab安装包:
- rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
- 4.修改配置文件,指定本服务器的ip地址:
- 打开配置文件:vim /etc/gitlab/gitlab.rb
- gitlab-ctl start/stop/restart
- Guest:可以创建issue、发表评论,不能读写版本库
- Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
- Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
- Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
- Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
- 将8.5主机的本地用户的秘钥上传至gitlab的用户上:
- cat /root/.ssh/id_rsa.pub
- git clone git@192.168.8.5:dev/web.git
- 8.添加自己名称与邮箱
- git config --global user.name "lhy"
- git config --global user.email "1793594332@qq.com"
- 9.修改内容,然后上传代码至gitlab的web项目中
- git commit -m "add new.txt"
- git push -u origin master
- 10.在8.6主机上生成密钥 然后复制秘钥 将密钥复制到gitlab平台上的张三用户上
- cat /root/.ssh/id_rsa.pub
- 在gitlab web平台上切换张三用户 与上面通方法 将密钥复制给张三用户
- git remote add origin git@192.168.8.5:dev/web.git
- git pull origin master
- 创建新的分支,然后上传自己更改的代码
- git config --global user.email "zhangsan@qq.com"
- git config --global user.name "zhangsan"
- echo 6666666 > new111.txt
- git commit -m "add new111.txt"
- 将创建的分支推送至gitlab的master主分支上
- git push -u origin ops
- 在web界面上查看 是否有了刚才创建的new111文件和ops分支
- 13.修改配置文件(默认jenkins端口为8080,如果同gitlab一起安装,需要修改端口)
- vim /etc/sysconfig/jenkins
- systemctl start jenkins
- 15.加快更新,将地址改为国内地址,不然访问会很慢
- vim /var/lib/jenkins/hudson.model.UpdateCenter.xml
- 更改:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 重启服务:systemctl restart jenkins
- cat /var/lib/jenkins/secrets/initialAdminPassword
- 登录进来以后 不需要使用它的插件
- tar xf jenkins-plugins.tar.gz
- cp -rp * /var/lib/jenkins/plugins/
- systemctl restart jenkins
- 修改之后重新登录
- 19.将jenkins与gitlab关联:
- 在jenkins上下载gitlab中master的文件,查看本地是否有那些文件
- 查看8.6服务器的/var/lib/jenkins/workspace目录,会有个项目名相同的文件夹
- cd /var/lib/jenkins/workspace/
- 20.使用脚本将jenkins与nginx的网页根目录关联,使其可以自动更新网页根目录
- yum -y install nginx
- 在8.5服务器上下载gitee码云上项目代码(代码随意)
- cp -a /root/Imitation_MI/* ./
- git commit -m "Initial commit"
- git push -u origin master
- 打开jenkins网页,将最新项目代码 下载至本地
- 下方蓝色代表下载无误
- 在8.6服务器上编写想nginx服务器上传代码的脚本
- CODE_DIR=/var/lib/jenkins/workspace/web/
- cd $CODE_DIR && tar zcf /tmp/web-${TIME}.tar.gz ./*
- scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR
- ssh root@$IP "cd $WEB_DIR && mkdir web-$TIME"
- ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-$TIME && rm -rf web-${TIME}.tar.gz"
- ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-$TIME html"
- 将8.6服务器的公钥传输至8.7服务器,使其可以进行免密登录
- ssh-copy-id root@192.168.8.7
- 运行脚本测试是否成功
- sh /scripts/web.sh
- 查看nginx服务器上的网页根目录是否存在了最新上传的项目代码
- 21.实现自动构建上传代码,使其可以察觉gitlab上项目代码的变化,自动运行脚本。
- 在8.5服务器上对网页进行细微修改,然后再访问查看是否发生了变化
- git commit -m "modify index.html"
- git push -u origin master
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。