jekins集成部署

news2024/9/30 9:35:23

jekins集成部署

  • 1.jekins简介
  • 2.Jenkins部署环境
  • 3. jekins安装
  • 4.配置jekins启动和停止脚本
  • 5.插件安装
    • 5.1.安装maven插件安装
    • 5.2 安装gitee插件
    • 5.3 安装Publish Over SSH插件
    • 5.4 安装 事件机制插件
  • 6.任务构建
    • 6.1 构建任务
    • 6.2 配置giteeApi令牌
    • 6.3 配置gitee源码地址
    • 6.4 在build中配置maven相关参数
    • 6.5 全局参数配置
    • 6.6 构建项目
  • 7.配置远程server
  • 8.配置上传到远程server并且运行
  • 9.jekins构建事件触发
  • 9.jekins构建事件触发

1.jekins简介

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

image-20221211193258263

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启动和停止脚本

image-20221211195407096

#!/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插件安装

image-20221211200326601

5.2 安装gitee插件

image-20221211200541244

5.3 安装Publish Over SSH插件

image-20221211213348211

5.4 安装 事件机制插件

image-20221211235714639

6.任务构建

6.1 构建任务

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

image-20221211200801084

6.2 配置giteeApi令牌

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

image-20221211201416522

访问gitee然后生成一个令牌

image-20221211201650396

6.3 配置gitee源码地址

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

image-20221211202359821

6.4 在build中配置maven相关参数

image-20221211202815457

6.5 全局参数配置

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

image-20221211203710358

6.6 构建项目

image-20221211204300539

image-20221211204400237

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

image-20221211204443213

7.配置远程server

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

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

image-20221211205640771

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

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

image-20221211212515934

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分钟

image-20221211212123903

9.jekins构建事件触发

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

image-20221211235914729

image-20221212000156218

image-20221211212123903

9.jekins构建事件触发

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

image-20221212000156218

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/96256.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

3D激光里程计其二:NDT

3D激光里程计其二:NDT1. 经典NDT2. 计算方式2.1 2D场景求解:2.2 3D场景求解:3. 其他 NDTReference:深蓝学院-多传感器融合 1. 经典NDT NDT 核心思想:基于概率的匹配。目标是将点集 Y 匹配到固定的点集 X 中。这里的联合概率说的是将 X 划分成…

计算机毕业设计springboot+vue社区疫情防控系统

项目介绍 本系统运用最新的技术springboot框架,此框架是现在社会公司生产中所用的必需框架,非常实用,相比于以前的ssm框架,简单很多。前端框架运用vue框架,vue框架是最近几年非常流行的前端技术,适合很多开发语言。主要可以是系统的前端和后端进行解耦,分离,有利于开发者分别注…

设计模式——中介者模式

中介者模式一、基本思想二、应用场景三、结构图四、代码五、优缺点优点缺点一、基本思想 定义一个中介对象来封装一系列对象之间的交互,使原有对象之间的耦合松散,且可以独立地改变它们之间的交互。中介者模式又叫调停模式,它是迪米特法则的…

Proteus8仿真:51单片机LCD1602显示

51单片机LCD1602显示元器件原理图部分代码main.c工程文件元器件 元器件名称排阻RESPACK-851单片机AT89C51LCD1602LM016L按键BUTTON 原理图部分 LCD1602驱动: HD44780显示主要有8位操作8位两行显示,4位操作8位一行显示,8位操作8位一行显示。 LCD1602主要…

【Python】循环语句

目录 1.while 循环 2. for 循环 3. continue 4. break 1.while 循环 基本语法格式 while 条件&#xff1a; 循环体 条件为真&#xff0c;则执行循环体代码 条件为假&#xff0c;则结束循环 例1&#xff1a;打印 1 - 10 的整数 num 1 while num < 10:print(num)num 1 …

【AI with ML】第 10 章 :创建 ML 模型以预测序列

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

MySQL底层索引

目录 一、什么是索引&#xff1f; 二、MySQL索引结构分析【MySQL底层采用的是BTree】 1、为什么不使用二叉树&#xff1f; 2、为什么不使用红黑树&#xff1f; 3、为什么不使用Hash&#xff1f; 4、BTree与B-Tree的区别&#xff1f; 三、MySQL数据库的表结构、索引、数据 1、M…

