写在前头

我每次修改代码一点东西,都要进行一个重新发布。重新发布的流程大概如下:

  • 将最新代码同步上传到git上面
  • Maven打包 mvn clean install
  • 将最新的jar包上传到服务器上面,一般我用 lrzsz 如果遇到网速慢就没办法了
  • 最后执行脚本,运行程序

大概四个步骤,时间最长的就是将jar包上传到服务器上面去了。如果包有问题,还有重新进行上面四个步骤,甚是烦人

在实习中,无意中接触到了Jenkins自动构建工具,那我们就来了解一下吧。

Jenkins实践

目的:本地IDEA一旦push了代码,jenkins能自动拉去最新代码,并且自动构建最新代码,发布

可以大致分为两个步骤

第一步:Jenkins从git拉去最新代码

第二步:Jenkins自动构建

完全是自动化的,不需要人为干预操作。只要IDEA上传代码到git,Jenkins就能帮你自动构建

第一步

Jenkins从git拉去最新代码

  • 首先在Github中设置Webhooks(网络钩子),它可以在检测到push之后,主动向Jenkins发起post请求

  • 其次在Jenkins里面配置git的信息

  • 最后在每次Jenkins新建项目的时候,配置项目在git的地址,这样就能区分哪个项目了

第二步

Jenkins自动构建并发布代码

  • 首先打开项目的配置文件,在项目中配置git的地址

  • 其次打开gitHook这个选项(记得一定要勾选)

  • 最后在执行shell脚本那里,输入maven命令和构建完要执行的脚本即可

Jenkins构建三大坑

  • 第一大坑

Maven执行报错 我们通常执行Maven命令如下: mvn clean install -Dmaven.test.skip=true

但这样写必报错。因为Jenkins默认会为你加上mvn前缀,,所以你只用

clean install -Dmaven.test.skip=true 即可

  • 第二大坑

Jenkins没有权限去执行shell脚本,被拒绝

可以将Jenkins设置为777,但这是非常不友好的。

具体可以参考以下这篇文章:Jenkins执行脚本提示没有权限的解决办法

  • 第三大坑

Jenkins直接完成构建,会将构建启动的进程,全部杀死,我滴妈呀

BUILD_ID=DONTKILLME,即可防止jenkins衍生进程

具体可以参考以下这篇文章:jenkins 杀死衍生进程

Jenkins最终效果如下

由于博客园不支持上传视频,只能把视频放在第三方平台上了

链接如下

Jenkins演示最终效果(点击我)

写在最后

Jenkins是真的蛮方便的,只要我上传代码至git,他就一路下来自动拉代码,运行脚本,发布,非常的方便

别看我这样简单的搭建完成了,没试过的可以试试,你会发觉坑还是很多的。

加油啦!!!

附录:

osc.sh的脚本

  1. #!/bin/bash
  2. pid=$(ps -ef | grep com.gdufe.osc.OscApplication | grep 'java' | grep -v grep | awk '{print $2'})
  3. if [ -z "$pid" ]; then
  4. echo 'there are not OscApplication process. starting will be continue.'
  5. fi
  6. if [ -n "$pid" ]; then
  7. echo 'java process id is '$pid
  8. if ps -p $pid > /dev/null
  9. then
  10. echo $pid' will be kill'
  11. kill - $pid
  12. fi
  13. fi
  14. echo 'start OscApplication wait.'
  15. nohup java -jar osc.jar com.gdufe.osc.OscApplication >/dev/null >error.log &
  16. echo 'finish starting OscApplication'

