maven+jenkins 搭建自动化部署平台

jenkins 自动化部署

1、安装JDK

1.1、上传linux的JDK安装包到opt目录下,并解压

1.2、配置jdk环境变量vim /etc/profile  在尾部添加如下内容,添加完成后执行命令:source /etc/profile

# jdk环境变量
export JAVA_HOME=/opt/jdk1.8.0_102
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

1.3、依次输入java、javac、java -version,检查安装是否成功

2、linux安装maven

2.1、上传apache-maven-3.6.0-bin.tar.gz安装包到linux服务器opt目录下,并且解压

2.2、进入apache-maven-3.6.0/conf/目录下,修改settings.xml文件

2.3、配置maven环境变量vim /etc/profile  在尾部添加如下内容,添加完成后执行命令:source /etc/profile

# maven 环境变量
export MAVEN_HOME=/opt/apache-maven-3.6.0
export MAVEN_HOME
export PATH=$PATH:$MAVEN_HOME/bin

2.3、输入 mvn -version校验是否成功

3、安装Jenkins到linux服务器

3.1、下载Jenkins的安装包jenkins.war

3.2、上传Jenkins安装包到tomcat目录下,修改tomcat端口号并启动tomcat

3.3、打开浏览器访问ip:port/jenkins进行Jenkins安装

3.4、复制浏览器出现的路径,使用vim命令打开此文件获取安装秘钥,点击下一步,直接点击第一个自动安装,安装完成后输入管理员账号密码姓名以及邮箱信息
    3.5、点击左边系统管理->插件管理->点击第二个页签可选插件->右上角过滤输入Loca->勾选Locale plugin和Localization: Chinese (Simplified)插件,选择下方第一个按钮直接安装,等待安装完成

3.6、点击系统管理->系统设置->Locale栏->    Default Language输入:zh_CN 勾选下方的Ignore browser preference and force this language to all users,确认无误后点击保存,至此Jenkins语言包安装成功

3.7、点击系统管理->插件管理->可选插件,搜索maven->安装Maven Integration插件

4、配置Jenkins的maven项目

4.1、全局工具配置--点击系统管理-全局工具配置

4.1.1、maven配置-默认 settings 提供和默认全局 settings 提供的下拉框都选择为文件系统中的setting文件-在下方输入maven的配置文件路径,例:/opt/apache-maven-3.6.0/conf/settings.xml

4.1.2、jdk-点击jdk安装-去掉自动安装的勾选-别名输入jdk1.8-java_home输入jdk的根目录

4.1.3、maven-点击安装maven-去掉自动安装的勾选-name输入maven,maven_home输入/opt/apache-maven-3.6.0

4.1.4、以上三项确认无误,点击save保存

4.2、点击新建任务-输入项目名称-选择构建一个maven项目-点击确定

4.3、在源码管理选择使用git还是SVN,我们使用svn则选择subversion,Repository URL选项输入源码的根目录,Credentials选择后面的钥匙按钮添加凭证,在天出矿输入个人svn的账号密码保存,然后在Credentials后面下拉列表选择刚才配置的账号密码

4.3、下拉到Post Steps选项,选择Run only if build succeeds(构建完成之后),然后点击下拉列表选择执行shell,把下面附的shell脚本里面的内容复制到输入框中,修改shell脚本中:TOMCAT_APP_PATH变量的值为个人需要最终部署项目app的tomcat绝对路径(个人建议不要和Jenkins放在同一个tomcat中),APP_NAME变量的值更改为软件app的名称(也就是最终war包的名称除了后面的后缀,.war),修改完确认无误,然后点击保存

4.4、点击最左上角的Jenkins返回首页,然后选择刚才新建的项目点击项目名称进入工作空间,点击左边立即构建,在下方Build History表格中可以看到构建版本,点击当前正在构建的版本,点击左方控制台输出,查看构建详细日志,等待构建完成

4.5、等待构建完成后,输入部署的项目的访问地址进行访问验证是否部署成功

附:

#!/usr/bin/env bash
#编译+部署项目站点

