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
            • 再次访问标题发生了变化
            • 至此实验结束 有需要软件包的朋友们 可以私信小编!!!
相关推荐
饮啦冰美式7 分钟前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu
wowocpp7 分钟前
ubuntu 22.04 server 安装 和 初始化 LTS
linux·运维·ubuntu
Huaqiwill8 分钟前
Ubuntun搭建并行计算环境
linux·云计算
wclass-zhengge11 分钟前
Netty篇(入门编程)
java·linux·服务器
Lign1731412 分钟前
ubuntu unrar解压 中文文件名异常问题解决
linux·运维·ubuntu
vip4511 小时前
Linux 经典面试八股文
linux
大霞上仙1 小时前
Ubuntu系统电脑没有WiFi适配器
linux·运维·电脑
Karoku0662 小时前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix
为什么这亚子2 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
布值倒区什么name2 小时前
bug日常记录responded with a status of 413 (Request Entity Too Large)
运维·服务器·bug