jekins集成部署

Posted 野生java研究僧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jekins集成部署相关的知识,希望对你有一定的参考价值。

jekins集成部署

1.jekins简介

Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

2.Jenkins部署环境

基本环境:

1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。

2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。

3.maven客户端,因一般java程序是由maven工程,需要maven打包,当然也有其他打包方式,如:gradle

以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。

1.jdk环境配置: 将jdk解压到指定目录 tar -zxvf jdk压缩包 ,然后配置如下环境变量 ,然后在 /etc/profile 文件末尾 配置如下环境变量

JAVA_HOME=/web/jdk/jdk1.8.0_311
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH

2.git环境配置

# 卸载 git  yum remove git 出现提示输入y即可
# 自行下载地址:https://github.com/git/git/releases/tag/v2.11.0
# 解压  tar zxvf git-2.11.0.tar.gz
# 编译安装 make && make install
# 查看git where is git
# vim /etc/profile 在文件末尾添加 export PATH=$PATH:/usr/local/git/git-2.11.0/bin 
# 更新配置 source /etc/profile
# 检测是否安装成功 git --version

3.maven 环境配置: 将maven解压到指定目录 tar -zxvf jdk压缩包 ,然后在 /etc/profile 文件末尾 配置如下环境变量

# maven config
export MAVEN_HOME=/usr/local/maven/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME/bin

3. jekins安装

1.下载安装包 http://mirrors.jenkins.io/war-stable/2.346.3/jenkins.war

2.在安装包根路径下,运行命令 java -jar jenkins.war --httpPort=7001 ,(linux环境、Windows环境都一样);

3.打开浏览器进入链接 http://localhost:8080.

4.填写初始密码,激活系统

4.配置jekins启动和停止脚本

#!/bin/bash
pid=`ps -ef | grep jenkins.war | grep -v 'grep'| awk 'print $2'| wc -l`
if [ "$1" = "start" ];then
        if [ $pid -gt 0 ];then
    echo 'jenkins is running...'
    else
    nohup java -jar jenkins.war --logfile=server.log --httpPort=7001 > jenkins.log 2>& 1 &
        fi
elif [ "$1" = "stop" ];then
        exec ps -ef | grep jenkins | grep -v grep | awk 'print $2'| xargs kill -9
    echo 'jenkins is stop..'
else
        echo "Please input like this:"./jenkins.sh start" or "./jenkins stop""
fi

启动 ./jekins start 停止 ./jekins stop

5.插件安装

5.1.安装maven插件安装

5.2 安装gitee插件

5.3 安装Publish Over SSH插件

5.4 安装 事件机制插件

6.任务构建

6.1 构建任务

点击新建任务,然后选择构建一个maven项目,然后输入任务名称,点击确认即可

6.2 配置giteeApi令牌

点击用户头像,然后点击左侧凭据,然后添加一个全局的凭据

访问gitee然后生成一个令牌

6.3 配置gitee源码地址

如果repository爆红,那就说明没有配置 giteeApi令牌,或者是ssh访问秘钥。我这里使用的是ssh访问的方式

6.4 在build中配置maven相关参数

6.5 全局参数配置

配置一下jdk环境 已经maven环境 git环境这些 避免出现不必要的错误

6.6 构建项目

构建完毕后我们完全可以直接运行:后期我们在配合脚本的放完全自动化运行

7.配置远程server

我们可以配置远程目录,然后在maven打包完毕后,将这个文件上传到指定服务器的路径下

在全局配置中配置如下内容,配置完毕后可测试一下是否可以连通

8.配置上传到远程server并且运行

前提是启动的端口号不要被占用,后续通过脚本来解决这个问题

jar包上传完毕后需要执行的shell脚本指令

source /etc/profile
cd /web/jenkins/app/jekinsDemo/
chmod 755 start.sh
BUILD_ID=DONTKILLME
/web/jenkins/start.sh  /web/jenkins/app/jekinsDemo/jekinsDemo.jar 8081

start.sh 内容如下

#!/bin/sh
# 第一个参数为jar包路径 第二个参数为启动端口号
#接收第一个参数作为项目名称,根据项目名称找到进程id
project_pid=`ps -ef | grep  $1 | grep 'java' | awk 'printf $2'`
if [ "$project_pid" = "" ];

then
  echo "jar包名称:$1的应用没有启动"
 # 如果该项目没有启动就直接启动
 nohup  java -Dfile.encoding=utf-8 -jar -Dserver.port=$2 $1  >appStart.log &
 check_start=`ps -ef | grep  "$1" | grep 'java' | awk 'printf $2'`

    if [ "$check_start" != "" ];
       then
       echo "jar包名称:$1的应用启动成功,端口号为:$2"
     else
        echo "jar包名称:$1的应用启动失败" 
     fi     
else
  # 如果应用启动,先杀掉改进程
  skill -9 $project_pid
  $check_pid=`ps -ef | grep -w $project_pid | grep java`
  if [ -z $check_pid  ];
    then
        echo 'jar包名称:'$1';进程id:'$project_pid'的应用已经成功停止'
         # 停止掉该引用后就启动该项目
        nohup  java -Dfile.encoding=utf-8 -jar -Dserver.port=$2  $1  >appStart.log &
        check_start=`ps -ef | grep  "$1" | grep 'java' | awk 'printf $2'` 
         if [ "$check_start" != "" ];
            then
            echo "jar包名称:$1的应用启动成功,端口号为:$2"
         else
          echo "jar包名称:$1的应用启动失败" 
        fi 
    else
        echo "jar包名称:$1;进程id:$project_pid的应停止动失败"
  fi
fi

如果出现超时的情况,就在往下拉,找到超时设置,把超时时间设置长一点,默认是2分钟

9.jekins构建事件触发

只要向 http://主机名:7001/buildByToken/build?token=TOKEN 发起请求,并且携带正确的token即可触发构建

9.jekins构建事件触发

只要向 http://主机名:7001/buildByToken/build?token=TOKEN 发起请求,并且携带正确的token即可触发构建

以上是关于jekins集成部署的主要内容,如果未能解决你的问题,请参考以下文章

jekins—持续集成

Jekins windows部署

使用Jekins自动构建项目(GitLab+Java Maven)

jekins 持续集成手记

持续集成高级篇之Jekins参数化构建

为服务部署 Jekins的使用