美文网首页
jenkins的部署与应用

jenkins的部署与应用

作者: 苏米西 | 来源:发表于2019-07-05 14:17 被阅读0次

    一、Jenkins概述

    image.png

    二、jenkins的部署

    1、环境需求

    java-1.8、git、maven等
    环境部署简略!

    2、jenkins的安装

    2.1、下载

    本文采用rpm包的形式进行安装,选择自己需要的版本进行安装。

    地址:https://pkg.jenkins.io/redhat-stable/

    2.2、安装

    本文采用的是jenkins-2.121.3的版本。

    # jenkins-2.121.2-1.1.noarch.rpm
    # rpm -qla|grep jenkins-2.121.3-1.1.noarch.rpm
    /etc/init.d/jenkins
    /etc/logrotate.d/jenkins
    /etc/sysconfig/jenkins
    /usr/lib/jenkins
    /usr/lib/jenkins/jenkins.war
    /usr/sbin/rcjenkins
    /var/cache/jenkins
    /var/lib/jenkins
    /var/log/jenkins
    # 可以看到默认的一些安装目录,这里根目录是/var/lib/jenkins,考虑到分区,/var一般空间很小!可以进行更改。当然你也可以安装完,在/etc/sysconfig/jenkins中更改!看个人喜好吧!更改也是看情况吧!
    更改方法:
    # rpm -i --relocate /var/lib/=/data/svr/ jenkins-2.121.3-1.1.noarch.rpm
    
    # 安装
    # rpm -ivh jenkins-2.121.3-1.1.noarch.rpm
    
    ps:本文没有进行更改目录,默认安装的!
    # egrep -v "^$|*#" /etc/sysconfig/jenkins
    JENKINS_HOME="/var/lib/jenkins"
    JENKINS_JAVA_CMD=""
    JENKINS_USER="apps"         
    # 默认是jenkins用户,但是我们没有创建这个用户,所以执行某些命令是会报错的,这里也不建议创建,为方便运行脚本等权限问题,需要修改运行用户哟,改成root用户也行,用常用用户也是可以的,方便执行脚本等操作!
    JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true"
    JENKINS_PORT="8080"
    # 端口建议改下,毕竟怕多个java项目会有端口冲突!
    JENKINS_LISTEN_ADDRESS=""
    JENKINS_HTTPS_PORT=""
    JENKINS_HTTPS_KEYSTORE=""
    JENKINS_HTTPS_KEYSTORE_PASSWORD=""
    JENKINS_HTTPS_LISTEN_ADDRESS=""
    JENKINS_DEBUG_LEVEL="5"
    JENKINS_ENABLE_ACCESS_LOG="no"
    JENKINS_HANDLER_MAX="100"
    JENKINS_HANDLER_IDLE="20"
    JENKINS_ARGS=""
    
    2.3、启动
    # sudo service jenkins start               #centos 6
    # sudo systemctl start jenkins             #centos 7
    # 亦或是 /etc/init.d/jenkins start
    # chkconfig jenkins on                     #开机启动
    # lsof -i :8080
    # 或 netstat -tanp|grep 8080
    
    2.4、初始化jenkins

    浏览器访问:http://ip:8080

    1562203547240.png
    2.5、安装插件

    如果你之前装过呢,了解需要什么插件就“选择插件安装”,反之“点击安装推荐插件”。毕竟如果需要其他插件,可以安装完在系统中进行安装哟!


    1562203809276.png
    1562204286446.png
    2.6、创建管理员用户

    添加用户,电子邮箱等,然后保存并完成。


    1562204442759.png
    1562204486382.png
    1562204574195.png

    登录:


    1562204911398.png
    部署完成:
    1562205018131.png

    三、jenkins的配置

    1、配置用户

    1.1、新建用户

    系统管理--管理用户--新建用户

    1562207054412.png
    1.2、用户权限限制

    系统管理--全局安全配置

    1562207909625.png
    添加刚创建的用户,赋予相关权限即可
    1562208265375.png
    ps:务必要点击下方的保存哟!

    2、插件管理

    系统管理--管理插件--可选插件
    选择自己需要的插件进行安装,点击直接安装,最好点击完勾选重启!
    一般插件:

    Ansible plugin
    
    Ant Plugin
    
    Blue Ocean
    Build Timeout
    
    Email Extension Plugin
        
    Git Parameter Plug-In
    Gitlab Hook Plugin
    GitLab Plugin
    
    Maven Invoker plugin
    Maven Integration plugin
    
    Publish Over SSH
    SSH plugin
    SSH Slaves plugin
    
    Rebuilder
    Safe Restart
    
    1562208831801.png

    3、系统设置

    系统管理--系统设置
    主要是把一些所需的环境添加上!这里简略!

    3.1、配置远程连接

    说一下最后那个Publish over SSH,这个就是把包发送到远程服务器!

    主要有两种形式,密码和私钥连接!

    passphrase: 这个是通过密码的形式连接

    Path to key:私钥路径 Path to key 和key 填其一就行!

    key:私钥

    # ssh-keygen
    # Generating public/private rsa key pair.
    Enter file in which to save the key (/home/apps/.ssh/id_rsa)     一直按回车
    # cd /home/apps/.ssh
    # cat id_rsa.pub >> authorized_keys
    # scp authorized_keys apps@192.168.3.19:/home/apps/.ssh          #发送到远程服务器
    

    Remote Directory:远程目录
    当然如果还有其他特殊要求,比如端口不是默认的22等,可以在高级那改哟!

    1562209402122.png
    填写完,点击Test configuration,如果显示success,则表明正常连接!否则需要排查密码、以及私钥对不对咯!
    1562241311905.png
    保存即可!

    4、全局工具配置

    系统管理--全局工具配置
    这里主要是添加git、maven等环境
    如果本机安装了git、maven等环境,添加安装路径就行!没有的话,勾选自动安装!
    例如git
    Name:git
    Path to Git executable:/data/svr/git/bin/git
    maven: maven
    MAVEN_HOME: /data/svr/maven


    1562219207961.png

    四、新建项目

    1、配置凭据

    1562243373375.png

    添加凭据,git用户以及密码


    1562243517079.png

    2、新建maven项目

    1562243747553.png
    2.1、配置git地址
    1562244213992.png
    2.2、构建触发器

    这里默认,按需更改!


    1562244258118.png
    2.3、构建环境
    1562244632651.png
    1. 这里填写的是打好包的路径,是相对路径,相对于工作空间目录的,工作空间默认是在 $JENKINS_HOEM/workspace 目录下。每次新建一个构建任务时,会在此目录下创建一个和任务名同名的目录(比如:npc-admin),在此目录下存放从远程代码库拉取的源代码,并且构建完成的文件(比如jar 包)也会在 npc-admin/target 目录下。
    2. 是在把打好包的文件传输到远程应用服务器时,不希望被创建的目录名。 这个目录名必须是在 Source files 选项中填写的路径最前面的部分中。
    3. 远程应用服务器的目录,这个目录假如没有会被自动创建,但是此目录是给相对路径,相对于之前在系统设置中的 SSH Servers 中配置的服务器端路径,如下图中的 /data/web/npc-server
    4. 指构建后在远程应用服务器上执行的命令。

      注意:这里执行命令的用户同样是以下图中的Username 里填写的用户的身份执行的。假如执行命令是执行一个在远程应用服务器上的一个脚本,那么路径和文件都必须存在,并且,脚本中的任何相对路径都会相对于此用户的家目录。

      1562289068738.png
    2.3.1、发布脚本
    # cd /data/web/npc-server
    # vim deploy.sh
    
    #!/bin/bash
    # auther:suketongxue
    # date:2019/6/30
    DATE=$(date +%Y%m%d%H%M%S)
    source /etc/profile
    
    #项目根目录
    PROJECT_DIR=/data/web/npc-server
    
    #应用执行根目录
    APP_DIR=$PROJECT_DIR/$1
    
    #打出参数
    echo "JENKINS_HOME:"$JENKINS_HOME
    echo "APP_DIR:"$APP_DIR
    echo "JARFILE_NAME:"$JARFILE_NAME
    
    #自动创建备份目录
    if [ ! -d $APP_DIR/backup ];then
       mkdir -p $APP_DIR/backup
    fi
    
    #杀掉原进程
    cd $APP_DIR
    JAR_NAME=`ls -lt .|grep "jar$"|head -n 1|awk '{print $NF}'`
    
    echo ">>>>>>>>>>>Start killing old processes<<<<<<<<<<<<<<<"
    PID=`ps -ef | grep "$JAR_NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
    echo "$PID"
    echo ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"
    for pid in $PID
    do
    kill -9 $pid
    echo "killed $pid"
    done
    echo ">>>>>>>>>>>>Finish kill old processes<<<<<<<<<<<<<<<<"
    
    #备份刚打的jar包
    cd $APP_DIR
    echo ">>>>>>>>>>>>>>>>>Start backup<<<<<<<<<<<<<<<<<<<<<<<<"
    cp $JAR_NAME $APP_DIR/backup/$JAR_NAME-$DATE
    echo ">>>>>>>>>>>>>>>>finish backup<<<<<<<<<<<<<<<<<<<<<<<<"
    
    #启动应用并打日志
    echo ">>>>>>>>>>>>>>>>>>>Start to run<<<<<<<<<<<<<<<<<<<<<<"
    cd $APP_DIR
    java -jar $JAR_NAME  > out.log &
    if [ $? = 0 ];then
            sleep 30
            tail -n 50 out.log
    fi
    
    echo ">>>>>>>>>>>>>>>>>>>finish to run<<<<<<<<<<<<<<<<<<<<<"
    
    cd $APP_DIR/backup/
    ls -lt|awk 'NR>5{print $NF}'|xargs rm -rf
    
    2.4、构建
    1562289925118.png

    参数:

    • -DskipTests=true,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。

    • -Dmaven.test.skip=true,不执行测试用例,也不编译测试用例类。
      然后保存!

    2.5、发布
    1562290096015.png

    查看发布情况,根据报错查明原因!


    1562290181038.png
    1562290568253.png

    注释:SSH: Transferred 1 file(s) 有一个文件,说明发送到了远程服务器的指定目录中!

    五、插件集成

    请看下一篇文章,哈哈!

    相关文章

      网友评论

          本文标题:jenkins的部署与应用

          本文链接:https://www.haomeiwen.com/subject/hsjshctx.html