gitlab+jenkins 自动化部署 持续集成

环境:

1、centos7.6

2、jdk1.8.0_141

3、4G 30G 4core

4、关闭防火墙和selinux

一、安装jenkins

  1、 下载jenkins https://pkg.jenkins.io/redhat/  jenkins-2.208-1.1.noarch.rpm

  2、安装jdk和jenkins rpm包

  rpm -ivh jdk-8u141-linux-x64.rpm

  rpm -ivh jenkins-2.208-1.1.noarch.rpm

  3、启动服务及设置开机启动

  systemctl start jenkins  && chkconfig jenkins on  service jenkins status

  /etc/sysconfig/jenkins   #配置文件,可查看监听端口及其它配置

  4、访问管理页面,可通过上面配置文件更改管理页面端口。 http://192.168.10.79:8080

  4.1、按照提示填写密码

    

  4.2、通过验证后,可选择右上角关闭或自定选择插件来安装。

    

     

   4.3、Jenkins 改成中文语言显示

    系统管理    插件管理中下载如下插件接口

     Localization: Chinese (Simplified)

    修改admin 密码---> 右上角admin--->设置--->找到密码栏设置好进行保存

   4.4、下载安装插件

    4.4.1、通过界面进行搜索安装插件

    

    4.4.2、下载插件直接拷到服务器插件目录  /var/lib/jenkins/plugins/

    4.4.3 必须安装的几个插件

ssh                #执行远程脚本
GitLab Plugin    #集成gitlab用
Gitlab Hook Plugin    #钩子插件
Build Authorization Token Root Plugin    #构建授权token

 

二、安装gitlab

  1、安装环境依赖包,curl policycoreutils openssh-server openssh-clients postfix wget

  yum -y install curl policycoreutils openssh-server openssh-clients postfix wget

  2、关闭sendmail,iptables,开启postfix 开机启动

  systemctl enable postfix && systemctl start postfix    systemctl stop firewalld.service

  3、添加gitlab源,并安装,有可能出现问题,我这步老是出问题走的第4步进行安装

  curl -sS http://packages.gitlab.cc/install/gitlab-ce/script.rpm.sh | sudo bash
  yum -y install gitlab-ce

  4、下载rpm安装包安装

  wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

  rpm -ivh gitlab-ce-12.5.3-ce.0.el7.x86_64.rpm

  5、修改gitlab配置文件并重置gitlab启动

  vim /etc/gitlab/gitlab.rb #修改gitlab配置文件

  external_url ‘http://192.168.10.53‘  #修改gitlab监听ip和端口

  gitlab-ctl reconfigure  #重置gitlab配置加载

  gitlab-ctl restart  #重启gitlab

  6、邮件设置

  6.1、vim /etc/gitlab/gitlab.rb  #编辑gitlab配置文件,添加以下配置

gitlab_rails[‘smtp_enable‘] = true
gitlab_rails[‘smtp_address‘] = "mail.king365pay.com"
gitlab_rails[‘smtp_port‘] = 25
gitlab_rails[‘smtp_user_name‘] = "[email protected]"
gitlab_rails[‘smtp_password‘] = "xiefugui123"
gitlab_rails[‘smtp_domain‘] = "king365pay.com"
gitlab_rails[‘smtp_authentication‘] = "login"
gitlab_rails[‘smtp_enable_starttls_auto‘] = true
gitlab_rails[‘smtp_tls‘] = false
gitlab_rails[‘gitlab_email_from‘] = ‘[email protected]‘

  6.2、重置gitlab配置文件并重启gitlab

  gitlab-ctl reconfigure
  gitlab-ctl restart

  6.3、打开邮件测试控制台进行测试

  gitlab-rails console    #测试控制台

  Notify.test_email(‘接收方邮件地址’,’邮件标题’,’邮件内容’).deliver_now   #测试邮件发送

  7、web第一次登录更改root密码

三、实现 jenkins +gitlab 自动更新代码

