澳门新萄京:CentOS上利用Git和Maven自动化部署Ja
分类:澳门新萄京

CentOS上利用Git和Maven自动化部署Java Web

以下所有命令在阿里云CentOS 6.5 java开发集成环境下部署,利用到Git和Maven进行自动化部署,git换成SVN也类似。

附件是自动部署的shell脚本,为了隐去项目目录,修改过不一定能直接用,使用之前请自行检查一边

#安装Git

yum install git

#测试是否成功

git -version

#正确

#git version 1.7.1

#配置
git config --global user.name "account"
git config --global user.email emailbox
git config --global http.proxy  protected]](
git config --global http.sslverify=false

#克隆仓库
git clone repository

#以上是准备工作

#以下是正式部署命令,可以直接替换车shell脚本

#进入repository目录

cdrepository
#更新仓库

git pull origin master

#进入项目目录

cd project

#maven编译打包

mvn clean package

#关闭tomcat进程

service default stop

#复制war包到tomcat部署目录

cp target/project.war .....tomcat/webapps/project.war

#启动tomcat进程

service default start

#更新仓库

#关闭tomcat进程

service default stop

Web 以下所有命令在阿里云CentOS 6.5 java开发集成环境下部署,利用到Git和Maven进行自动化部署,git换成SV...

【 ①Java代码自动部署-总结简介】

Linux下的Jenkins Tomcat Maven Gitlab Shell环境的搭建使用(jenkins自动化部署)。

使用Jenkins配置Git Maven的自动化构建

repo manifests git方式管理安卓代码

代码部署是每一个软件开发项目组都会有的一个流程,也是从开发环节到发布功能必不可少的环节。对于Java开发者来说,Java代码的发布部署也是经常需要做的一件事,特别是互联网公司。代码的发布上线关系到保证生产环境能够正常启动及功能是否能正常运行,所以代码部署在整个项目开发周期还是占据很重要的地位。

jenkins自动化部署

实现背景:Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(就是Jenkins的安装位置),进行编译、打包和发布到容器中。在Jenkins的宿主服务器中必须要有可以进行:代码clone(Git)、代码编译(Maven)、代码运行(Tomcat)的基本环境

1.repo的获取

repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理git所管理的一个个仓库),可以简化android开发中git的使用。

先从谷歌那里获取源,下面脚本是一个样例脚本,将获取的repo和谷歌mirror源下的

源代码

#!/bin/bash
BIN=/root/bin
REPO=$BIN/repo
ANDROID_HOME=/home/androidmirror
 
if [ ! -d $BIN ]; then
    mkdir -p $BIN
    if [ -f $REPO ]; then 
 curl https://storage.googleapis.com/git-repo-downloads/repo > $REPO
chmod 775 $REPO
    fi
fi
 
if [ ! -d $ANDROID_HOME ]; then
    mkdir -p $ANDROID_HOME;cd $ANDROID_HOME
    $REPO init -u https://android.googlesource.com/mirror/manifest --mirror
    $REPO sync
else
   cd $ANDROID_HOME;$REPO sync
fi
if  [ -d $ANDROID_HOME ]; then
    cp $ANDROID_HOME/.repo/repo/repo $ANDROID_HOME
    sed -i -e "s/https://gerrit.googlesource.com/git://mirror.core.archermind.com/android/aosp/" $ANDROID_HOME/repo
Fi
 
cd $ANDROID_HOME
rm -rf git-repo
git clone https://gerrit.googlesource.com/git-repo.git
cd git-repo
git checkout -b stable

 

 

调用的时候注意获取repo的路径,并加执行权限,repo里面的git-repo的URL要填写正确。

git-repo的分支,一定要和repo里填写的repo_rev是一致的。

 

http共享repo和git-repo

 

在/etc/httpd/httpd.conf最下面增加

 

<VirtualHost *:80>
 
    ServerAdmin webmaster@dummy-host.example.com
 
    DocumentRoot /work/mirror
 
#    ServerName dummy-host.example.com
 
    ErrorLog logs/dummy-host.example.com-error_log
 
    CustomLog logs/dummy-host.example.com-access_log common
 
</VirtualHost>

 

修改/etc/httpd/conf.d下welcom.conf

注释掉所有内容,重启httpd服务即可

 

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

目标:jenkins上点构建(也可以自动检查代码变化自动构建)》》》项目部署完成。

一、   安装Git

2.如何创建manifests.git文件

     在布置好repo以后,就要建立manifests.git,这个仓库是用来管理其他git仓库的,里面填写有Android代码的路径,方便我们批量下载git库。

   以android源码Asus为例,首先我们需要客户提供project.list,根据project.list创建对应的manifests.xml。

 

 检查project.list是否含有空的路径,脚本如下

 

#/bin/sh

source_path=$1
branch_name=LA.BF.1.1.2_rb1.21

function create_git() {
    git_path=$1

    if [ ! -d "$source_path/$git_path" ]; then
        mkdir -p $source_path/$git_path
        echo "README" > $source_path/$git_path/README
        echo "---------: $source_path/$git_path : no this file" >> $source_path/gitstatus.log
    fi

    number=`ls $source_path/$git_path | wc -l`
    if [ $number == 0 ]; then
        echo "---------: $source_path/$git_path : no child file" >> $source_path/gitstatus.log
        echo "README" > $source_path/$git_path/README
    fi

    cd $source_path/$git_path
        git init .
        git add * -f
        git commit -m "Add the all files"
    git status | awk -F "t" '{print $2}' | xargs git add -f
    git commit -m "Add the ignore files"

    git checkout -b $branch_name
    echo $git_path >> $source_path/gitstatus.log
    git status >> $source_path/gitstatus.log
}

echo "-------Begin------------------------------ "

rm -rf $source_path/gitstatus.log

GIT_PROJECTS=`cat $source_path/project.list | xargs`

for git_project in ${GIT_PROJECTS}
do
    echo ${git_project}
    create_git ${git_project}
done

echo "-------End------------------------------ "
~

 

#/bin/sh
 
source_path=/work/gerrit/review_site/git/asus
 
function create_git() {
        git_path=$1
        number=`ls $source_path/$git_path | wc -l`
        if [ $number -eq "0" ]
        then
                  echo $git_path >> new.list
      
        fi
}
 
echo "------------------------------------- "
# echo ">>>>>>>>>>>>>>>>>> make the mirror dir ----"
# mkdir -p ${mirror_source}
# echo ">>>>>>>>>>>>>>>>>> cp the project.list to mirror dir ----"
# cp ${src_source}/.repo/project.list ${mirror_source}/
 
