zoukankan      html  css  js  c++  java
  • jenkins

    jenkins

    https://jenkins.io/zh/download/
    https://pkg.jenkins.io/redhat-stable/
    我们下载软件包看小版本号,数字越大,说明越稳定
    插件下载
    https://plugins.jenkins.io/
    http://updates.jenkins-ci.org/download/plugins/

    history 命令显示执行时间和执行者
    export HISTTIMEFORMAT="%Y-%m-%d:%H-%M-%S:whoami: "

    准备环境

    jenkins
    jenkins

    两台TOMCAT

    tar xf jdk-8u221-linux-x64.tar.gz
    ln -sv /apps/jdk1.8.0_221 /apps/jdk
    tar xf apache-tomcat-8.5.43.tar.gz
    ln -sv /apps/apache-tomcat-8.5.43 /apps/tomcat
    
    ps -ef |grep tomcat|grep -v grep |awk '{print $2}'
    因为是做实验,我们关掉一些功能
    vim /apps/tomcat/conf/server.xml
    <Host name="localhost"  appBase="/data/tomcat/webapps"
                unpackWARs="flase" autoDeploy="flase">
    
    useradd www -u 2000
    mkdir -p /data/tomcat/webapp
    chown www.www /apps/tomcat/ -R
    chown  www.wwww /data/tomcat/webapp -R
    
    [root@tomcat1 ~]# cat /data/tomcat/webapps/testapp/index.jsp 
    tomcat1 192.168.10.230
    [root@tomcat2 ~]# cat /data/tomcat/webapps/testapp/index.jsp 
    tomcat2 192.168.10.231

    tomcat启动脚本

    #!/bin/bash
    ##
    ###
    ####
    
    JDK_HOME=/apps/jdk
    CATALINA_HOME=/apps/tomcat
    export JDK_HOME CATALINA_HOME
    source /etc/profile
    #PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
    #NUM=`ps -ef | grep -v grep | grep java | awk '{print $2}' | wc -l`
    
    #case $1 in
    start(){
        echo "正在判断服务状态,请稍等!"
        echo "请稍等3秒钟"
        echo "3";sleep 1;echo "2";sleep 1; echo "1";sleep 1
      if netstat -an | grep 8080 | grep LISTEN > /dev/null;then 
        echo "tomcat 已经正在运行了"
      else
        echo “tomcat没有运行,1秒后启动”
        echo 1;sleep 1
        $CATALINA_HOME/bin/catalina.sh start
        echo “tomcat 已经成功启动完成,5秒后判断是否启动成功”
        echo "5";sleep 1;echo "4";sleep 1
        echo "3";sleep 1;echo "2";sleep 1; echo "1";sleep 1
      if netstat -an | grep 8080 | grep LISTEN > /dev/null;then 
        PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
        NUM=`ps -ef | grep -v grep | grep java | awk '{print $2}' | wc -l`
        echo "tomcat 已经成功启动 ${NUM}个tomcat进程,PID为${PID}"
        else
        echo "tomcat启动失败,请重新启动"
          echo 1
      fi
      fi
      }
    stop(){
        NUM1=3
        PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
        NUM=`ps -ef | grep -v grep | grep java | awk '{print $2}' | wc -l`
        echo "3";sleep 1;echo "2";sleep 1; echo "1";sleep 1
      if netstat -an | grep 8080 | grep LISTEN > /dev/null 
        then
        echo "tomcat运行中,1秒关闭"
        echo "1";sleep 1
        echo "tomcat即将关闭,请稍等"
        $CATALINA_HOME/bin/catalina.sh stop;echo "tomcat正在关闭"
        sleep ${NUM1}
        echo "3";sleep 1;echo "2";sleep 1; echo "1";sleep 1
        pkill java && pkill tomcat
        if netstat -an | grep 8080 | grep LISTEN > /dev/null;then
           PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
           NUM=`ps -ef | grep -v grep | grep java | awk '{print $2}' | wc -l`
           kill -9 $PID;echo "tomcat is fail ${NUM}"
        else 
           echo "tomcat 已经关闭完成"
           echo "3";sleep 1;echo "2";sleep 1; echo "1"
        fi
      else
         echo "tomcat没有运行"
         echo 1
      fi
      if netstat -an | grep 8080 | grep LISTEN > /dev/null; then
        PID=`ps -ef | grep -v grep | grep java | awk '{print $2}'`
        echo "tomcat is fail"
        sleep 2
        pkill tomcat;sleep 2
        if netstat -an | grep 8080 | grep LISTEN > /dev/null;then
           echo "tomcat is fail"
           pkill java;sleep2
        fi
      fi
      }
    restart(){
    stop
    start
    } 
    
    case "$1" in
    start)
    start
    ;;
    
    stop)
    stop
    ;;
    
    restart)
    restart
    ;;
    
    *)
    echo $"USAGE: $0 {start|stop|restart|status}"
    esac
    
    
    

    keepalived+haproxy

    node1

    [root@node1 ~]# vim /etc/keepalived/keepalived.conf 
    
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         root@localhost
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.10.230
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_iptables
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    
    vrrp_instance VI_1 {
        state MASTER
        interface eth0
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.233 dev eth0 label eth0:0
        }
    }
    [root@node1 ~]# grep -v "#" /etc/haproxy/haproxy.cfg 
    
    global
        log         127.0.0.1 local2
    
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy.pid
        maxconn     4000
        user        haproxy
        group       haproxy
        daemon
    
        stats socket /var/lib/haproxy/stats
    
    defaults
        mode                    http
        log                     global
        option                  httplog
        option                  dontlognull
        option http-server-close
        option forwardfor       except 127.0.0.0/8
        option                  redispatch
        retries                 3
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
        maxconn                 3000
    listen webs
      bind 192.168.10.233:80
      mode http
      log global
      option httplog
      server 192.168.10.230 192.168.10.230:8080 check inter 3000 fall 2 rise 5
      server 192.168.10.231 192.168.10.231:8080 check inter 3000 fall 2 rise 5

    node2

    [root@node2 ~]# vim /etc/keepalived/keepalived.conf 
    
    ! Configuration File for keepalived
    
    global_defs {
       notification_email {
         root@localhost
       }
       notification_email_from Alexandre.Cassen@firewall.loc
       smtp_server 192.168.10.231
       smtp_connect_timeout 30
       router_id LVS_DEVEL
       vrrp_skip_check_adv_addr
       vrrp_strict
       vrrp_iptables
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
    
    vrrp_instance VI_1 {
        state BACKUP
        interface eth0
        virtual_router_id 51
        priority 80
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            192.168.10.233 dev eth0 label eth0:0
        }
    }
    
    [root@node2 ~]# grep -v "#" /etc/haproxy/haproxy.cfg 
    
    global
        log         127.0.0.1 local2
    
        chroot      /var/lib/haproxy
        pidfile     /var/run/haproxy.pid
        maxconn     4000
        user        haproxy
        group       haproxy
        daemon
    
        stats socket /var/lib/haproxy/stats
    
    defaults
        mode                    http
        log                     global
        option                  httplog
        option                  dontlognull
        option http-server-close
        option forwardfor       except 127.0.0.0/8
        option                  redispatch
        retries                 3
        timeout http-request    10s
        timeout queue           1m
        timeout connect         10s
        timeout client          1m
        timeout server          1m
        timeout http-keep-alive 10s
        timeout check           10s
        maxconn                 3000
    listen webs
      bind 192.168.10.233:80
      mode http
      log global
      option httplog
      server 192.168.10.230 192.168.10.230:8080 check inter 3000 fall 2 rise 5
      server 192.168.10.231 192.168.10.231:8080 check inter 3000 fall 2 rise 5
    cat /etc/sysctl.conf
    net.ipv4.ip_nonlocal_bind = 1
    net.ipv4.ip_forward = 1
    sysctl -p

    jenkins

    若发现jenkins起不来
    yum install jenkins-2.138.4-1.1.noarch.rpm
    systemctl start jenkins

    candidates="
    /apps/jdk/bin/java  //目录加第一行
    /etc/alternatives/java
    /usr/lib/jvm/java-1.8.0/bin/java
    /usr/lib/jvm/jre-1.8.0/bin/java
    /usr/lib/jvm/java-1.7.0/bin/java
    /usr/lib/jvm/jre-1.7.0/bin/java
    /usr/bin/java
    "
    
    vim /etc/sysconfig/jenkins
    JENKINS_JAVA_CMD="$candidate"
    systemctl daemon-reload
    systemctl start jenkins

    tailf /var/log/jenkins/jenkins.log
    [root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
    77df77ee737c4451a6098463c57aeed7

    用浏览器访问192.168.10.253:8080
    密码就是上面一串
    jenkins

    点推荐,这个过程取决于你的网速
    jenkins

    显示插件数
    [root@jenkins ~]# ls /var/lib/jenkins/plugins/|wc -l
    146

    用户名为jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    1、安装插件gitlab+blue ocean
    jenkins

    jenkins
    jenkins

    安装过程
    jenkins

    systemctl restart jenkins

    创建一个任务
    jenkins

    jenkins
    jenkins

    jeknins
    jeknins

    安装role-based 使用这个插件做授权管理
    jenkins

    jenkins
    jenkins

    设置完成后不要退出 不要退出 不要退出
    jenkins

    创建一个用户
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    看到所创建的用户没有任务权限
    jenkins

    设置权限 在系统管理
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    只给read一个权限
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    最好在开一个浏览器做下测试,使用刚创建的用户登陆下

    关联任务
    jenkins

    配置邮件
    jenkins

    jenkins
    jenkins

    获取邮箱的授权码
    jenkins

    jenkins
    jenkins

    用USER1用户登陆构建一个
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins生成sshkey

    [root@jenkins ~]# ssh-keygen
    [root@jenkins ~]# cat /root/.ssh/id_rsa.pub 
    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDepqIhyHOxr14B+vD4DwRN00fYxJ6ylbs4eiT/Cm+GFEh+A54ZNwPq48/lNQFD3Ue/7AAqxLztxqFiu+epuOcMwRYp8ZccY7M6XeMJHU+J8RKn0PnyvGiVjmIQrR/81OO6EYlmDd2qiBEhYa8j8n88aGu9jb0Fd9E6BbWgw6jVUNsUc4uTH9IfnZMhRAK7p2OneXqMEz9NGa157h/2JQZXIpYxTPWsXDVbaxWIyvjI5//6xBQzC9wgd2URKDNFPck5ZRcFs3uCSx6zir36kxpltqCAFet04MG72lZlsHrw8m+4YBZBjCIeXw+G8/Z+/QZP7ZACgGy16CtldGbV+yyD root@jenkins

    用浏览器访问gitlab服务器
    jenkins

    上传jenkins服务器的公钥
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    测试git结果
    git clone git@192.168.10.254:web233/web1.git

    获取私钥
    cat /root/.ssh/id_rsa
    在jenkins添加私钥
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    构建开始前删除工作区(开始前删除目录)
    jenkins

    jenkins
    jenkins

    ll -i /var/lib/jenkins/workspace

    jenkins与tomcat1 2做免密钥登陆
    ssh-copy-id -p22 www@192.168.10.230
    ssh-copy-id -p 22 www@192.168.10.231

    代码如下

    whoami
    #打包过程
    cd /var/lib/jenkins/workspace/test && zip -r web233.zip ./*
    
    #停止tomcat服务
    ssh -p22 www@192.168.10.230 "/etc/init.d/tomcat stop"
    ssh -p22 www@192.168.10.231 "/etc/init.d/tomcat stop"
    
    #传送文件到web服务器
    scp -P22 web233.zip www@192.168.10.230:/data/tomcat/webapps/testapp
    scp -P22 web233.zip www@192.168.10.231:/data/tomcat/webapps/testapp
    
    #代码替换
    ssh -p22 www@192.168.10.230 "cd /data/tomcat/webapps/testapp/ && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"
    ssh -p22 www@192.168.10.231 "cd /data/tomcat/webapps/testapp/ && rm -rf ./index.* && unzip web233.zip && rm -rf web233.zip"
    
    #启动tomcat服务
    ssh -p22 www@192.168.10.230 "/etc/init.d/tomcat start"
    ssh -p22 www@192.168.10.231 "/etc/init.d/tomcat start"

    jenkins
    jenkins

    暂时没有找到解决方法,所以
    一定要把jenkins用户改为root
    一定要把jenkins用户改为root
    一定要把jenkins用户改为root
    [root@jenkins ]# grep root /etc/sysconfig/jenkins
    JENKINS_USER="root"

    可以在控制台输出可以看到
    jenkins

    测试上传一个GIT版本,然后构建

    git clone http://192.168.10.254/web233/web1.git
    lscd web1/
    cat index.html 
    this is web233 test v1...
    this is web233 test v2...
    this is web233 test v3...
    vim index.html 
    this is web233 test v1...
    this is web233 test v2...
    this is web233 test v3...
    this is web233 test v4...
    git add ./* 
    git commit -m "v4"
    git push

    jenkins
    jenkins

    jenkins
    jenkins

    http://192.168.10.230:8080/testapp/
    http://192.168.10.231:8080/testapp/
    http://192.168.10.233/testapp/

    jenkins添加节点

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    [root@jenkins1 ~]# mkdir -pv /var/lib/jenkins/workspace

    注意jenkins-slave java环境放在/usr/local/java

    jenkins
    jenkins

    名字、描述和标签尽量保持一致

    jenkins
    jenkins

    jenkins
    jenkins

    可以通过日志查看部署jenkins slave进度
    jenkins

    jenkins
    jenkins

    jenkins
    jenkins

    在建立一个新的节点jenkins-slave2

    [root@jenkins2 ~]# mkdir -pv /var/lib/jenkins/workspace

    jenkins
    jenkins

    jenkins
    jenkins

    查看日志
    jenkins
    有这些提示,说明JDK没安装,或者环境变量未设置好

    jenkins
    jenkins

    安装JDK完成后就好了,java环境尽量放在/usr/local/java

    jenkins
    jenkins

  • 相关阅读:
    day47---分组多表查询练习
    day47---数据库进阶知识(二)
    day46---数据库练习
    安全项目(癞蛤蟆病毒)
    pywin32安装步骤
    pip安装报错:error:Microsoft Visual C++ 14.0
    windows下anaconda安装
    数据库常用命令
    MySQL数据库初识
    linux安装MySQL
  • 原文地址:https://www.cnblogs.com/fina/p/11213564.html
Copyright © 2011-2022 走看看