# 配置此选项防止tomcat被自动杀死
BUILD_ID=DONTKILLME
#需要配置如下参数
# 项目路径, 在Execute Shell中配置项目路径, pwd 就可以获得该项目路径
export PROJ_PATH=/root/.jenkins/workspace/app_name/

# 输入你的环境上tomcat的全路径
export TOMCAT_APP_PATH=/opt/apache-tomcat-8.0.53

# 项目名称
export APP_NAME=app_name

# tomcat启动等待时间,参数需要比实际启动时间大
export WAIT_TIME=60s

### base 函数
killTomcat()
{
    PID=`ps -ef |grep $TOMCAT_APP_PATH |grep -v grep | awk ‘{print $2}‘`
    if [ ! "$PID" ];then # 这里判断TOMCAT进程是否存在
        echo "进程不存在"
    else
        echo "进程存在 杀死进程PID$PID"
        kill -9 $PID
        killTomcat
    fi
    #上面注释的或者下面的
    # cd $TOMCAT_APP_PATH/bin
    # sh shutdown.sh
}
echo "---------------自动化部署脚本开始执行---------------"
cd $PROJ_PATH/
mvn clean install

# 停tomcat
echo "正在停止tomcat..."
killTomcat

# 获取当前时间,为备份war文件做准备
current=`date "+%Y-%m-%d %H:%M:%S"`
# 格式化为时间戳
timeStamp=`date -d "$current" +%s`

# 进行原项目文件的备份
echo "进行原项目文件的备份为"$APP_NAME.$timeStamp.tar.gz
cd $TOMCAT_APP_PATH/webapps/
tar -czf $APP_NAME.$timeStamp.tar.gz $APP_NAME

#备份完成后删除原项目目录
echo "备份成功,删除原项目目录"
rm -rf $TOMCAT_APP_PATH/webapps/$APP_NAME

# 复制新的工程到tomcat上
echo "复制新war包到tomcat的webapps目录下,并启动tomcat以加压war包..."
cp $PROJ_PATH/target/$APP_NAME.war $TOMCAT_APP_PATH/webapps/

# 启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh

echo "tomcat正在启动中..."$WAIT_TIME"后自动停止tomcat并备份war包"
#let 后面接运算符表达式,不加引号应该也可以
sleep $WAIT_TIME

# 停止Tomcat
cd $TOMCAT_APP_PATH/
killTomcat
echo "tomcat已停止,正在备份"$APP_NAME.war"为"$APP_NAME.war.$timeStamp.bak

# 备份项目war包
mv $TOMCAT_APP_PATH/webapps/$APP_NAME.war $TOMCAT_APP_PATH/webapps/$APP_NAME.war.$timeStamp.bak

# 备份后重新启动Tomcat
cd $TOMCAT_APP_PATH/
sh bin/startup.sh &
echo "tomcat正在启动中..."$WAIT_TIME"后自动完成"
sleep $WAIT_TIME
PID_STAT=`ps -ef |grep $TOMCAT_APP_PATH |grep -v grep | awk ‘{print $2}‘`
if [ ! "$PID_STAT" ];then # 这里判断TOMCAT进程是否存在
    echo "tomcat启动失败"
    echo "---------------自动化部署脚本执行完成,但tomcat启动失败,请联系管理员核查原因---------------"
else
    echo "tomcat启动成功"
    echo "---------------自动化部署脚本执行完成---------------"
fi

附maven  settings.xml配置文件内容

<?xml version="1.0" encoding="UTF-8"?>

<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->