GIT_PROJECTS=`cat project.list | xargs`
 
for git_project in ${GIT_PROJECTS}
do
        echo ${git_project}
        create_git ${git_project}
done
 
echo "-------------------------------------

"

 

 

 manifests.xml的制作脚本样例如下:

REMOTE_FETCH="ssh://192.168.100.198:29418/"
REMOTE_REVIEW="http://192.168.100.198"
PROJECT_NAME="asus/project"
BRANCH="LA.BF.1.1.2_rb1.21"
 
echo "<?xml version="1.0" encoding="UTF-8"?>" > manifest.xml
echo "<manifest>" >> manifest.xml
echo "  <remote fetch="${REMOTE_FETCH}" name="origin" review="${REMOTE_REVIEW}"/>" >> manifest.xml
echo "  <default remote="origin" revision="${BRANCH}"/>" >> manifest.xml
echo "" >> manifest.xml
 
GIT_PROJECTS=`cat project.list | xargs`
 
function create_project () {
git_path=$1
if [ ${git_path} == "build" ]
then
echo "  <project name="${PROJECT_NAME}/${git_path}" path="${git_path}" >" >> manifest.xml
        echo "      <copyfile dest="Makefile" src="core/root.mk"/>" >> manifest.xml
        echo "  </project>" >> manifest.xml
elif [ ${git_path} == "vendor/intel/support" ]
then
echo "  <project name="${PROJECT_NAME}/${git_path}" path="${git_path}" >" >> manifest.xml
        echo "      <copyfile dest="device/intel/Android.mk" src="x86_only_Android.mk"/>" >> manifest.xml
echo "      <copyfile dest="platform/vendor/intel/Android.mk" src="x86_only_Android.mk"/>" >> manifest.xml
echo "  </project>" >> manifest.xml
else
echo "  <project name="${PROJECT_NAME}/${git_path}" path="${git_path}" />" >> manifest.xml
fi
}
 
for git_project in ${GIT_PROJECTS}
do
    create_project ${git_project}
done
 
echo "" >> manifest.xml
echo "</manifest>" >> manifest.xml
 
# cat manifest.xml | awk -F path=" '{print $2}' | awk -F " remote= '{print $1}' | awk -F " revision= '{print $1}' > project.list

 

 

创建好manifests.xml文件后

mkdir manifests
mv manifests.xml manifests
cd manifests
mv manifests default.xml
git init 
git add default.xml
git commit -m “test” default.xml
cd ..
git clone manifests/.git --mirror

 

就可以看到manifests.git文件了   

由于本人近期在学习Java代码自动发布相关的知识,此系列文章是对此次学习到的知识进行巩固和总结;同时,也希望能够帮助到和我一样对此方面知识感兴趣的同行们。言不多说,直接进入真题。下面针对此次系列文章做一个简要的概述。

一、安装jenkins

1、安装依赖

3.如何批量创建镜像

样例脚本如下:

#/bin/sh
 
src_source=$1
mirror_source=$2
dev_branch="LA.BF.1.1.2_rb1.21"
 
function create_git() {
git_path=$1
if [ -d "$src_source/$git_path" ]
then
cd $src_source/$git_path/
        git init 
        git add *
        git commit -m “test” *
git checkout -b ${dev_branch}
base_path=`basename $git_path`
echo $base_path
   cd ../
git clone $base_path/.git --mirror
mkdir -p $mirror_source/$git_path
    mv $base_path.git $mirror_source/$git_path/../
rm -r $mirror_source/$git_path
fi
}
 
echo ">>>>>>>>>>>>>>>>>> prepare --------------------------------------- "
# echo ">>>>>>>>>>>>>>>>>> make the mirror dir ----"
# mkdir -p ${mirror_source}
# echo ">>>>>>>>>>>>>>>>>> cp the project.list to mirror dir ----"
# cp ${src_source}/.repo/project.list ${mirror_source}/
 
cd ${mirror_source}
GIT_PROJECTS=`cat ${mirror_source}/project.list | xargs`
echo ${GIT_PROJECTS}
 
for git_project in ${GIT_PROJECTS}
do
echo ${git_project}
create_git ${git_project}
done
 
echo ">>>>>>>>>>>>>>>>>> Over! Please check and restart the gerrit-server ------------"

 

 

1、学习代码自动部署的目的

1.下载jenkins

      这里我选择的是war包安装jenkins,简单不伤脑,别的博客写的jenkins版本都很旧,没用最新的,写个比较新的配置2.20版。

  官网:

  WAR包下载地址:

                             

       yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker

4.gerrit网页上的权限文件如何修改

先创建新的组,加入项目组对应的成员,read_XXX,push_XXX,review_XXX

添加对应成员

澳门新萄京 1 

 

 

开始加项目组对应分支的权限,

方式一:

在projects->All-projects中添加,

这是直接往主线合入,读取,审核等权限

澳门新萄京 2 

 

方式二:

通过继承的方式,

Asus项目下git库比较多,如果一个个单独设置权限比较麻烦,这里可以先创建一个新的工程作为一个father project,

澳门新萄京 3 

 

