1 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

    ####卸载Jenkins

  rpm -e jenkins

  删除遗留文件:

  find / -iname jenkins | xargs -n 1000 rm -rf

  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、下载插件有时会timeout失败,可更改更新插件站点,再在线安装

      

      

 

       1 http://mirror.xmission.com/jenkins/updates/update-center.json   # 推荐
       2 http://mirrors.shu.edu.cn/jenkins/updates/current/update-center.json
          3 https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

    4.4.3 必须安装的几个插件

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

     

Locale
Folders
OWASP Markup Formatter
Build Timeout
Credentials Binding
Timestamper
Workspace Cleanup
Ant
Gradle
Maven Integration
Pipeline
GitHub Branch Source
Pipeline: GitHub Groovy Libraries
Git
Subversion
SSH Slaves
Matrix Authorization Strategy
PAM Authentication
LDAP
Email Extension
GitLab
Ansible
SaltStack
Parameterized Trigger
Build Pipeline
Build Authorization Token Root
常用插件安装

 

 

二、安装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'] = "xfg@king365pay.com"
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'] = 'xfg@king365pay.com'

  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 root@192.168.10.53

    更改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 root@192.168.10.227   #建立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

    

 

         

posted @ 2019-12-20 11:23  一无是处谢  阅读(808)  评论(1编辑  收藏  举报