<!--
 | This is the configuration file for Maven. It can be specified at two levels:
 |
 |  1. User Level. This settings.xml file provides configuration for a single user,
 |                 and is normally provided in ${user.home}/.m2/settings.xml.
 |
 |                 NOTE: This location can be overridden with the CLI option:
 |
 |                 -s /path/to/user/settings.xml
 |
 |  2. Global Level. This settings.xml file provides configuration for all Maven
 |                 users on a machine (assuming they‘re all using the same Maven
 |                 installation). It‘s normally provided in
 |                 ${maven.conf}/settings.xml.
 |
 |                 NOTE: This location can be overridden with the CLI option:
 |
 |                 -gs /path/to/global/settings.xml
 |
 | The sections in this sample file are intended to give you a running start at
 | getting the most out of your Maven installation. Where appropriate, the default
 | values (values used when the setting is not specified) are provided.
 |
 |-->
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  <localRepository>/opt/apache-maven-3.6.0/repository</localRepository>

  <!-- interactiveMode
   | This will determine whether maven prompts you when it needs input. If set to false,
   | maven will use a sensible default value, perhaps based on some other setting, for
   | the parameter in question.
   |
   | Default: true
  <interactiveMode>true</interactiveMode>
  -->

  <!-- offline
   | Determines whether maven should attempt to connect to the network when executing a build.
   | This will have an effect on artifact downloads, artifact deployment, and others.
   |
   | Default: false
  <offline>false</offline>
  -->

  <!-- pluginGroups
   | This is a list of additional group identifiers that will be searched when resolving plugins by their prefix, i.e.
   | when invoking a command line like "mvn prefix:goal". Maven will automatically add the group identifiers
   | "org.apache.maven.plugins" and "org.codehaus.mojo" if these are not already contained in the list.
   |-->
  <pluginGroups>
    <!-- pluginGroup
     | Specifies a further group identifier to use for plugin lookup.
    <pluginGroup>com.your.plugins</pluginGroup>
    -->
  </pluginGroups>
  <proxies>
  <!-- proxies
   | This is a list of proxies which can be used on this machine to connect to the network.
   | Unless otherwise specified (by system property or command-line switch), the first proxy
   | specification in this list marked as active will be used.
   |-->
    <!-- proxy
     | Specification for one proxy, to be used in connecting to the network.
     |
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
    </proxy>
    -->
  </proxies>

  <!-- servers
   | This is a list of authentication profiles, keyed by the server-id used within the system.
   | Authentication profiles can be used whenever maven must make a connection to a remote server.
   |-->
  <servers>
    <!-- server
     | Specifies the authentication information to use when connecting to a particular server, identified by
     | a unique name within the system (referred to by the ‘id‘ attribute below).
     |
     | NOTE: You should either specify username/password OR privateKey/passphrase, since these pairings are
     |       used together.
     |
    <server>
      <id>deploymentRepo</id>
      <username>repouser</username>
      <password>repopwd</password>
    </server>
    -->

    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->
  </servers>

  <!-- mirrors
   | This is a list of mirrors to be used in downloading artifacts from remote repositories.
   |
   | It works like this: a POM may declare a repository to use in resolving certain artifacts.
   | However, this repository may have problems with heavy traffic at times, so people have mirrored
   | it to several places.
   |
   | That repository definition will have a unique id, so we can create a mirror reference for that
   | repository, to be used as an alternate download site. The mirror site will be the preferred
   | server for that repository.
   |-->
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given repository. The repository that
     | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
     <!-- nexus-aliyun 首选,放第一位,有不能下载的包,再去做其他镜像的选择  -->
     <mirror>
      <id>nexus-aliyun</id>
      <mirrorOf>*</mirrorOf>
      <name>Nexus aliyun</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>

    <!-- 备选镜像,也是可以通过 url 去查找确定一下,
        该镜像是否含有你想要的包,它比 spring-libs-milestone 快  -->
    <mirror>
      <id>central-repository</id>
      <mirrorOf>*</mirrorOf>
      <name>Central Repository</name>
      <url>http://central.maven.org/maven2/</url>
    </mirror>

  </mirrors>

  <!-- profiles
   | This is a list of profiles which can be activated in a variety of ways, and which can modify
   | the build process. Profiles provided in the settings.xml are intended to provide local machine-
   | specific paths and repository locations which allow the build to work in the local environment.
   |
   | For example, if you have an integration testing plugin - like cactus - that needs to know where
   | your Tomcat instance is installed, you can provide a variable here such that the variable is
   | dereferenced during the build process to configure the cactus plugin.
   |
   | As noted above, profiles can be activated in a variety of ways. One way - the activeProfiles
   | section of this document (settings.xml) - will be discussed later. Another way essentially
   | relies on the detection of a system property, either matching a particular value for the property,
   | or merely testing its existence. Profiles can also be activated by JDK version prefix, where a
   | value of ‘1.4‘ might activate a profile when the build is executed on a JDK version of ‘1.4.2_07‘.
   | Finally, the list of active profiles can be specified directly from the command line.
   |
   | NOTE: For profiles defined in the settings.xml, you are restricted to specifying only artifact
   |       repositories, plugin repositories, and free-form properties to be used as configuration
   |       variables for plugins in the POM.
   |
   |-->
  <profiles>
    <!-- profile
     | Specifies a set of introductions to the build process, to be activated using one or more of the
     | mechanisms described above. For inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a consistent naming convention
     | for profiles, such as ‘env-dev‘, ‘env-test‘, ‘env-production‘, ‘user-jdcasey‘, ‘user-brett‘, etc.
     | This will make it more intuitive to understand what the set of introduced profiles is attempting
     | to accomplish, particularly when you only have a list of profile id‘s for debug.
     |
     | This profile example uses the JDK version to trigger activation, and provides a JDK-specific repo.
    <profile>
      <id>jdk-1.4</id>

      <activation>
        <jdk>1.4</jdk>
      </activation>

      <repositories>
        <repository>
          <id>jdk14</id>
          <name>Repository for JDK 1.4 builds</name>
          <url>http://www.myhost.com/maven/jdk14</url>
          <layout>default</layout>
          <snapshotPolicy>always</snapshotPolicy>
        </repository>
      </repositories>
    </profile>
    -->

	<profile>
		<id>jdk-1.8</id>
		<activation>
			<activeByDefault>true</activeByDefault>
			<jdk>1.8</jdk>
		</activation>
		<properties>
			<maven.compiler.source>1.8</maven.compiler.source>
			<maven.compiler.target>1.8</maven.compiler.target>
			<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
		</properties>
	</profile>

    <!--
     | Here is another profile, activated by the system property ‘target-env‘ with a value of ‘dev‘,
     | which provides a specific path to the Tomcat instance. To use this, your plugin configuration
     | might hypothetically look like:
     |
     | ...
     | <plugin>
     |   <groupId>org.myco.myplugins</groupId>
     |   <artifactId>myplugin</artifactId>
     |
     |   <configuration>
     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
     |   </configuration>
     | </plugin>
     | ...
     |
     | NOTE: If you just wanted to inject this configuration whenever someone set ‘target-env‘ to
     |       anything, you could just leave off the <value/> inside the activation-property.
     |
    <profile>
      <id>env-dev</id>

      <activation>
        <property>
          <name>target-env</name>
          <value>dev</value>
        </property>
      </activation>

      <properties>
        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
      </properties>
    </profile>
    -->
  </profiles>

  <!-- activeProfiles
   | List of profiles that are active for all builds.
   |
  <activeProfiles>
    <activeProfile>alwaysActiveProfile</activeProfile>
    <activeProfile>anotherAlwaysActiveProfile</activeProfile>
  </activeProfiles>
  -->