Father样例工程如下,refs/for/*即是分支的权限,refs/heads/*是主线的权限

澳门新萄京 4 

 

Asus下的其他项目如果要设置权限,直接采用继承的形式即可

澳门新萄京 5 

高效且简化代码的部署发布

2.安装jdk环境

     最新的JDK下载地址:  没账号注册一个,很快的

  jdk-8u121-linux-x64.tar.gz
     这里选择Linux64位后缀tar.gz的复制下载链接,在服务器上解压配置环境变量vim /etc/profile写在最后面

     JAVA_HOME=/data/java/jdk的目录名字   #java目录是我创建的,把jdk包解压到里面,这个写解压位置的绝对路径
     CLASSPATH=$JAVA_HOME/lib/
  PATH=$JAVA_HOME/bin:$PATH   #谨慎,这里PATH写错了会发现命令都得打绝对路径才能用,悲催
  export PATH JAVA_HOME CLASSPATH

      配置没问题完成保存,source /etc/profile让配置的环境变量生效,这时候可以打命令java -version看看版本,是不是出java version "1.8.0_***",如果是1.6什么的说明没生效,看看解压的路径。

 

5.如何从gerrit服务器上拉取代码

登录其他服务器后,首先我们要将ssh的密钥传到网站上去。

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub,

拷贝密钥,到网站下

 澳门新萄京 6

 

 

推荐:Repo和Git 版本管理常用命令

From:  Git命令快速参考 Git Command Quick Reference 本附录为Git常见命令快速参考。每节介绍一种操作类型。 这里会列出

 

拷贝完以后增加config文件,vi ~/.ssh/config

增加

Host 192.168.100.198

user n006253

 

下载git服务,我的git版本是git 1.7.9.6

rpm -ivh git-1.7.9.6-1.el6.rfx.x86_64.rpm perl-Git-1.7.9.6-1.el6.rfx.x86_64.rpm

rpm -ivh git-daemon-1.7.9.6-1.el6.rfx.x86_64.rpm

 

 

 

将以下内容,传到/etc/xinetd.d/git

# default: off

# description: The git daemon allows git repositories to be exported using #       the git:// protocol.

        #server_args     = --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose

        #type            = UNLISTED

 

service git

{

        disable         = no 

 

        # git is in /etc/services only on RHEL5

        type            = UNLISTED

        port            = 9418

 

        socket_type     = stream

        wait            = no

        user            = nobody

        server          = /usr/libexec/git-core/git-daemon

        server_args     = --base-path=/work/mirror --export-all --user-path=/work/mirror/android --syslog --inetd --verbose

        log_on_failure   = USERID

        # xinetd does not enable IPv6 by default

        # flags           = IPv6

}

 

/etc/init.d/xinetd restart

 

下载repo

cd /work/tool

 

curl  >repo

 

chmod  x repo

 

repo init -u ssh://n006253@192.168.100.198:29418/kraft2-m/8939/manifests -b trunk_LA2.15_8939

 

下下来以后 /work/tool/repo sync -j8

 

2、使用的相关工具及技术

3.安装tomcat

     下载地址:

  这个什么版本都可以,别太旧了,旧的会有漏洞,解压完成试试能不能用,tomcat目录里面bin目录下,./catalina.sh start启动,访问一下,不能访问基本都是防火墙问题,能出现tom猫界面就可以停了,可以./catalina.sh stop,也可以找到进程pid,kill-9 pid号,进到webapps目录里面删除所有,把之前的jenkins.war拷进来,启动tomcat。我用的8080端口访问地址为

澳门新萄京 7

在服务器上面cat /root/.jenkins/secrets/initialAdminPassword会出现让输入的密码,一串数字字母,多等一会到出现下面界面,喝了口水,三分钟过去了,出现了接下来的界面

澳门新萄京 8

这个就是说推荐安装还是自己选,需要的包后面可以装,我点了第一个,知道用什么插件点第二个也可以这样装的包少一点。安装的插件都在/root/.jenkins/plugins/下面。

澳门新萄京 9

澳门新萄京 10

直接选择continue as admin

 澳门新萄京 11

开始使用,点击就会进来

 澳门新萄京 12

     admin用户登录还不知道密码是什么,我猜是/root/.jenkins/secrets/initialAdminPassword这个里面的密码,

2、下载Git

6.修改上传代码

以修改库配置文件manifests.git为例

vi default.xml

修改好以后

git add *

git commit -m “test” default.xml

git push origin HEAD:refs/for/trunk****

Push的时候如果出现missing change ID,按照报错的提示传输第一下ID即可

上传好以后到网页上submit提交的内容,在ALL->OPEN下

澳门新萄京 13 

如果想要直接合入主线则是git push origin HEAD:refs/heads/trunk****

如果出现user或者邮箱名字不对的情况,输入

git config --global user.name "Your Name"

git config --global user.email you@example.com 

git commit --amend --author 'fengxinfeng <Xinfeng.Feng@tieto.com>'

本文出自 “7582964” 博客,谢绝转载!

 

推荐:安卓版本管理工具 Repo Git

To work with the Android code, you will need to use both Git and Repo. In most situations, you can use Git instead of Repo, or mix Repo and Git comman

repo manifests git方式管理安卓代码 1.repo的获取 repo只是google用Python脚本写的调用git的一个脚本,主要是用来下载、管理Android项目的软件仓库。(也就是说,他是用来管理git所管理的一个个

 

1、 CentOS操作系统(可以使用虚拟机安装Linux系统)

二、安装Maven(用来构建项目) 

     官网地址:

     下载地址:apache-maven-3.3.9-bin.tar.gz

     配置环境变量:vim  /etc/profile 写到最后,我用的3.3.3的版本

     export M2_HOME=/data/apache-maven-3.3.3
     export M2=$M2_HOME/bin
     export PATH=$M2:$PATH

选择一个目录,存放下载的git,例如我的是:/home/test/,大家可以根据需求到官网下载相应的版本

2、 Maven

三、安装git

     下载地址:

     噗,下载地址想下载可以下载,然后编译安装,git主要是用于jenkins用git命令获取我们自己搭建的gitlab上面的代码,我yum install git了,这有个问题还报错了,一定要看好git可以用的命令绝对路径在哪里,yum装的在/usr/bin/git,你可以试下/usr/bin/git --version,不管是1.7版还是2.3版能用就可以。

wget

3、 Git

四、配置jenkins

     jenkins因为配置原因出错千千万,一步一报错,天天有惊喜,下面配置是把坑都填好的。

澳门新萄京 14 

    

4、 Shell脚本

1.添加插件

澳门新萄京 15

澳门新萄京 16

选择可选插件,过滤搜索

澳门新萄京 17

澳门新萄京 18

 

 选择直接安装也可以,重启后安装也可以,用什么功能搜一下安装没,没安装装上就好,我看了已经安装的,比自己选安装的安装的多很多。。。

 很多教程都装Deploy to Container Plugin,这个可以把包从运行的tomcat的项目http地址上直接发到项目服务器的目录下,windows上我试了可以,linux这个东西没用它,都是linux服务器scp过去就好了,windows上面包发过去了不会写脚本,还是shell脚本简单。

3、解压Git

5、 Jenkins

2.工具配置

 澳门新萄京 19

澳门新萄京 20

jdk别名叫啥都可以,路径写对,写你jdk环境变量配置的路径,写错了会出现ERROR: Failed to parse POMs java.io.IOException: Cannot run program***错误

澳门新萄京 21

git的地址要写的是git这个命令的地址不是目录的地址,yum装的自然是/usr/bin/git,之前不是yum装的装的写/usr/local/git报错找不到git命令,在服务器各种试git都没问题,看配置以为jenkins看不见呢,装了好几个版本的jenkins,找了N久才找到应该写/usr/local/git/bin/git 

 澳门新萄京 22

 

 写完保存就好,接下来系统配置

因为下载的是一个zip,所以使用命令将其解压到git目录下:

3、学习代码自动发布相关技术的顺序

3.系统配置

澳门新萄京 23

 

澳门新萄京 24

 

 这个配置费劲九牛二虎之力,在N次报错后遍寻错误无解时候,在系统提供的英文文档里面偶然看到其中一个回答,好长好长看到其中一句,试了试竟然成功了,沃德天!

unzip v2.3.0 -d git

澳门新萄京 25

五、构建项目

 点击新建,出现下图,名字随便起,选择构建一个maven项目

澳门新萄京 26

 

澳门新萄京 27

 

澳门新萄京 28

连接git,我们是自己搭的gitlab,需要在gitlab上搜索ssh或者key,找到一个ssh keys字样的,把jenkins服务器的公钥放在上面,另外

澳门新萄京 29

这个里面添加一个jenkins服务器root用户的私钥

发现gitlab服务器的私钥也可以,估计是因为gitlab页面上也放了gitlab的公钥,看来配对的公私钥就可以,有兴趣的可以试试。

澳门新萄京 30

澳门新萄京 31

 

澳门新萄京 32

选择这个这里面可以写脚本,我下面写这个相当于脚本里的命令去远程执行另一个脚本

 写完好久了,今天jenkins做了一个迁移,完善前面的,把后面的再补上

澳门新萄京 33

如图,后面的功能都是用脚本写的,jenkins和org互相做了免密登录,在jenkins上可以直接用/usr/bin/ssh root@org的ip "要执行的命令" 

/bin/bash /dat****/org.sh  在org上执行这个脚本

 