Jenkins自动化构建配置的更多相关文章

  1. Jenkins自动化构建python nose测试

    [本文出自天外归云的博客园] 简介 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建 ...

  2. Jenkins自动化构建系列:01敏捷开发、自动化构建与持续集成

    <SVN与TortoiseSVN实战系列>已写完,今天新开一个<Jenkins自动化构建系列>,上周听了Bob Jiang老师的Agile1001公开课,一直想写个总结,这篇关 ...

  3. Gitlab+Jenkins用钩子实现git提交后jenkins自动化构建

    Gitlab+Jenkins用钩子实现git提交后jenkins自动化构建 一.Jenkins 进入项目---->Configure 1.设置项目代码从git中拉取 2.设置钩子程序 二.git ...

  4. Jenkins自动化构建(一)执行selenium+python脚本

    Jenkins执行python写的selenium自动化脚本,通常会遇到,执行打不开浏览器,查看jenkins构建Console Output控制台输出信息,发现脚本是执行了的,但是出错了,打开浏览器 ...

  5. 使用jenkins自动化构建android和ios应用

    背景 随着业务需求的演进,工程的复杂度会逐渐增加,自动化的践行日益强烈.事实上,工程的自动化一直是我们努力的目标,能有效提高我们的生产效率,最大化减少人为出错的概率,实现一些复杂的业务需求应变.场景如 ...

  6. 用Docker运行Jenkins自动化构建.NET Core项目

    目标 当代码提交到GitHub后,自动生成构建项目并部署到服务器.接下来介绍一下如何在容器中运行Jenkins,并自动化构建GitHub上的项目,使用自动化构建来解放你的双手. 前置条件 一台已经安装 ...

  7. windows 安装 jenkins 自动化构建部署至linux服务器上

    一.环境准备 1.git安装环境 参考链接 https://www.cnblogs.com/yuarvin/p/12500038.html 2.maven安装环境,包括jdk环境安装 参考链接 htt ...

  8. jenkins自动化构建iOS应用配置过程中遇到的问题

    最近配置jenkins来自动构建iOS应用,期间遇上不少问题.在这里分享给大家,也给自己留个底,方便下次解决问题. 首先说明下基本情况,我们因为部署jenkins的机器不是Mac,所以不能安装Xcod ...

  9. jenkins git gradle android自动化构建配置

    需要安装软件(jenkins所在服务器): gradle.SDK 一.gradle安装(服务器部署的gradle版本需要等于或高于开发环境的gradle版本) 1.下载地址:http://servic ...

随机推荐

  1. JAVA中执行JavaScript代码并获取返回值

    JAVA中执行JavaScript代码并获取返回值 场景描述 实现思路 技术要点 代码实现 测试方法 运行结果 改进空间 场景描述 今天在CSDN上偶然看到一个帖子对于一段字符串 “var p=‘xx ...

  2. easyUI dialog打开对话框,显示列表数据,选取一条数据操作后赋值给父窗口 resultMap声明为全局,生成getset方法

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8" ...

  3. 不支持find_element_by_name元素定位方法,抛不支持find_element_by_name元素定位方法,会抛如下错误 org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this session的解决

    appium1.5后不支持find_element_by_name元素定位方法,会抛如下错误 org.openqa.selenium.InvalidSelectorException: Locator ...

  4. Charles配置抓取HTTPS请求的Android配置

    关于android手机在mac版charles上抓不到包这个问题困扰了很久,查阅了很多资料,发现是android7.0系统安全策略问题. Charles抓包正常流程1.在手机上配置证书 点击后:直接在 ...

  5. BABOK概述

    BABOK概述 BABOK(Business Analysis Body of Knowlodge: 业务[或商业]分析知识体系)是由位于加拿大的IIBA(International Institut ...

  6. 记录自己的 django管理 开发环境 和 生产环境 配置过程

    背景:自己的博客部署到服务器了,可每次上传服务器都要把配置重新该,包括数据库链接也得改,于是就需要管理开发环境和生产环境配置. 1, 这是目录结构,在blog下新建一个settings包,里面新建有c ...

  7. html5之上的图片处理

    在开发 H5 应用的时候碰到一个问题,应用只需要一张小的缩略图,而用户用手机上传的确是一张大图,手机摄像机拍的图片好几 M,这可要浪费很多流量. 像我这么为用户着想的程序员,绝对不会让这种事情发生的, ...

  8. 转载:Package by feature, not layer

    原文地址:Package by feature, not layer Package by feature, not layer The first question in building an a ...

  9. 如果这样来理解HTTPS,一篇就够了!

    1.前言 可能有初学者会问,即时通讯应用的通信安全,不就是对Socket长连接进行SSL/TLS加密这些知识吗,干吗要理解HTTPS协议呢. 这其实是个误解:当今主流的移动端IM数据通信,总结下来无外 ...

  10. 一份从0到1的java项目实践清单

    虽说工作就是简单的事情重复做,但不是所有简单的事你都能有机会做的. 我们平日工作里,大部分时候都是在做修修补补的工作,而这也是非常重要的.做好修补工作,做好优化工作,足够让你升职加薪! 但是如果有机会 ...