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界面:
        • 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 pull origin master
          • 创建新的分支,然后上传自己更改的代码

            • 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分支
          • 13.修改配置文件(默认jenkins端口为8080,如果同gitlab一起安装,需要修改端口)

            • vim /etc/sysconfig/jenkins
            • 修改:
            • JENKINS_USER="root"
            • JENKINS_PORT="8081"
          • 14.启动jenkins服务:
            • systemctl start 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服务器,使其可以进行免密登录
            • 运行脚本测试是否成功
              • 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
            • 再次访问标题发生了变化
            • 至此实验结束 有需要软件包的朋友们 可以私信小编!!!
相关推荐
用户9718356334661 分钟前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 小时前
linux 拷贝文件或目录到指定的位置
linux
大树8817 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠17 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质18 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush418 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52018 小时前
Linux 11 动态监控指令top
linux
Inhand陈工19 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
酣大智19 小时前
ARP代理--工作原理
运维·网络·arp·arp代理
不会C语言的男孩19 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言