阶段1:

过程:jenkins调用git把Gitlab上的代码下载到jenkins服务器,maven构建成war包,调用ssh运行shell脚本完成备份,停服务,清webapps,拷war包到tomcat下,起服务,说起来好简单啊。。。

自己摸索着搭,各种找错误,搭了两星期才搭好,今天迁到别的服务器上几个小时就搞定了,经过几个月的使用,jenkins确实是自动化的利器,写好脚本一键搞定。

 

局域网内利用GitLab Jenkins自动生成GitBook并发布(Nginx)  http://www.linuxidc.com/Linux/2016-05/131136.htm

Linux Git Maven Jenkins Neuxs自动化编译环境搭建 http://www.linuxidc.com/Linux/2016-02/128652.htm

CentOS6安装Jenkins  http://www.linuxidc.com/Linux/2016-05/131365.htm

使用Jenkins配置Git Maven的自动化构建 http://www.linuxidc.com/Linux/2016-02/128641.htm

Jenkins Maven Git搭建持续集成和自动化部署的配置手记 http://www.linuxidc.com/Linux/2015-06/118606.htm

Jenkins的分布式构建及部署——节点  http://www.linuxidc.com/Linux/2015-05/116903.htm

Jenkins 持续集成环境快捷部署  http://www.linuxidc.com/Linux/2017-05/143624.htm

在 Ubuntu16.04 中用 Apache 部署 Jenkins 自动化服务器  http://www.linuxidc.com/Linux/2017-05/143607.htm

Jenkins 的详细介绍:请点这里
Jenkins 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/143970.htm

澳门新萄京 34

4、编译安装Git

优点:部署流程简单方面,开发完成后开发人员在开发环境即可进行代码部署上线。

将其安装在“/usr/local/git”目录下,命令如下

缺点:发布流程粗糙,代码部署不够严谨,不建议生产环境使用此方式。

make prefix=/usr/local/git all

阶段2:

sudo make prefix=/usr/local/git install

优点:由Git进行项目版本管理,降低了代码发布的风险,发布过程有运维人员进行发布。

 

缺点:由于代码的发布由运维人员发布,需开发人员配合进行代码发布部署,与发布部署不成功,得由开发人员查找问题,增加了部署复杂性。

5、配置环境变量

阶段3:

vim /etc/profile

优点:由Jenkins工具进行代码的发布部署,规范了代码的发布流程,提供可视工具监听整个发布流程等。

export PATH=/usr/local/git/bin:$PATH

source /etc/profile

 

缺点:对技术要求更高了,需要了解Jenkins工具,会编写Shell脚本等。

6、检查是否安装成功

4、Java代码自动部署总结分为以下系列

 git --version

①总结简介

此处使用源码安装,也可以使用yum安装:yum –y install git

②使用Maven进行代码部署

 

③使用Shell进行代码部署

二、        JDK、Maven安装

④使用Jenkins进行代码部署

1、  下载和解压Maven

⑤课程总结及心得

 tar xf apache-maven-3.3.9-bin.tar.gz

【 ②使用Maven进行代码部署】

 mv apache-maven-3.3.9 /usr/local/maven

在使用maven进行代码发布的时候,需要用Maven工具的相关插件将需要部署的项目发布到指定的服务器的部署目录中。

       

在学习此技术时,我用的的是一个秒杀项目的ssm版,大家在学学习此技术的时候可以用简单一点的Maven项目进行测试。因本项目是学习如何进行部署项目技术的,本次就针对具体项目进行介绍。

2、  安装JDK

1、 使用Maven进行部署项目要求

tar xf jdk-8u111-linux-x64.tar.gz

1) 项目本身属于Maven项目

mv jdk1.8.0_111/ /usr/local/java

2) 需要部署的是war包

 

3) 引入插件

 

在需要部署的项目的pom,xml文件中引入tomcat插件,在project->build-> plugins节点引入tomcat插件。

3、配置环境变量

org.apache.tomcat.maven

vim /etc/profile

tomcat7-maven-plugin

JAVA_HOME=/usr/local/java

export MAVEN_HOME=/usr/local/maven

admin

export PATH=$PATH:$MAVEN_HOME/bin

admin

export JENKINS_HOME=/home/test/tomcat/webapps/jenkins

8080

JRE_HOME=/usr/local/java/jre

/seckill-manager

JAVA_BIN=/usr/local/java/bin

UTF-8

JRE_BIN=$JRE_HOME/bin

UTF-8

PATH=$PATH:$JAVA_BIN:$JRE_BIN

4) 执行Maven的redeploy操作

CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

执行的命令:tomcat7:redeploy

export JAVA_HOME JRE_HOME JRE_BIN JAVA_BIN PATH CLASSPATH

在eclipse下配置的命令如下:

 

澳门新萄京 35

source /etc/profile

2、需要注意的问题点

4、检查是否安装成功

1、在将项目发布到远程Tomcat时需要启动远程Tomcat管理控制台账号

        java –version

开启tomcat管理控制台账号地址为:Tomcat安装目录/conf/tomcat-users.xml文件

        mvn –version