gitlab:    192.168.10.53
jenkins: 192.168.10.79:8080

  1、配置jenkins gitlab密钥免密验证

    1.1、jenkins服务器生成密钥对  ssh-keygen -t rsa  #将在 /root/.ssh/ 生成一对密钥对 id_rsa-->私钥  id_rsa.pub-->公钥

    1.2、把私钥拷贝到jenkins全局凭证里, jenkins web管理界面-->系统管理-->凭据-->系统-->全局凭据-->新建凭据

    1.3、添加全局用户名和私钥验证方式,把生成的 id_rsa 私钥拷到这里

    

  1.4、把jenkins root用户成生成的公钥拷贝到 gitlab,gitlab web管理界面, 右上角root下拉框-->设置-->左边菜单栏 ssh密钥-->jenkins上的 id_rsa.pub内容

    

  1.5、jenkins 使用 ssh-copy-id -i [email protected]

    更改gitlab ssh配置文件,开启密钥无密码验证方式

  2、配置jenkins ssh服务器
    jenkins web主页面-->系统管理-->系统设置-->ssh remote hosts-->添加gitlab ip port 使用刚才建立的私钥凭据

    

  3、gitlab配置, 用户,用户组,项目,绑定好三者关系,添加用户至用户组授权开发者权限,

  

  4、jenkins新建项目和设置

    4.1、新建一个构建自由风格的任务并进入配置,源码管理里,写入gitlab新建项目的地址,选择之前建立好的凭据

    

    4.2、gitlab添加webhook,如有报Url is blocked: Requests to the local network are not allowed,修改设置

    

    此处添加钩子的url和token是在jenkins项目里触发器里,高级里面生成的token和上面的链接

    

    

    4.3、立即构建并查看详细信息,并且查看项目目录查看是否拉取代码成功

    

    

    

    可以看到Jenkins已经成功从gitlab上面拉取代码

    4.4、修改jenkins运行用户为root, 便于接下来以root用户与web服务器的密钥认证,因jenkins的passwd里登录为 /bin/false,且没有与web服务器互相认证,无法正常运行脚本

    vim /etc/sysconfig/jenkins

    JENKINS_USER="root"

    5、新建一个web站点,并且建立好jenkins和web站点的密钥认证

      5.1、新建web站点可用nginx或tomcat.

      yum install nginx -y

      echo "<h1>Web Server</h1>" > /usr/share/nginx/html/index.html

      systemctl start nginx

      curl -I localhost

    

    ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]   #建立jenkins与web服务器间的免密密钥登录认证

    6、自动化同步代码

    6.1、在jenkins上编写同步代码脚本

    cd /var/lib/jenkins/scripts

    vim deploy.sh   

#!/bin/bash

CODE_DIR="/var/lib/jenkins/workspace/newtest"     #项目目录
DATE_TIME=`date +%Y-%m-%d-%H-%M-%S`     #时间格式
TAR_NAME=web-${DATE_TIME}.tar.gz        #打包后的名字
WEB_ADDR=192.168.10.227                   #web服务器地址
WEB_DIR="/usr/local/tomcat1/webapps"             #web服务器站点目录的上一级 "/usr/local/tomcat1/webapps"
WEB_NEWDIR_NAME=web-${DATE_TIME}        #web服务器新建的站点目录名字

