首页 > 技术文章 > 构建GitLab 与 Jenkins 持续集成环境

xhbiu 2022-03-08 15:44 原文

  什么是持续集成?

  持续集成 Continuous Integration

  简单来说就是在开发过程当中,可以频繁地将代码部署到主干上。

  持续交付 Continuous Delivery

  指的是在持续集成的环境基础上,将代码部署到预发环境。

  持续部署 Continuous Deoloyment

  在持续交付的基础上,将代码部署到生产环境的自动化。

  gitlab简介

  GitLab和GitHub一样属于第三方基于Git开发的作品,免费且开源,可通过 Web界面来进行管理git仓库。

  jenkins简介

  Jenkins是一个开源的、且基于JAVA代码开发的持续集成系统用于监控持续重复的工作,旨在

提供一个开放易用的软件平台,使软件的持续集成变成可能。

  搭建gitlab

  [root@gitlab ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python   #安装所需组件

  [root@gitlab ~]# systemctl start postfix     #开启postfix邮件服务
  [root@gitlab ~]# systemctl enable postfix

  [root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm    #安装gitlab

  [root@gitlab ~]# rpm -ivh gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm

 

 

  [root@gitlab ~]# vim /etc/gitlab/gitlab.rb     #配置访问路径,第十三行红色部分配置成本机ip地址,也可以改为自定义的域名

    

  [root@gitlab ~]# gitlab-ctl reconfigure    #重置gitlab

 

   

 

   http://192.168.100.102   #访问gitlab

  

 

 

 

  使用gitlab

  gitlab-ctl stop    #关闭gitlab

  gitlab-ctl start   #启动gitlab

  gitlab-ctl restart #重启gitlab

  [root@gitlab ~]# vim /etc/gitlab/gitlab.rb   #主配置文件

   /var/log/gitlab     #日志地址

  gitlab-ctl reconfigure      #慎用!!!

  gitlab设置中文页面如下↓

 

 

 

 

 

   配置邮件报警

  [root@gitlab ~]# vim /etc/gitlab/gitlab.rb

 

   gitlab_rails['smtp_enable'] = true
   gitlab_rails['smtp_address'] = "smtp.qq.com"  #SMTP服务器
   gitlab_rails['smtp_port'] = 465
   gitlab_rails['smtp_user_name'] = "2468154124@qq.com" #邮箱账号
   gitlab_rails['smtp_password'] = "deuyzxdrnlvdecdf"   #这个授权码要去qq邮箱里面才可以得到
   gitlab_rails['smtp_authentication'] = "login"
   gitlab_rails['smtp_enable_starttls_auto'] = true
   gitlab_rails['smtp_tls'] = true
   gitlab_rails['gitlab_email_from'] = '2468154124@qq.com' #邮箱账号

   

  [root@gitlab ~]# gitlab-ctl reconfigure   #重载gitlab

 

  [root@gitlab ~]# gitlab-rails console     #登录控制台发送测试邮件

  irb(main):001:0> Notify.test_email('2468154124@qq.com', 'test', 'biubiubiu').deliver_now

    #标题内容

 

    #进邮箱可以看到刚刚编辑的邮件已经送到。

 

  修改邮箱默认为admin@example.com,修改成我们自己的创建组时会发送邮件警告

 

 

   创建一个群组

 

  

 

 

 

           ##来邮件了

 

     ##添加新成员

 

 

 

  将用户test1添加到刚刚创建的test组里

 

  

  Gitlab用户在组中有五种权限:
  Guest、Reporter、Developer、Master、Owner

  Guest:可以创建issue、发表评论,不能读写版本库

  Reporter:可以克隆代码,不能提交,QA(测试人员)、PM(主管或者产品经理)可以赋予这个权限

  Developer:可以克隆代码、开发、提交、push,RD(研发人员)可以赋予这个权限

  Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限

  Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

          ##去网易邮箱设置密码

 

    ##使用新账号登录gitlab

    可以看到我们设置的测试组。

 

  ##创建项目

 

 

 

  ##在项目中新建一个

 

 

  [root@gitlab ~]# ssh-keygen -t rsa   ##配置密钥,一直回车即可

   

  [root@gitlab ~]# cat .ssh/id_rsa.pub  ##查看公钥

  将公钥上传到gitlab上

 

  

 

  [root@gitlab ~]# yum -y install git   ##安装git

  [root@gitlab ~]# git clone git@192.168.100.102:test1/prod1.git    测试免密,从下图可以看到从gitlab克隆到本地不需要密码。

 

 

     搭建jenkins

     ##因为jenkins是java写的,所以我们需要先安装jdk。

  [root@jenkins ~]# tar -zxvf jdk-8u171-linux-x64.tar.gz -C /usr/local/     ##解压jdk

  [root@jenkins ~]# mv /usr/local/jdk1.8.0_171/ /usr/local/java/

  [root@jenkins ~]# vim /etc/profile   

    ##配置jdk环境变量

  [root@jenkins ~]# source /etc/profile  ##使环境变量生效

    ##查看java版本

  [root@jenkins ~]# wget https://pkg.jenkins.io/redhat-stable/jenkins-2.222.4-1.1.noarch.rpm   ##安装jenkins

  [root@jenkins ~]# rpm -ivh jenkins-2.222.4-1.1.noarch.rpm

  [root@jenkins ~]# vim /etc/sysconfig/jenkins

  

 

  创建软链并启动jenkins

 

    

      ##jenkins默认使用8080端口

 

 访问jenkins并安装相关插件

 http://192.168.100.108:8080

  

 

 

        

 

  安装jenkins所需插件

  Credentials                                                  # 签名证书管理插件
  Gitlab                                                       # 安装后从 GitLab 获取代码
  Git    和 Git Client                                         # 用于 Jenkins 在 GitLab 中拉取源码
  GitLab Hook                                                  # GitLab 触发 Jenkins 构建项目
  Gitlab Authentication                                        # GitLab 和 Jenkins 认证插件
  SSH Plugin                                                   # 进程执行 Shell 脚本
  Publish Over SSH                                             # 用于通过 SSH 部署应用

 

 

 

  将jenkins公钥上传到gitlab上

  [root@jenkins ~]# ssh-keygen -t rsa

 

  [root@jenkins ~]# cat .ssh/id_rsa   #将私钥上传到jenkins上

 

 

 

  ##在jenkins上新建一个项目

 

 

 

 

 

  

 

     ##保存配置,下载一下代码

 

 

   ##蓝色代表成功,红色则失败

 

 

  部署apache服务器

  [root@httpd ~]# yum -y install httpd

  [root@httpd ~]# systemctl start httpd

  [root@jenkins ~]# ssh-copy-id root@192.168.100.103      ##jenkins配置与httpd免密

  创建脚本

 

 

 

    调用脚本

 

 

 

   

 

 

     ##验证

 

 

 

   在jenkins服务器上生成 Token,openssl rand 生成随机密码

 

 

 

  注:-hex:输出结果为16进制数据; 数字12是指定生成的随机字符为12字节,即24个 16 进制个数。

 

    ##在jenkins上构建触发器

 

 

 

  

 

   

  当我们配置好触发器后,只要我们在gitlab上修改代码,gitlab自动通知Jenkins构建任务并把它部署到对应的服务器上。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

推荐阅读