在tomcat-users.xml文件中需要配置允许访问纯文本接口权限,以便maven的tomat插件能够通过此方式进行部署项目。

 

在tomcat-users节点新增role属性和user属性,如下:

三、          部署Jenkins

解释:给账号admin配置manager-script及manager-gui权限

1、  将jenkins的war包放到Tomcat中并启动Tomcat,成功启动之后访问ip和端口如下:

Tomcat角色解释图:

       澳门新萄京 36

澳门新萄京 37

 

2、在需要远程发布到的目标Tomcat应该是运行状态,保证Maven的tomcat插件能够访问到目标Tomcat完成项目的部署。

 澳门新萄京 38

【③使用Shell进行代码部署】

 

在使用Shell脚本进行重新部署项目时,需要掌握Shell脚本的编写,Shell脚本需要完成以下功能:

2、  安装插件

1、 将代码clone到服务器指定目录

 系统管理à管理插件à可选插件à过滤

2、 根据pom.xml文件将代码打包成war包

    Deploy to container Plugin

3、 将war发布到指定服务器

Maven Integration plugin

环境要求:

SSH plugin

1、 安装Maven并配置环境变量

Windows Slaves Plugin

2、 Git客户端,并配置环境变量

Email Extension Plugin

3、 熟悉Shell脚本相关知识

Subversion Plug-in

1、编写Shell脚本

     GIT plugin

在Linux的指定目录新建shell脚本,我是在项目的专用tomcat根目录新建了shell脚本,方便进行tomcat集群部署操作。脚本内容如下:

3、  Jenjins系统设置

#!/bin/bash

1)  系统管理àGlobal Tool Configuration

#shell功能概要:seckill的service提供者构建shell

 

#发布service提供者的服务器的进程名

 澳门新萄京 39

serverName="seckill_provider"

 

#获取发布service提供者的服务器的进程PID

 澳门新萄京 40

PID=$(ps -ef | grep $serverName | grep -v grep | awk '{ print $2 }')

澳门新萄京 41

#java代码本地仓库地址

 

javaBaseSrc="/opt/java_project_src/"

4、Jenkins Location

#项目路径

 澳门新萄京 42

javaProjectSrc="sekill/seckill-manager/seckill-service/target/seckill-service.war"

 

#发布的tomcat集群,数组方式存储

这里配置的是ip加端口和一个路径名称,邮箱要进行设定,后期会发送jenkins执行的结果到邮件中

projectServicersPath=(/opt/seckill-tomcat/seckill-tomcat-02 /opt/seckill-tomcat/seckill-tomcat-03)

5、邮件通知

projectName="sekill"

 澳门新萄京 43

#循环强制停止指定tomcat

 

for var in ${PID};

这里我配置的QQ邮箱,大家根据情况进行设置相应的smtp服务器,用户名、密码分别为自己的QQ邮箱何密码,如果不进行设置,后期jenkins构建项目的时候会报错,报错信息很好理解也很好找到是没有配置邮件的问题。

do

首先,要保证邮件的smtp和pop是开启状态的,这样的话才可以通过验证:

echo "准备强制停止PID:$var"

 澳门新萄京 44

kill -9 $var

 

done

最后点击下边的应用、保存即可

echo "kill $serverName sucess"

5、Configure Global Security

#切换到git本地仓库目录

然后回到系统管理,看到Configure Global Security 点击进去,根据下边进行配置即可

cd $javaBaseSrc

 澳门新萄京 45

#删除仓库库中代码

 

rm -rf $projectName

 

echo "从/opt/java_project_src仓库中删除项目$projectName成功"

点击应用 保存之后,然后在屏幕的右上角,有一个登录-注册 ,点击注册即可实现用户的登录。

#从远程仓库下载代码,因涉及到账户信息,此处更改为描述信息

 澳门新萄京 46

git clone 远程git仓库项目URL

这里,如果是公司内网的话,或者最后搭建的jenkins是公司使用,那么最好用户名和密码为公司的账户密码,邮件也是公司的邮件,这样的话方便后期的操作。

cd $javaBaseSrc/sekill/seckill-manager

至此Jenkins的基本配置完成。

#安装项目并跳过测试

创建Job

1、创建项目

点击登录之后,会看到下边的界面中:My Views

 澳门新萄京 47

 

点击进去

 澳门新萄京 48

 

点击:创建一个新任务

 澳门新萄京 49

 

选择maven项目,点击OK,这里的Item名称是后边需要用到的,下边的配置也有用到这个的,大家可以很好的对应。

2、进行项目的配置

(1)源码管理选择Git,这个时候添加url之后,下边会报错,显示让去认证,认证即可(其他的安装中又遇到这个问题),如果认证失败,请下载认证Github Authentication plugin插件,这个在插件管理的可选插件中搜索安装。

我这里的rul是我在gitos上的一个项目,credentials是我在gitlab上的用户名和密码认证。

 澳门新萄京 50

 

(2)构建触发器,就是什么时候执行jenkins的自动化部署

 澳门新萄京 51

 

选择第一个,其他的基本是定时执行什么的,大家可以自行查找,查看如何设置,根据需要进行配置

(3)Post Steps

 澳门新萄京 52

 

Goals and options后填 clean package install   -DskipTests

选择上图中的,然后下边 的Execute shell如下,脚本的编写在下边进行了详细的说明:

 澳门新萄京 53

 

#!/bin/bash 

#copy file and restart tomcat 

 

export JAVA_HOME=/data/home/server/jdk

export CATALINA_HOME=/home/xuliugen/dubbo-provider

export CATALINA_BASE=/home/xuliugen/dubbo-provider

export BUILD_ID=dontKillMe

 

tomcat_path=/home/xuliugen/dubbo-provider

project=dubbo-provider

war_name=dubbo-provider.war 

war_path=http://132.153.131.237/:8022/jenkins/job/ManenDemo/ws/targetserver_port=8082 

file_path=~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target

 

$tomcat_path/bin/shutdown.sh 

 

sleep 3s 

 

echo "rm -rf ${tomcat_path}/webapps/ROOT/*"

 

