写在前面

趁着十一长假,很多小伙伴都在悄悄学习,有些是为了能够顺利通过面试,进入大厂升职加薪。有些则是为了进一步巩固和提高自己的专业技能,希望有朝一日能过成为互联网架构师乃至技术专家。这不,就有小伙伴问我:如何通过Jenkins自动构建和发布项目,我:安排上了!!

小伙伴的疑问

我们还是通过一张图来直观的了解下小伙伴的疑问吧。

老规则,我们直接进入正题。

基础环境

所有的环境均搭建在CentOS 6.5 x64服务器上,IP:192.168.209.121 主机名:liuyazhuang121 , 并在服务器上配置了主机名到IP的映射。

构建Web项目

环境配置

首先,我们来看下如何通过Jenkins自动构建发布Web项目到远程Tomcat。我们使用的环境是:Jdk1.8+Maven3.6.3+Tomcat9.0+Jenkins2.19.3+SSH+Shell

其中,JDK、Maven和Tomcat小伙伴们可以自行下载安装并配置系统环境,可以到链接http://download.csdn.net/download/l1028386804/10127368 下载jenkins2.19.3。

配置SSH免密码登录

ssh-keygen -t rsa
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys/

配置Jenkins

启动Jenkins

下载的Jenkins war包拷贝到${TOMCAT_HOME}/webapp目录下,并启动Tomcat,在浏览器中输入http://192.168.209.121:8080/jenkins,如下图所示,则证明Jenkins启动成功。

安装插件

上述默认安装的插件还不够

依次点击 系统管理->插件管理-> 可选插件-> 过滤搜索框中 查找如下插件:

  • Maven Integration plugin
  • SSH plugin
  • Deploy to container Plugin

设置系统管理-Global Tool Configuration

在系统管理-Global Tool Configuration中配置JDK和Maven,如下:

配置系统管理-Configure Global Security

注册并登录用户

配置SSH remote hosts

在系统管理-系统设置,配置SSH remote hosts

点击Add按钮设置登录方式,如下图所示:

点击Check connection按钮 ,如果页面上输出Successfull connection,则SSH配置成功,如下图所示:

新建项目构建

配置项目构建

General-配置项目名称

源码管理-配置SVN信息

配置Pre Steps

配置Post Steps

配置完成后保存。

构建项目

回到主页,点击立即构建项目按钮,如下图:

可看到页面上出现对maven_test的构建进度条,点击进度条即可进入日志输出页面,如下图:

输出如下日志,则代表构建并部署到tomcat成功。

tomcat.sh脚本

最后,我们给出tomcat.sh脚本的内容,如下所示。

#!/bin/sh  

## java env
## service name
SERVICE_NAME=tomcat_service case "$1" in start)
/usr/local/tomcat/test-tomcat-10000/bin/startup.sh
;; stop)
sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "test-tomcat-10000" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill $P_ID
fi
;; restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;; *)
## restart
$0 stop
sleep 2
$0 start
;; esac
exit 0

构建Java项目

Jenkins构建Jar包发布到远程服务器和构建War包发布到远程服务器配置基本一致,只是Post Steps配置稍有不同。

配置Post Steps

配置Jar包发布到远程服务器的Post Steps配置如下:

构建项目

account-server.sh脚本

最后,我们也给出account-server.sh脚本的内容,如下所示。

#!/bin/sh  

