jenkins实战应用,自动化部署应用(生产中简单实战)

前段时间学习了一下jenkins,怕忘了赶紧在工作用运用了一下~~~~~~
关于jenkins安装配置,以及流水线脚本等看这↓↓↓
jenkins安装部署以及应用

项目背景

springboot构建的项目,服务器为阿里云服务器,项目启动方式为shel脚本,本质就是在服务端使用
nohup java -jar xxx.jar &命令启动。

jenkins配置

1.jenkins使用war包方式安装,用tomcat容器运行
2.采用流水线任务方式实现以下流程:

  • 环境检查 (jdk,mvn,git)
  • git代码拉取
  • 原jar包备份
  • 新jar包拷贝到部署目录
  • 应用启动部署

配置流程

项目改造

对项目改造主要有两部分:pom文件改造,创建Jenkins文件用来编写流水线脚本

pom文件改造:

pom主要是增加了profile,目的是在使用maven打包时指定配置文件,例如dev,test,prod等

 <profiles>
        <profile>
            <id>dev</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <spring.profiles.active>dev</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <spring.profiles.active>test</spring.profiles.active>
            </properties>
        </profile>
        <profile>
            <id>prod</id>
            <properties>
                <spring.profiles.active>prd</spring.profiles.active>
            </properties>
        </profile>
      ....

项目的主配置文件也要修改(application.yml):
读取pom中激活的配置文件,默认就是dev

#spring 配置
spring:
  profiles:
    active: @spring.profiles.active@
Jenkinsfile

Jenkinsfile文件放在项目根目录下

pipeline {
    agent {
        label NODE_LABEL
    }

    stages {
        stage('环境监测') {
            steps {
                echo '环境监测'
                sh '''java -version
                git --version
                mvn -v'''
            }
        }
        stage('拉取代码') {
            steps {
               echo '拉取代码'
              	//自己的git
            }
        }
        stage('构建项目') {
            steps {
               echo '构建项目'
               sh 'mvn clean package -Dmaven.test.skip-true -P $ACTIVE_FILE'
            }
         }
        stage('备份jar包') {
            steps {
               echo '备份jar包'
               sh '''\\cp -rf $WORK_DIR/repserver/repserver-0.0.1.jar  $WORK_DIR/repserver/repserver-0.0.1.jar.`date +%m%d`
               sleep 5'''
            }
        }
        stage('拷贝新jar包') {
                steps {
                   echo '拷贝新jar包'
                  sh '''\\cp -rf target/repserver-0.0.1.jar $WORK_DIR/repserver/
                  sleep 5'''
                }
         }
        stage('项目部署') {
            steps {
              echo '项目部署'
              withEnv(['JENKINS_NODE_COOKIE=dontkillme']){
                 sh '''cd $WORK_DIR/repserver/
                 ./start.sh'''
              }

            }
        }
    }
}

这里面定义了一些参数,稍后会再配置任务时进行传入
参数解释:
NODE_LABEL:agent节点label,在构建任务时传入,用来选择具体在哪个node节点上执行任务

ACTIVE_FILE:激活的配置文件,在构建任务时传入,指定maven打包时使用的配置文件,例如测试就传test,正式发布就是传prod

WORK_DIR:agent节点的项目部署目录,不同的节点目录可能不同,在构建任务时传入

这里有个坑!!!
项目部署阶段,犹豫启动项目的shell脚本使用后台启动,也就是nohup &,本地执行脚本没有任何问题,但是在jenkins远程调用脚本就不会启动项目,也不会报错,查了一圈,最后解决,方式就是加一层withEnv
在这里插入图片描述
究其原因,是因为Jenkins默认会在Build结束后Kill掉所有的衍生进程,也就是执行的启动脚本刚启动引用进程就被jenkins给kill掉了,网上有很多人说要在启动的shell脚本中加入“BUILD_ID=XXXX”,这种经过测试没有作用,上面给出的方式经过验证可以用。
还有一种解决方式,就是改jenkins的配置,让jenkiins不再kill衍生进程,好处就是不用每次都写上面的配置,个人感觉这样做不好,可能某些原因导致服务有很多本该结束的进程大量存在,造成资源浪费、
下面是在别处看到的修改jenkins配置的案例,没有试过效果~~
在这里插入图片描述

配置流程

1.配置凭据:git凭据,用来从git上拉取代码;每个agent节点的ssh登陆凭据,用来通过ssh方式连接agent节点
2.添加agent节点,使用ssh方式连接agent
3.创建构建任务item
任务类型为流水线,流水线脚本从git拉取
构建参数说明一下,上面说在流水线脚本中定义了几个参数,需要在构建时传入,那些参数就在这里进行配置
在这里插入图片描述
经过以上这些配置,就可以构建任务进行部署了,配置写比较笼统懂得自然懂,不了解jenkins的看了一头雾水,可以参考开头的jenkins部署和应用文章,也是我写的,那个比较详细,有每一个步骤的详细说明。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值