• 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

        

             

  • 相关阅读:
    hdoj 2544 最短路径
    树状数组 hdoj1166
    并查集学习
    1402大数相乘 FFT算法学习!
    hdu1014
    动态规划 简单题dp
    迷宫路径
    简单的动态规划dp
    poj 3282 (bFS)
    背包问题,看不懂,啊!!!!!!!!dp
  • 原文地址:https://www.cnblogs.com/xiefugui/p/12050100.html
Copyright © 2020-2023  润新知