## java env
export JAVA_HOME=/usr/local/jdk/jdk1.8.0_144
export JRE_HOME=$JAVA_HOME/jre ## service name
APP_NAME=account SERVICE_DIR=/usr/local/dubbo-server/$APP_NAME
SERVICE_NAME=medcare-dubbo-$APP_NAME
JAR_NAME=$SERVICE_NAME\.jar
PID=$SERVICE_NAME\.pid cd $SERVICE_DIR case "$1" in start)
nohup $JRE_HOME/bin/java -Xms256m -Xmx512m -jar $JAR_NAME >/dev/null 2>&1 &
echo $! > $SERVICE_DIR/$PID
echo "=== start $SERVICE_NAME"
;; stop)
kill `cat $SERVICE_DIR/$PID`
rm -rf $SERVICE_DIR/$PID
echo "=== stop $SERVICE_NAME" sleep 5
##
## edu-service-aa.jar
## edu-service-aa-bb.jar
P_ID=`ps -ef | grep -w "$SERVICE_NAME" | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "=== $SERVICE_NAME process not exists or stop success"
else
echo "=== $SERVICE_NAME process pid is:$P_ID"
echo "=== begin kill $SERVICE_NAME process, pid is:$P_ID"
kill -9 $P_ID
fi
;; restart)
$0 stop
sleep 2
$0 start
echo "=== restart $SERVICE_NAME"
;; *)
## restart
$0 stop
sleep 2
$0 start
;; esac
exit 0

重磅福利

微信搜一搜【冰河技术】微信公众号,关注这个有深度的程序员,每天阅读超硬核技术干货,公众号内回复【PDF】有我准备的一线大厂面试资料和我原创的超硬核PDF技术文档,以及我为大家精心准备的多套简历模板(不断更新中),希望大家都能找到心仪的工作,学习是一条时而郁郁寡欢,时而开怀大笑的路,加油。如果你通过努力成功进入到了心仪的公司,一定不要懈怠放松,职场成长和新技术学习一样,不进则退。如果有幸我们江湖再见!

另外,我开源的各个PDF,后续我都会持续更新和维护,感谢大家长期以来对冰河的支持!!

小伙伴想学Jenkins自动构建发布项目,我:安排上了!!的更多相关文章

  1. jenkins自动构建前端项目(window,vue)

    我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...

  2. Jenkins自动构建gitlab项目(jenkins+maven+giltlab+tomcat)

    环境准备: System:CentOS 7.3 (最小化安装) JDK: 8u161 (1.8_161) tomcat: 8.5.29 Jenkins: Jenkins 2.107.1 Gitlab: ...

  3. CentOS 7.2安装Jenkins自动构建Git项目

    1.环境 本文使用VMWare虚拟机进行实验. 最终实现目标,在Jenkins服务器上新建构建任务,从Git服务器上拉取master HEAD(不编译,仅演示),部署到"目标服务器" ...

  4. jenkins 自动构建gitlab项目

    安装的plugin: - kubernetes:1.7.1    - workflow-aggregator:2.5    - workflow-job:2.21    - credentials-b ...

  5. Linux下Jenkins与GitHub自动构建Node项目(Vue)

    根据上篇文章<Linux下Jenkins与GitHub自动构建NetCore与部署>,我们知道了Jenkins的强大功能,自动构建,部署了一个NetCore的Web,让开发人员专注于开发, ...

  6. DEVOPS技术实践_02:jenkins自动构建项目

    一.用户名密码错误 打开jenkins发现用户名密码错误,解决 1.1 找到config.xml文件 [root@jenkins-master ~]# ll -a drwxr-xr-x. root r ...

  7. Jenkins自动部署Tomcat项目

    Jenkins自动部署Tomcat项目 1.安装jenkins 插件 启动Jenkins,进入系统管理-插件管理: 选择Deploy to container Plugin 插件安装:

  8. Yeoman自动构建js项目

    Aug 19, 2013 Tags: bowergruntJavascriptjsnodejsyeomanyo Comments: 10 Comments Yeoman自动构建js项目 从零开始nod ...

  9. Gitlab源码库里代码提交后,如何触发jenkins自动构建?

    版本库里代码提交后,如何触发jenkins自动构建?这是一个面试题,感觉自己回答的并不好,因为并没有用过这个功能,之前公司实际项目用的是svn版本管理,一般都用立刻构建,和定时任务构建(不管代码是否有 ...

随机推荐

  1. Spring Security如何优雅的增加OAuth2协议授权模式

    一.什么是OAuth2协议? OAuth 2.0 是一个关于授权的开放的网络协议,是目前最流行的授权机制. 数据的所有者告诉系统,同意授权第三方应用进入系统,获取这些数据.系统从而产生一个短期的进入令 ...

  2. ABP VNext实践之搭建可用于生产的IdentityServer4

    一.前言 用了半年多的abp vnext,在开发的效果还是非常的好,可以说节省了很多时间,像事件总线.模块化开发.动态API进行远程调用.自动API控制器等等,一整套的规范,让开发人员更方便的集成,提 ...

  3. 关于action的使用在firefox报错的问题

    现在的网站有很多都是鼠标移到上面去才会显示出相应的一些标签之类的东西,然后再进行操作,但是因为要操作的元素一开始是隐藏的,就没办法直接定位,只能调用action来模拟鼠标悬停操作,也就是下面这句代码: ...

  4. android studio配置so和assets目录

    so配置: 1. 建立src/main/libs/armeabi目录,so文件放入armeabi目录 2.配置build.gradle android { defaultConfig{ XXXXXX ...

  5. Mybatis源码学习第六天(核心流程分析)之Executor分析(补充)

    补充上一章没有讲解的三个Executor执行器; 还是贴一下之前的代码吧;我发现其实有些分析注释还是写在代码里面比较好,方便大家理解,之前是我的疏忽,不好意思 @Override public < ...

  6. Leetcode 1577 数的平方等于两数乘积的方法数

    Leetcode 1577 数的平方等于两数乘积的方法数 题目 给你两个整数数组 nums1 和 nums2 ,请你返回根据以下规则形成的三元组的数目(类型 1 和类型 2 ): 类型 1:三元组 ( ...

  7. MyBatis动态SQL(使用)整理

    MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...

  8. Java实现打开google浏览器

    说明: 博主的Google浏览器版本:75.0.3770.142,如果运行异常,需要自行查找对应版本的驱动(chromedriver.exe) 需要的jar包: https://pan.baidu.c ...

  9. Linux系统小知识

    换Linux系统快半年了,刚开始总是碰到各种各样的问题,虽然斗解决了,由于没有记录,过一段时间就忘了,故在这里记录一下. 选择国内镜像源: Manjaro有一个很好用的命令rankmirrors.ra ...

  10. MvvmLight框架使用入门(5)

    上一次写MvvmLight框架使用入门(4)的时候还在用Visual Studio 2015,我儿子也不会过来盖上我的XPS……重启这个系列一方面是因为最近又开始写UWP的东西了,另一个是因为Mvvm ...