rm -rf ${tomcat_path}/webapps/ROOT/*

 

cd $file_path

 

cp ${war_name} ${tomcat_path}/webapps/ROOT/

 

cd $tomcat_path/webapps/ROOT/

 

unzip ${war_name}

 

rm -rf ${war_name}

 

sleep 5s 

 

#$tomcat_path/bin/startup.sh

 

cd $tomcat_path/bin/

./startup.sh

 

echo "server restarted"

(4)邮件通知

 澳门新萄京 54

 

至此基本设置完毕,点击应用、保存

(5)立即构建

点击左上角的立即构建

 澳门新萄京 55

 

然后看到下边的Build History 点击蓝色的进去,会进入Console

 澳门新萄京 56

 

下边是进行jar的下载,会下载到宿主服务器的maven仓库中:

 澳门新萄京 57

 

下边的信息表示项目编译通过:

 澳门新萄京 58

 

下边是运行脚本的信息:

 澳门新萄京 59

 

mvn -Dmaven.test.skip=true clean install

脚本的分析

在Jenkins的服务器上查看:

 澳门新萄京 60

 

 澳门新萄京 61

 

可以看到在/root/.jenkins这个目录,实际存放了Jenkins拉取Git代码之后编译好war的位置,到此,大家也许都该明白了,编译后的位置就在这里啊!然后,接着是部署到宿主服务器的Tomcat容器中,如何将编译好的war放到tomcat中,这就需要脚本来完成,也是上述过程中配置的过程,下边对每一行进行分析。

首先我们应该明白,将编译好的war放到tomcat容器中,我们首先要知道这两个的位置:编译后war的位置和目标容器的位置,很显然我们是知道的。

1、脚本文件的头,这个没得说

#!/bin/bash 

2、环境变量设置

export JAVA_HOME=/data/home/server/jdk

export CATALINA_HOME=/home/xuliugen/dubbo-provider

export CATALINA_BASE=/home/xuliugen/dubbo-provider

export BUILD_ID=dontKillMe

上边的各个位置,大家也许都知道,CATALINA_HOME和CATALINA_BASE的位置就是Tomcat容器的位置,这里根据需求我将Tomcat容器的名字改为dubbo-provider了,如果改成/home/xuliugen/tomcat是不是更好理解。

export BUILD_ID=dontKillMe这一句很重要,因为该job启动完后执行下一job,jenkins直接把tomcat进程杀了,所以无论脚本中怎么写了启动tomcat的命令,他是不会启动的。虽然上述截图中显示了Tomcat started、server restarted但是访问项目地址是访问不了的,这在:其他问题的第二个说明了这个问题。

3、其他路径位置

tomcat_path=/home/xuliugen/dubbo-provider #我的Tomcat位置

project=dubbo-provider #我的项目编译的名称

war_name=dubbo-provider.war  #最后打包的war名称

war_path=http://132.153.131.237/:8022/jenkins/job/ManenDemo/ws/targetserver_port=8082 #宿主服务器的ip何端口

file_path=~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target  #编译好的war包存放地址

这个:war_path 其实也就是Jenkins的宿主服务器位置IP,端口为jenkins运行的端口,大家只需要将ip地址端口ManenDemo换成自己的即可;

file_path:就是Jenkins帮我们编译好的项目war的位置,上图中大家也可以看到,并且大家不可以完全按照上边的路径,要找到自己宿主服务器上实际war的位置,进行设置。

4、耳熟能详的执行命令

下边就是我们在使用原始方式,部署war的命令,大家很简单的可以理解,其中:

注意:个人写脚本的能力有限,所以我是假设项目已经在运行的情况下,因此我上来就是先关闭Tomcat,(正确的方式,应该判断端口是否打开,如果本身tomcat未启动,我的这种情况,会在Jenkins的Console中报拒绝连接的问题,如下图)。

 澳门新萄京 62

 

另外用到了sleep 3s 这个可以让线程休眠一下,这样的话可以看一下tomcat的日志信息。

下边的脚本就是删除原来容器中的文件,然后将编译好的war移动到容器中,解压。运行tomcat。

$tomcat_path/bin/shutdown.sh 

sleep 3s 

echo "rm -rf ${tomcat_path}/webapps/ROOT/*"

rm -rf ${tomcat_path}/webapps/ROOT/*

cd $file_path

cp ${war_name} ${tomcat_path}/webapps/ROOT/

cd $tomcat_path/webapps/ROOT/

unzip ${war_name}

rm -rf ${war_name}

sleep 5s 

cd $tomcat_path/bin/

./startup.sh

echo "server restarted"

#判断执行上面mvn操作的返回值是否为0

将项目布署到远程Tomcat

上述创建项目,可以看出是在本地进行执行的,也就是进行编译后执行的Tomcat是何Jenkins的宿主服务器是在一起的,这很显然不符合我们常规的公司及其部署的方案,通常是将编译之后的代码在运行到其他的Tomcat服务器中的,下边有两种方式,将编译之后的项目部署到远程服务器中。

1、使用脚本的方式部署到远程服务器

采用ansible工具实现:

1)、首先在jenkins服务器上安装ansible,安装方式见ansible安装文档。

2)、在服务器上准备了两个脚本:一个是停tomcat脚本,一个是启动tomcat脚本;

澳门新萄京 63澳门新萄京 64

 

 

3)、在ansible的hosts文件(一般放在/etc/ansible/),添加tomcat端的主机ip、ssh端口、用户、密码。

 澳门新萄京 65

 

点击:创建一个新任务

 澳门新萄京 66

 

选择maven项目,点击OK,这里的Item名称是后边需要用到的,下边的配置也有用到这个的,大家可以很好的对应。

2、进行项目的配置

(1)源码管理选择Git,这个时候添加url之后,下边会报错,显示让去认证,认证即可(其他的安装中又遇到这个问题),如果认证失败,请下载认证Github Authentication plugin插件,这个在插件管理的可选插件中搜索安装。

我这里的rul是我在gitos上的一个项目,credentials是我在gitlab上的用户名和密码认证。

 澳门新萄京 67

(2)构建触发器,就是什么时候执行jenkins的自动化部署

 澳门新萄京 68

 

选择第一个,其他的基本是定时执行什么的,大家可以自行查找,查看如何设置,根据需要进行配置

(3)Post Steps

 澳门新萄京 69

 

Goals and options后填 clean package install   -DskipTests

选择上图中的,然后下边 的Execute shell如下,脚本的编写在下边进行了详细的说明:

 

 澳门新萄京 70

澳门新萄京 71

 

将ansible命令文件里面的内容根据自己的需要粘贴到上图中的command处。

然后先点Apply—再点保存。

保存完成后执行立即构建。

2、使用Deploy to container Plugin插件部署到远程服务器

上述的开始阶段就安装了这个插件,下边就开始发挥其作用。

 

 澳门新萄京 72

 

在创建的Job左侧点击设置,其他配置何在远程搭建项目是一致的,不同的是在这个地方:

 澳门新萄京 73

 

以前我们在编译之后,将编译后的通过脚本补助到Jenkins的宿主服务器,使用插件,就不需要这种方式了。

 澳门新萄京 74

 

还有就是的在构建之后,将编译后的文件**/target/dubbo-provider.war(就是上边的~/.jenkins/jobs/ManenDemo/workspace/spring_provider/target目录)部署到下边的远程Tomcat容器中;这里Containers的用户名和密码是Tomcat管理员的账户密码,Tomcat URL 就是你需要进行部署的远程Tomcat服务器的ip和端口。

