jenkins部署java项目到远程linux上,脚本文件和项目一起上传到gogs上,直接执行gogs上的脚本文件来执行项目

(1)新建maven项目

pom.xml的配置

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>cn.demo</groupId>
<artifactId>jenkins_jar</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>jenkins_jar</name>
<url>http://maven.apache.org</url> <build>
<finalName>jenkins_jar</finalName>
<plugins>
<plugin>
<inherited>true</inherited>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>${compiler.source}</source>
<target>${compiler.target}</target>
<encoding>${project.build.sourceEncoding}</encoding>
</configuration>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<!-- 添加index则不从mainfest中读取classpath,而是从Index.list中读取 -->
<!-- <index>true</index> -->
<manifest>
<mainClass>cn.demo.jenkins_jar.demo.Demo</mainClass>
</manifest> </archive>
</configuration>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<executions>
<execution>
<id>${project.version}</id><!--名字任意 -->
<phase>package</phase> <!-- 绑定到package生命周期阶段上 -->
<goals>
<goal>single</goal> <!-- 只运行一次 -->
</goals> <configuration>
<descriptors> <!--描述文件路径-->
<descriptor>script.xml</descriptor>
</descriptors>
<!--这样配置后,mvn deploy不会把assembly打的zip包上传到nexus-->
<attach>false</attach>
</configuration> </execution> </executions> </plugin>
</plugins> </build> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<compiler.source>1.7</compiler.source>
<compiler.target>1.7</compiler.target>
<junit.version>4.12</junit.version>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
</dependencies> </project>

>maven-assembly-plugin插件指定的 script.xml文件 (文件存放的位置:直接在项目下 (非src))

script.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>script</id> <formats><!--打包的文件格式 -->
<format>zip</format>
</formats> <fileSets>
<fileSet>
<directory>script</directory><!--需要打包的目录 -->
<outputDirectory>/</outputDirectory> <!-- 打包后输出的路径 输出子啊target目录下 -->
</fileSet>
</fileSets> </assembly>

在该项目下直接新建文件夹 script ,在文件夹下新建脚本文件 start.sh  内容如下

start.sh

#!/bin/sh
cd /root/home/program/pro_java/ #得到进程ID pid,kill该进程
pid=`cat /root/home/program/pro_java/pid`
if [ -n "$pid" ]
then
echo "kill -9 的pid:" $pid
kill -9 $pid
fi #执行jar,并将进程挂起,保存进程ID到 pid文件
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup java -jar /root/home/program/pro_java/jenkins_jar.jar & echo "$!" > pid

(2)新建jenkins项目,选择构建maven项目,开始配置

项目名称:新建项目时,填的名称

描述:这里是对项目的描述,解释 自己定义就行了 不影响

源码管理: Git

Repository URL:这里填gogs的仓库地址

Credential:这里选择gogs的登录账号和密码(如果没有就点击右侧的add按钮,添加  只需要填写 用户名和密码就可以了)

构建触发器(这里的配置其实都没什么影响,随便写个令牌,只要选中了触发远程构建就行了,在gogs上对应的仓库里配置web钩子就行)

使用web钩子的作用:只有远程代码有push ,jenkins就会自动构建 (推荐使用)

也可以不选择触发远程构建,选中Poll SCM 配置 H/5 * * * * 表示每5分钟检查一次代码,发现有变动就触发构建 ,但是这种效率不好,不推荐

Build 执行构建pom.xml

执行 maven命令clean package,先clean项目,再重新打包编译

Post Steps:这个勾中第一个就行了,表示构建成功时才运行

点击 add-post build step

选择 send files or execute commands over SSH

进入如下配置

SSH Server   ,

Name: root@172.150.12.32   //安装publish over SSH插件,进行系统设置时的配置 Name名

Source files: target/jenkins_jar.jar,target/jenkins_jar-script.zip  将项目的jar包传送到服务器,将打包shell脚本的zip压缩包传给服务器  //表示需要传送的文件,多个文件用逗号分开

remove prefix:远程linux需要移除的目录名

Remote Directory:远程linux接收这些文件的目录

Exec Command:执行的脚本命令,命令如下

#!/bin/sh
cd /root/home/program/pro_java/   #进入远程目录

unzip -o -d /root/home/program/pro_java/ jenkins_jar-script.zip  #将存放脚本文件的压缩包解压