</settings>

原文地址:https://www.cnblogs.com/xujinbao/p/10186828.html

时间: 2024-08-28 05:41:18

maven+jenkins 搭建自动化部署平台的相关文章

jenkins搭建自动化部署平台(svn+tomcat重启)

原文链接:http://blog.csdn.net/zjs40/article/details/51818322 jenkins 自动化部署和集成代码的平台 可以将Git svn 上的代码 checkout 然后重新部署服务器,节省开发测试的效率 一.https://jenkins.io/index.html 下载jenkins包(war包) 二.下载完war包   在服务器上最好新建一个tomcat专门用来做jenkins启动的   修改一下server.xml 文件中修改   : (1) 修

centos7+docker+Jenkins+svn搭建自动化部署平台

centos7+docker+Jenkins+svn搭建自动化部署平台 1. centos7 参考链接:http://www.macrozheng.com/#/reference/linux_install tips 公司服务器配置(1T机械+256固态+i7的u) 需要我们把系统,环境(java,mysql,redis,docker等)装到固态上(速度快),我们的代码放到机械上.分区情况如下图 2. centos7中安装docker1.31.1 自行百度,此处无坑 3. centos7安装配置

jenkins+git+maven搭建自动化部署项目环境

简介    折腾了两个晚上,趁着今晚比较有空,把jenkins+git+maven搭建自动化部署项目环境搭建的过程记录一下,这里我把github作为git的远程仓库(https://github.com/jacky-        lulu/cxf_demo-Maven-Webapp)     系统:centos6.5 maven: Apache Maven 3.3.9 git:git version 2.0.0 1.首先安装git,看以前另外一篇博客 http://www.cnblogs.co

开源Java自动化部署平台JDeploy

JDeploy是Java + Shell实现的基于Linux系统的自动化.可视化的项目部署平台,能部署Java服务.Java Web项目,可以简化项目部署操作,无需繁琐的黑窗口SSH指令及Jenkins复杂的配置. 传统部署方式:从SVN/GIT服务器检出代码->在IDE中打包->将包传到服务器->SSH连上服务器->敲指令启动/停止 JDeploy部署:创建项目->一键部署/启动/停止 * 检出代码.打包.启动.停止等操作通过Shell脚本自动执行. 下载:http://d

Jmeter+maven+Jenkins构建云性能测试平台(mark 推荐)

转自:http://www.cnblogs.com/victorcai0922/archive/2012/06/20/2555502.html Jmeter+maven+Jenkins构建云性能测试平台(一) 最近在利用Jmeter来做一套自动化性能测试框架,做自动化性能测试框架的目的 是希望能够针对系统做一个benchmark的性能测试,能够快速的在每个版本发布后,对该版本进行benchmark性能测试,以比较与上一个版本的性 能是否发生变化,若发生变化便可以快速的通知开发人员以确定性能发生变

基于Jenkins Pipeline自动化部署

最近在公司推行Docker Swarm集群的过程中,需要用到Jenkins来做自动化部署,Jenkins实现自动化部署有很多种方案,可以直接在jenkins页面写Job,把一些操作和脚本都通过页面设置,也可以在每个项目中直接写Pipeline脚本,但像我那么优秀,那么追求极致的程序员来说,这些方案都打动不了我那颗骚动的心,下面我会跟你们讲讲我是如何通过Pipeline脚本实现自动化部署方案的,并且实现多分支构建,还实现了所有项目共享一个Pipeline脚本. 使用Jenkins前的一些设置 为了

jenkins实现自动化部署及服务重启-初级

jenkins实现自动化部署及服务重启-初级 一.说明 部署jenkins 主要用于web界面化的代码上传.生产服务重启.还未涉及到svn中的代码打包,后期会配合开发同事一起完成此功能.使用jenkins而不是脚本执行主要作用是为了方便版本控制.减少人为失误导致.而jenkins主要是作为可视化的一个框架使用,核心还是各类脚本的执行.而此篇内容主要是讲解如果搭建jenkins,脚本内容将在后续逐个展示,因为作者运用jenkins比较粗浅,也在不断摸索中,此篇文章也是为菜鸟朋友们准备的,希望借鉴此

关于自动化部署平台的尝试

前言 参加过两次公司生产环境的版本更新,最近一次让我萌生了开发一个自动化部署平台的念头.虽然网上也有不少的自动化部署软件,但还是想自己动手写一个.一来是为了让平台更适应当前的实际情况,也利于以后自己对平台通用性的扩展:二来是为了锻炼自己,给自己的空闲时间找点事情做,不至于虚度时光. 以下是整理出的初稿,想到的点比较简单,后面会持续完善. 如果本文有幸被您看到,望能指点一二. 不管是积极的还是消极的,请留下您的看法. 背景 程序开发好之后免不了部署.刚开始还好,手动打包.上传.部署,也不需要多长时

salt分布式自动化部署平台

集中管理平台上安装salt-master 各个交易所监控机上安装salt-minion和salt-master,各个客户端安装salt-minion; salt-master管理各个监控机,监控机管理各个客户端,这样实现统一自动化部署.