• gitlab+jenkins 搭建部署


    • 为什么要搭建gitlab和jenkins?
      • 开发人员在每次开发完或修改一个bug后都要手动合并,打包或者连接服务器执行打包部署,每次手动操作,极大的影响了开发人员的效率。
      • gitlab和jenkins组合起来,开发人员只需要进行推送或合并代码到gitlab就可以实现服务自动打包,发布,部署,通知。
    • 操作流程:
    • 实验环境:
    • 环境准备:三台服务器 版本:Centos7.3
      • 关闭防火墙和selinux
      • GitLab版本:10.2.2
      • jenkins版本:jenkins-2.222-1.1
        • 插件软件包:jenkins-plugins.tar.gz
      • nginx版本:nginx/1.18.0
    • 实验步骤:
      • 8.5:安装gitlab 搭建出web界面平台
        • 1.安装前提软件:
          • yum install curl policycoreutils openssh-server openssh-clients postfix -y
        • 3.rpm安装软件包:
          • rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
        • 4.修改配置文件,指定本服务器的ip地址:
          • 打开配置文件:vim /etc/gitlab/gitlab.rb
        • 5.配置启动gitlab:
          • gitlab-ctl reconfigure
          • 查看状态:gitlab-ctl status
          • gitlab服务管理命令(开启/关闭/重启)
            • gitlab-ctl start/stop/restart
        • 6.使用浏览器登录gitlab:
          • 创建组:

          • 点击下方create groups创建即可
          • 创建用户:
          • 将用户加入组:
            • Gitlab用户在组中有五种权限:*****
            • Guest:可以创建issue、发表评论,不能读写版本库
            • Reporter:可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
            • Developer:可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
            • Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
            • Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限
          • 创建项目:
            • Gitlab中的组和项目有三种访问权限:
            • Private:只有组成员才能看到
            • Internal:只要登录的用户就能看到
            • Public:所有人都能看到
          • 将8.5主机的本地用户的秘钥上传至gitlab的用户上:
            • 生成密钥:ssh-keygen
            • 查看密钥,将密钥复制:
              • cat /root/.ssh/id_rsa.pub

          • 返回web界面:
          • 7.克隆下载项目:
            • git clone git@192.168.8.5:dev/web.git
          • 8.添加自己名称与邮箱
            • cd web/
            • git config --global user.name "lhy"
            • git config --global user.email "1793594332@qq.com"
          • 9.修改内容,然后上传代码至gitlab的web项目中
            • echo 123456 > new.txt
            • git add .
            • git commit -m "add new.txt"
            • git push -u origin master
          • 10.在8.6主机上生成密钥 然后复制秘钥 将密钥复制到gitlab平台上的张三用户上
            • ssh-keygen
            • cat /root/.ssh/id_rsa.pub
            • 在gitlab web平台上切换张三用户 与上面通方法 将密钥复制给张三用户
          • 11.在8.6主机关联远程的gitlab仓库
            • mkdir /data
            • cd /data
            • git init
            • 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"
              • git checkout -b ops
              • echo 6666666 > new111.txt
              • git add .
              • git commit -m "add new111.txt"
            • 将创建的分支推送至gitlab的master主分支上
              • git push -u origin ops
            • 在web界面上查看 是否有了刚才创建的new111文件和ops分支
            • 12.在8.6服务器上部署jenkins:
              • 下载jenkiins软件包:
                • https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.222-1.1.noarch.rpm
              • rpm -ivh jenkins-2.222-1.1.noarch.rpm
            • 13.修改配置文件(默认jenkins端口为8080,如果同gitlab一起安装,需要修改端口)
              • vim /etc/sysconfig/jenkins
              • 修改:
              • JENKINS_USER="root"
              • JENKINS_PORT="8081"
            • 14.启动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
            • 16.登录访问:
              • 查看密码
                • cat /var/lib/jenkins/secrets/initialAdminPassword
              • 登录进来以后 不需要使用它的插件
            • 17.将插件拖至服务器当中:
              • tar xf jenkins-plugins.tar.gz
              • cd plugins/
              • cp -rp * /var/lib/jenkins/plugins/
              • 重启服务:
                • systemctl restart jenkins
            • 18.修改jenkins中的admin用户密码:
              • 修改之后重新登录
            • 19.将jenkins与gitlab关联:
              • 在jenkins上下载gitlab中master的文件,查看本地是否有那些文件
              • 查看8.6服务器的/var/lib/jenkins/workspace目录,会有个项目名相同的文件夹
              • cd /var/lib/jenkins/workspace/

              • 至此 jenkins与gitlab关联成功!
            • 20.使用脚本将jenkins与nginx的网页根目录关联,使其可以自动更新网页根目录
              • 在8.7服务器上安装nginx:
                • yum -y install nginx
              • 打开jenkins网页,将最新项目代码 下载至本地
                • 下方蓝色代表下载无误
              • 在8.6服务器上编写想nginx服务器上传代码的脚本
                • mkdir /scripts
                • vim /scripts/web.sh
                • 添加:
                • #!/bin/sh
                • CODE_DIR=/var/lib/jenkins/workspace/web/
                • WEB_DIR=/usr/share/nginx
                • IP=192.168.8.7
                • TIME=`date +%F-%H-%M-%S`
                • 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服务器上的网页根目录是否存在了最新上传的项目代码
              • 访问nginx网页 查看是否发生变化:
                • 网页发生了变化 代表脚本无误 关联无误
            • 21.实现自动构建上传代码,使其可以察觉gitlab上项目代码的变化,自动运行脚本。
              • 1

              • 将URl和令牌复制到gitlab上
              • 在8.5服务器上对网页进行细微修改,然后再访问查看是否发生了变化
                • cd web
                • vim index.html
                • git add .
                • git commit -m "modify index.html"
                • git push -u origin master
              • 再次访问标题发生了变化
              • 至此实验结束 有需要软件包的朋友们 可以私信小编!!!
  • 相关阅读:
    批量在文件名中的特定文字的左边或右边位置添加文字
    首先,你要自信| 万工随笔
    go使用snmp库查询mib数据
    使用Feign实现远程调用
    远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境
    数据库中查询所有表信息,查询所有字段信息
    【Python 千题 —— 基础篇】输出列表中的偶数
    【JavaEE】多线程案例-定时器
    Java 8之后的那些新特性(二):文本块 Text Blocks
    抓住晨会驱动【目标管理】
  • 原文地址:https://blog.csdn.net/2302_77503226/article/details/136379400