这里需要进行设置的是远程Tomcat的管理员信息,修改远程Tomcat容器下的conf–tomcat-users.xml文件,在内添加下边的内容:

<role rolename="manager"/>

<role rolename="manager-gui"/>

<role rolename="manager-script"/>

<role rolename="admin"/>

<user username="admin" password="admin" roles="admin,manager,manager-script,manager-gui"/>

即可实现远程的访问,测试是可以通过的,但是有一个问题,通过这种方式,只将war复制到了wenapps下:

 澳门新萄京 75

 

因此这种方式的话,我们访问的时候必须是ip、端口和项目名,例如:

http://115.159.151.247:8030/dubbo-provider/

当然这种方式 也是在实际的应用中不提倡的,解决方式就是修改Tomcat默认的访问路径即可,设置Tomcat–conf–server.xml文件如下:
在Host节点之间添加:

<Context path="" docBase="dubbo-provider" debug="0" reloadable="true" />

 澳门新萄京 76

 

或者在docBase里边输入项目的绝对路径,例如我的:

<Context path="" docBase="/home/xuliugen/dubbo-provider/webapps/dubbo-provider" debug="0" reloadable="true" />

然后重启Tomcat,这样的话, 和http://ip:8030这两种方式都可以访问到该项目。

 

 澳门新萄京 77

 

if [ $? -ne 0 ]

其他问题

1、部署项目的时候报错

 澳门新萄京 78

 

这个大家很好理解,是因为下载jar失败的问题,由于是第一次使用Maven,需要第一次下载很多jar到Maven仓库中,由于网络的问题下载失败,大家可以多次构建让他重新下载,或者直接到: 根据报错的jar,在maven2中找到自己缺失的jar,然后在/root/.m2/repository 相应的位置添加jar即可。

2、编写脚本文件启动tomcat但是项目仍然运行不起来

就是上边说道的问题了:
添加:export BUILD_ID=dontKillMe,因为该job启动完后执行下一job,jenkins直接把tomcat进程杀了,所以无论脚本中怎么写了启动tomcat的命令,他是不会启动的。

3、遇到下边的问题

 澳门新萄京 79

 

这就是在系统设置的时候,设置的git的地址不对,上述已经说明了,应该是git的可执行文件的地址,如果只是git的目录,是无法找到git这个可执行文件的,如下:

 澳门新萄京 80

 

可以看出使用的是这个:/usr/local/git/bin/git 进行git仓库的配置何代码的拉取,因此这设置git的目录,jenkins默认是不会找bin目录下的git可执行文件的。

 

then

echo "构建失败,请查看代码问题!"

exit 1;

fi

#循环将项目部署到集群tomcat中

for projectServicer in ${projectServicersPath[@]}

do

cp $javaBaseSrc$javaProjectSrc $projectServicer/webapps

echo "$projectServicer 代码发布成功!"

sh $projectServicer/bin/startup.sh

if [ $? -ne 0 ]

then

echo "$projectServicer 启动失败"

exit 1;

else

echo "$projectServicer 启动成功";

fi

done

echo "启动 $serverName 成功"

2、需要注意的问题点

在编写Shell脚本时需要知道每句Shell的含义,尽可能将所有问题点都能考虑到,比如:

a) 强杀进程问题

进行PID=$(ps -ef | grep $serverName | grep -v grep | awk '{ print $2 }')时,要确定查询的只是目标Tomcat的进程pid,防止在后续强制停止时将其他应用Tomcat误强行停止,这里建 议给每一个目标Tomcat设置指定的进程名,设置方法为:

在指定tomcat的bin/ setclasspath.sh文件中找到if [ -z "$_RUNJAVA" ]判断语句,进行以下设置即可

if [ -z "$_RUNJAVA" ]; then

#_RUNJAVA="$JRE_HOME"/bin/java

#注释tomcat默认进程名,设置指定的进程名称,集群的时候可以进行编号01,02,03设置

cp "$JAVA_HOME/bin/java" "$JAVA_HOME/bin/seckill_consumer01"

_RUNJAVA="$JRE_HOME/bin/seckill_consumer01"

fi

b) Shell脚本尽可能通用

我吸取了现在比较流行的一句话“约定大于配置”及平时所看所想,在编写Shell脚本时可以提取可变或多处使用的变量,使整个Shell脚本尽可能提炼成通用,以便类似项目部署可以使用现有脚本进行更改后使用,减少重新编写新Shell脚本带来不可控的问题。

【④使用Jenkins进行代码部署】

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

在使用Jenkins进行项目部署时,需要将Jenkins的war包放在服务器的指定位置。Jenkins的war的下载可以去Jenkins的官网进行下载。

使用Jenkins进行代码部署时需要的环境支持:

1、安装Maven并配置环境变量

2、Git客户端,并配置环境变量

3、熟悉Shell脚本相关知识

4、对Jenkins有一定了解

使用Jenkins进行代码部署如下:

1、 启动Jenkins工具

在jenkins.war目录执行以下命令操作启动Jenkins工具。

[xiongshx@localhost jenkins]$ java -jar jenkins.war

Jenkins工具初始化的一些操作可以百度或者去Jenkins查看可以参考【

初始化后需要进行的配置

工具配置

->

Jdk配置:

澳门新萄京 81

Git配置:

澳门新萄京 82

Maven配置:

澳门新萄京 83

2、 新建任务

澳门新萄京 84

需要注意的点:

1、填写源码仓库地址

澳门新萄京 85

2、构建时操作及自定义shell代码

澳门新萄京 86

Shell代码如下:

#!/bin/bash

#shell功能概要:seckill的Web消费者构建shell

#引用的技术有:git、maven

#发布web消费者的服务器的进程名

serverName="seckill_consumer"

#获取发布web消费者的服务器的进程PID

PID=$(ps -ef | grep $serverName | grep -v grep | awk '{ print $2 }')

#需要在脚本开始时添加export BUILD_ID=dontKillMe。

#原因:因为Jenkins执行完当前任务之后需要执行下一个任务,此时Jenkins会直接把tomcat进程杀掉,