#进入到项目目录并进行打包代码
tarcf_code(){
    cd $CODE_DIR && tar czf /opt/$TAR_NAME ./*
}

#拷贝到web服务器的站点目录的上一级
scp_code(){
    scp /opt/$TAR_NAME $WEB_ADDR:$WEB_DIR
}

#连接web服务器进行解压压缩包到新的一个已时间命名的站点目录
tarxf_code(){
    ssh $WEB_ADDR "cd $WEB_DIR && mkdir $WEB_NEWDIR_NAME && tar xf $TAR_NAME -C $WEB_NEWDIR_NAME"
}

#将新建的站点目录与html站点目录做一个软链接
ln_code(){
    ssh $WEB_ADDR "cd $WEB_DIR && rm -rf new && ln -s $WEB_NEWDIR_NAME new"
}

#重启tomcat
reboot(){
    ssh $WEB_ADDR "cd $WEB_DIR && sh ../bin/shutdown.sh && sh ../bin/startup.sh"
}

del_code(){
    ssh $WEB_ADDR "cd $WEB_DIR && rm -rf $TAR_NAME"
}

main(){
    tarcf_code;
    scp_code;
    tarxf_code;
    ln_code;
    reboot;
}
main

同步脚本

    6.2、配置jenkins,调用部署脚本

    

    7、配置jenkins返回构建状态到gitlab

     7.1、打开gitlab,右上角下拉设置,左连菜单栏访问令牌,然后生一个令牌,记录下token码 

    

    7.2、打开jenkins,系统管理-->系统设置-->gitlab,输入连接名和url,点击添加gitlab api token添加信息,测试连接

    

    7.3、配置项目设置里 构建后操作

    

    7.4、测试构建后的状态是否有返回gitlab

    

        

原文地址:https://www.cnblogs.com/xiefugui/p/12050100.html

时间: 2024-10-10 05:18:24

gitlab+jenkins 自动化部署 持续集成的相关文章

gitlab+jenkins自动化部署

基于gitlab和jenkins的自动化部署 Gitlab基于Jenkins自动化部署教程: https://blog.csdn.net/aaaaaab_/article/details/82012044 https://www.cnblogs.com/dengbingbing/p/10448185.html GitLab是一个代码仓库,用来管理代码. Jenkins是一个自动化服务器,可以运行各种自动化构建.测试或部署任务.所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenki

GitLab+Jenkins结合构建持续集成(CI)环境

持续集成概述 持续集成概述:持续集成(continuous integration)持续集成是指开发者在代码的开发过程中,可以频繁的代码部署集成到主干,并进行自动化测试. 持续交付:持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境. 持续部署:在持续交付的基础上,把部署到生产环境的过程自动化. 版本控制系统概述 什么是版本控制系统 版本控制系统(Version Control System): 是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统. 版本控制系统不仅

gitlab+jenkins+maven+docker持续集成(十一)——sonarqube及sonarscanner代码审查

Sonar是一个用于代码质量管理的开源平台,用于管理Java源代码的质 量.通过插件机制,Sonar 可以集成不同的测试工具,代码分析工具,以及持续集成工具,比如pmd-cpd.checkstyle. findbugs.Jenkins.通过不同的插件对这些结果进行再加工处理,通过量化的方式度量代码质量的变化,从而可以方便地对不同规模和种类的工程 进行代码质量管理. 同时 Sonar 还对大量的持续集成工具提供了接口支持,可以很方便地在持续集成中使用 Sonar. 此外,Sonar 的插件还可以对

gitlab+jenkins+maven+docker持续集成(六)——.Jenkins获取git tags代码进行持续集成

GitFlow的工作流 如上图所示,在开发工作中,不同的代码分支对应着项目或产品的不同形态,围绕特定形态的人力投入也不相同.随着时间的推进, 我们在 开发分支 中合并产品的功能实现,产品的功能逐步完善. 当产品功能完善到一定阶段,可以交付给测试团队进行内部测试时,产品代码可以合并到 测试分支(注意,上图未体现测试分支,实际中是否需要测试分支需要具体而定),编译打包测试. 经过若干迭代测试,功能稳定成熟,产品可以发布,此时,代码合并到主干(master)分支,用于发布(TAG标记). 所以这里用T

gitlab+jenkins+maven+docker持续集成(三)——自动构建

具体原理图,如下,构建项目配置,这里略过,我们直接配置gitlab的自动构建 通过webhook可以实现自动构建,当然jenkins的强大之处在于插件,我们先安装插件 Jenkins-->插件管理 Gitlab Hook Plugin GitLab Plugin 安装后,就可以开始 了 在项目--配置--构建触发器 选择, Build when a change is pushed to GitLab 这样我们就得到了URL和一串Secret token 然后在gitlab配置webhook ,

gitlab+jenkins+maven+docker持续集成(七)——.Jenkins Pipeline持续集成

Pipeline的几个基本概念: Stage: 阶段,一个Pipeline可以划分为若干个Stage,每个Stage代表一组操作.注意,Stage是一个逻辑分组的概念,可以跨多个Node. Node: 节点,一个Node就是一个Jenkins节点,或者是Master,或者是Agent,是执行Step的具体运行期环境. Step: 步骤,Step是最基本的操作单元,小到创建一个目录,大到构建一个Docker镜像,由各类Jenkins Plugin提供 新建pipeline项目 进入配置 这里要参考

gitlab+jenkins+maven+docker持续集成(十)——参数化构建过程之多环境tag构建

同一个项目,要构建到不同的环境,而且对应的分支或tag也不相同,这里就要用到jenkins的参数化构建过程 中的Git Parameter和Choice Parameter, 先看下效果 实现过程 构建过程:Git Parameter -->Name: branch_selector -->Parameter Type :Tag  (这里我选择tag) 构建过程:Choice Parameter 源码管理 这样就可以实现效果,其中我们设置的参数,都可以以变量形式传到我们需要运行的脚本里. 补充

gitlab+jenkins+maven+docker持续集成(一)——Jenkins安装配置

jenkins安装与配置 下载jenkins最新版本 http://mirrors.jenkins.io/war/ 配置jdk环境,建议1.8以上 安装tomcat, 建议8以上 将下载后的jenkinsh上传到tomcat/webapps下,先配置完以下三步再启动 1.设置JENKINS_HOME环境参数 打开tomcat的bin目录,编辑catalina.sh文件.在# OS specific support.  $var _must_ be set to either true or fa

gitlab+jenkins+maven+docker持续集成(五)——Maven 项目构建配置

首先,安装插件Maven Integration plugin 接下来我们配置Global Tool Configuration 前提先在系统里安装好jdk, maven, 创建maven项目 其它配置大同小异,主要说明下这步 pom.xml 我这里的是在项目中,如果是其它路径这里直接配置好路径就可以 pom.xml配置这里略过 配置后,我们构建