基于Sharfetter-Gummel和改进的Sharfetter-Gummel计算对流扩散方程的通量(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

1. Arthas的命令

万恶淫为首&#xff0c;百善孝为先 Arthas命令 可以查看相应的文档: https://arthas.aliyun.com/doc/命令.html 如: https://arthas.aliyun.com/doc/grep.html https://arthas.aliyun.com/doc/cat.html 基础命令 help 查看命令帮助信息 cat 查看当前arthas 系统中的任意文件…

【算法】八月算法打卡

2022-08-01 低配版 promise class MyPromise {constructor(executor) {// 成功回调队列this._resolveQueue [];// 失败回调队列this._rejectQueue [];let resolve (val) > {while (this._resolveQueue.length) {const callback this._resolveQueue.shift();callback(v…

【iOS】对象,消息,运行期

文章目录对象&#xff0c;消息&#xff0c;运行期属性属性特质原子性方法名在对象内部尽量直接访问实例变量对象等同性特定类所具有的等同性判断等同性判定的执行深度容器中可变类的等同性以“类族模式”隐藏实现细节创建类族Cocoa里的类族在既有类中使用关联对象存放自定义数据…

原型,原型链,原型的继承

原型的作用? 1.节省内存空间 2.实现数据共享(继承) 什么是原型? 任何一个函数都有propotype属性,它本身是一个对象,我们称之为原型 构造函数,实例化对象与原型之间的关系? 1.任何一个函数都有prototype属性,它本身是一个对象,我们称之为原型 2.构造函数也是函数,也都…

C语言中头文件(.h)编写,头文件的包含<>和““很大不同

头文件书写技巧 1、头文件主要作用&#xff0c;提前声明函数&#xff0c;因为在c语言中必须先声明或定义才能使用 2、在使用到.c文件中需要把这个.h文件进行包含格式是#include <h文件>或#include "h文件名"&#xff0c;但**强烈建议用引号**&#xff0c;尖括…

【码极客精讲】do while语句

上次讲了while语句&#xff0c;这次讲一下do while语句。 do...while 循环是 while 循环的变体。在检查while()条件是否为真之前&#xff0c;该循环首先会执行一次do{}之内的语句&#xff0c;然后在while()内检查条件是否为真&#xff0c;如果条件为真的话&#xff0c;就会重复…

binder调用流程分析

binder是一个非常好的跨进程通信工具&#xff0c;Android对其进行了各种封装&#xff0c;虽然我们用起来简单&#xff0c;但是理解起来却比较困难。 1.自己设计一个跨进程通信机制 在理解binder之前呢&#xff0c;首先我们想一下&#xff0c;如果我们自己设计一个跨进程通信的…

关于树形dp问题的解决

文章目录解决套路案例展示一、二叉树的最大深度二、判断是不是平衡二叉树三、判断是不是二叉搜索树四、判断是否是满二叉树五、二叉树节点间的最大距离六、派对的最大快乐值解决套路 实际上就是设计一个递归函数&#xff0c;该递归函数一定要包含 basecase&#xff0c;即让函数…

[附源码]Python计算机毕业设计高校选课系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

[附源码]Python计算机毕业设计共享自习室管理系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等…

【C++】STL-string的使用

文章目录1.为什么学习string类&#xff1f;1.1 C语言中的字符串OJ题目1&#xff1a;字符串相加2.标准库中的string类2.1 string类(了解)总结&#xff1a;2.2 string类的常用接口说明1. string类对象的常见构造2.string类对象的容量操作max_sizereserve和resize3. string类对象的…

Spirng 痛苦源码学习(三)——Spring中的几个核心老大

文章目录前言一、基础接口1.Resource2.ResourceLoader3.BeanFactory&#xff08;1&#xff09;总览&#xff08;2&#xff09;继承如下&#xff08;3&#xff09;重要的工厂4. ApplicationContext前言 一开始学习spring我们首先还是要搞清楚他的整体架构&#xff0c;就是他是干…