#因此在脚本中编写的tomcat启动命令是不会执行的。

export BUILD_ID=dontKillMe

#java代码本地仓库地址

javaBaseSrc="/home/xiongshx/.jenkins/workspace/"

#项目路径

javaProjectSrc="seckill/seckill-web/target/seckill-web.war"

#发布的tomcat

projectServicersPath=(/opt/seckill-tomcat/seckill-tomcat-01)

projectName="sekill"

for var in ${PID};

do

echo "准备强制停止PID:$var"

kill -9 $var

done

echo "kill $serverName sucess"

#如果上一个命令执行失败,执行的状态码不为0

if [ $? -ne 0 ]

then

echo "构建失败,请查看代码问题!"

exit 1;

fi

for projectServicer in ${projectServicersPath[@]}

do

cp $javaBaseSrc$javaProjectSrc $projectServicer/webapps

echo "$projectServicer 代码发布成功!"

/bin/bash $projectServicer/bin/startup.sh

if [ $? -ne 0 ]

then

echo "$projectServicer 启动失败"

exit 1;

else

echo "$projectServicer 启动成功";

fi

done

echo "启动 $serverName 成功"

3、 启动项目

澳门新萄京,->->即可查看整个代码部署过程中的信息输出。

澳门新萄京 87澳门新萄京 88

4、需要注意的问题点:

1、Jenkins的war问题

最简单jenkins.war的启动方式是在控制台终端执行命令:java -jar jenkins.war;但是此方法会占用一个终端窗口,且关闭后Jenkins工具就不能进行访问,可以使用命令进行后台执行,命令如下:

nohup java -jar jenkins.war --httpPort=9090 > /dev/null 2>&1 &

命令解释

nohup 后台执行操作

--httpPort=9090表示指定占用9090端口进行访问

澳门新萄京:CentOS上利用Git和Maven自动化部署Java,Shell环境的搭建使用。> /dev/null 将日志输出到/dev/null

2>&1 & 用来将标准错误2重定向到标准输出1中的此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。最后一个&,则是让bash在后台执行。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

另外一种更优雅的方式是使用Shell脚本控制Jenkins工具的启动、停止、重启等操作。

样例如下:

#!/bin/bash

#功能描述:用于Jenkins运行,停止,重启

#将此脚本放在jenkins.war同级目录

#获取Jenkins的进程id

pid=$(ps -ef| grep "jenkins.war" | grep -v grep | awk '{print $2}')

#jenkins默认端口号

jekinsDefaultPort=9090

#如果用户有自定义端口号,则使用用户自定义的端口号启动jenkins

if [ x$2 != x ]

then

jekinsDefaultPort=$2

fi

#启动jenkins

start(){

if [ x$pid != x ]

then

echo "jenkins已经是启动状态..."

exit 1

fi

nohup java -jar jenkins.war --httpPort=$jekinsDefaultPort > /dev/null 2>&1 &

echo "jenkins启动成功,端口号为:$jekinsDefaultPort..."

return $?

}

stop(){

echo "准备停止jenkins..."

if [ x$pid != x ]

then

kill -9 $pid

echo "jenkins已经停止..."

exit $?

else

echo "jenkins的进程id不存在,无法进行停止操作..."

exit 1

fi

}

# 重新加载Jenkins

restart() {

stop

start

echo "jenkins重新加载成功,jekins端口号为:$jekinsDefaultPort..."

}

case "$1" in

start)

start

;;

stop)

stop

;;

restart)

stop

start

;;

*)

echo $"提示: 请在jenkins后输入以下参数:{start|stop|restart} 端口号(不填写时默认端口9090)"

exit 1

esac

exit $?

澳门新萄京:CentOS上利用Git和Maven自动化部署Java,Shell环境的搭建使用。2、Jenkins中自定义Shell问题

#需要在脚本开始时添加export BUILD_ID=dontKillMe。

#原因:因为Jenkins执行完当前任务之后需要执行下一个任务,此时Jenkins会直接把tomcat进程杀掉,#因此在脚本中编写的tomcat启动命令是不会执行的。

export BUILD_ID=dontKillMe

学习代码自动部署的缘由一来是由于在平时开发过程中经常会遇到代码部署的环节,希望通过学习此知识后,如果后续有机会针对自己学会的方案进行评估后简化项目中的项目部署,二来是巩固自己近期来学习到的一些知识,通过层层迭进来学习代码的自动部署方案。虽然目前自己的这些流程方案可能还有所欠缺,且还没有经过实际项目考验,但能学到很多实际的知识也足够了,比如Maven相关知识、Shell相关知识以及Jenkins相关知识,这些是只能通过自己动手慢慢去实践才能获取到的经验。如果对代码部署也感兴趣且觉得我写的东西对你有帮助的同行们,我建议可以按照我的学习步骤去学习自动构建技术。

此系列文章可能写的还不够好,并且很多地方我都进行了一些精简。其实我希望给大家提供的是一个思路。比如学习整个项目部署的思路,由Maven插件部署到Shell脚本部署再到Jenkins部署项目,其实越到后面,Jenkins只是对一些操作做了集成封装,但是我觉得如果我们能从最基本做起,了解其中的流程及原理,真正使用Jenkins进行代码部署时,我们能知道所以然,那样我觉得可以更好的使用Jenkins工具。另外,比如Jenkins.war的启动,我很自然的想到使用Shell脚本将它的启动、运行、重启等命令进行封装,并把它设置为开机启动,我觉得这是一个优雅的方式,以后有类似的情况时,我也会考虑这么做。

本文中还有一些没有提及和没有实现的内容,我希望以及对此技术感兴趣的同行们,都可以发散思维,把事情尽善尽美,做到最优做好。通过编写此系列文章,我巩固了我此类技术的知识的了解以及拓展,也希望能够帮助到大家。如果大家在学习此类技术上遇到疑惑或问题,可以百度查看解决办法,也可以给我留言进行探讨。

如果想学习Java工程化、高性能及分布式、深入浅出。微服务、Spring,MyBatis,Netty源码分析的朋友可以加我的Java高级交流:854630135,群里有阿里大牛直播讲解技术,以及Java大型互联网技术的视频免费分享给大家。

最后,希望所有人在不久的将来都能遇到一个优秀的自己。

本文由澳门新萄京发布于澳门新萄京,转载请注明出处:澳门新萄京:CentOS上利用Git和Maven自动化部署Ja

上一篇:61人系统下使用开采须求留神的那点事 下一篇:没有了
猜你喜欢
热门排行
精彩图文