cd jenkins_jar   #打开解压后的文件夹
sh start.sh  #执行该脚本   该脚本文件内容在文章开头  (1)中

配置到此结束,可以执行构建了

jenkins部署java项目,脚本文件放在远程仓库中 和jar一起打包(六)的更多相关文章

  1. Win10搭建Jenkins部署Java项目(本机和远程Win10部署)

    目录 一.前言&背景 二.环境准备 三.插件安装 四.全局配置 Maven JDK Git Maven 五.新建项目并配置 新建项目 配置 1.Discard old builds 2.Thi ...

  2. 通过Jenkins部署java项目

    部署java项目-创建私有仓库 Jenkins大多数情况下都是用来部署Java项目,Java项目有一个特点是需要编译和打包的,一般情况下编译和打包都是用maven完成,所以系统环境中需要安装maven ...

  3. git jenkins 部署java项目

    1.Java项目部署基本概述:  1.什么是Java项目?  2.为什么Java项目需要使用Maven编译?  3.手动实现Java项目构建?  4.手动实现Java项目架构图? 源码包   jar包 ...

  4. Docker使用jenkins部署java项目到远程linux(三)

    实现功能:从本地提交代码到gogs上,本地的代码会被检测一遍 如果检测通过才能commit成功 然后可以继续执行push命令 .push后在gogs上使用web钩子自动推送到jenkins触发构建,j ...

  5. jenkins部署java项目到远程linux(四)

    (1)新建java项目(maven构建) pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:x ...

  6. jenkins部署java项目

    #########################################jenkins部署#################################3 一.jenkins是什么? J ...

  7. jenkins部署java项目在本地(三)

    (1)新建maven构建的java项目 pom.xml的配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

  8. jenkins部署java项目(五)

    一.web server安装jdk+tomcat其中jdk可以为openjdk,版本1.8 1.1 安装jdk环境 方式一:直接使用yum安装openjdk # * 方式二:本地安装在oracle官网 ...

  9. 六. jenkins部署springboot项目(3)--windows环境--远程windows server服务器

    前提:jenkins服务器和windows server服务器不在一台机器上 对于jenkins服务器上编译好的jar或war包如何推送到windows server服务器上. 参照网上的,在wind ...

随机推荐

  1. Codeforces 1043 F - Make It One

    F - Make It One 思路: dp + 容斥 首先, 答案不会超过7, 因为前7个质数的乘积大于3e5(最坏的情况是7个数, 每个数都缺少一个不同的因子) 所以从1到7依次考虑 dp[i][ ...

  2. 第 7 章 多主机管理 - 047 - 管理 Machine

    管理 Machine Docker Machine 则很简单 docker-machine env host1 显示访问 host1 需要的所有环境变量: 根据提示,执行 eval $(docker- ...

  3. python+selenium2(二)

    看完第一个程序,可能有不懂得地方,里面有定位元素的方式,之后会具体介绍定位的方式.这一篇介绍下对浏览器的操作. (1)浏览器的最大化   有点问题, Message: unknown error: c ...

  4. springmvc: 普通list数据输出json

    springmvc: 普通list数据输出json 加入json依赖 <dependency> <groupId>com.fasterxml.jackson.core</ ...

  5. Hadoop/HBase Capacity Planning

    http://blog.cloudera.com/blog/2010/08/hadoophbase-capacity-planning/

  6. TP5中即点即改,json分页,单删

    HTML页面: <!doctype html><html lang="en"><head> <meta charset="UTF ...

  7. linux常用网络命令ping和arping

    linux常用网络命令ping和arping ping 向目标主机发送icmp请求包 常用来测试当前主机与目标主机网络连接状况 常见选项 -c              设置发包的个数 -s      ...

  8. Raspbian安装Opencv3

    如果旧版本使用apt-get安装 sudo apt-get remove libopencv sudo apt-get remove opencv 如果旧版本使用编译安装 sudo make unin ...

  9. 【JS】【4】字符串数字比较大小

    两个转换函数: parseInt():把值转换成整数 parseFloat():把值转换成浮点数 也有其他方法,详情请看参考博客,但个人认为转换函数是最好的方法 参考文档: 1,js.jquery字符 ...

  10. C/S,B/S的区别与联系

    C/S 是Client/Server 的缩写.服务器通常采用高性能的PC.工作站或小型机,并采用 大型数据库系统,如Oracle.Sybase.Informix 或SQL Server.客户端需要安装 ...