内容简介:针对使用appassembler-maven-plugin打包插件对项目进行打包的项目,实现使用jenkins进行自动化部署注意:
针对使用appassembler-maven-plugin打包插件对项目进行打包的项目,实现使用jenkins进行自动化部署
二 、基本环境准备
-
搭建一个可用的jenkins
搭建过程.......省略
在jenkins中设置你要部署的服务器
从主页面中进入到配置ssh服务器地址
-
流程图
配置完毕以后,点击Test Configuration测试一下是否可以连接($\color{red}{注意:你要远程部署的服务器必须给当前jenkins所在的服务器开放互相信任}$) 复制代码
-
在项目中配置使用打包插件appassembler-maven-plugin
<build> <plugins> <!-- 目前采用wrapper打包部署 --> <plugin> <!-- http://www.mojohaus.org/appassembler/appassembler-maven-plugin/usage-daemon-generatorconfig.html --> <groupId>org.codehaus.mojo</groupId> <artifactId>appassembler-maven-plugin</artifactId> <version>2.0.0</version> <executions> <execution> <id>generate-jsw-scripts</id> <phase>package</phase> <goals> <goal>generate-daemons</goal> </goals> <configuration> <repositoryLayout>flat</repositoryLayout> <encoding>${project.build.sourceEncoding}</encoding> <!--<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>--> <!-- copy the src/main/resources directory to /src --> <!--为系统配置文件指定一个目录--> <configurationDirectory>conf</configurationDirectory> <!--源代码中对应的系统配置文件的位置--> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <copyConfigurationDirectory>true</copyConfigurationDirectory> <logsDirectory>logs</logsDirectory> <daemons> <daemon> <id>${daemon-name}</id> <mainClass>${daemon-mainClass}</mainClass> <jvmSettings> <initialMemorySize>${daemon-JAVA_Xmx}</initialMemorySize> <maxMemorySize>${daemon-JAVA_Xmx}</maxMemorySize> <extraArguments> <!-- Note : if the value is empty the plugin will throw NullPointerException--> <extraArgument>-Djava.wrapper=1 ${daemon-JAVA_OPS}</extraArgument> <extraArgument>-verbose:gc</extraArgument> <extraArgument>-XX:+PrintHeapAtGC</extraArgument> <extraArgument>-XX:+PrintGCDetails</extraArgument> <extraArgument>-XX:+PrintGCDateStamps</extraArgument> <extraArgument>-XX:+PrintGCTimeStamps</extraArgument> <extraArgument>-XX:+PrintTenuringDistribution</extraArgument> <extraArgument>-XX:+PrintGCApplicationStoppedTime</extraArgument> <extraArgument>-Xloggc:logs/gc.log</extraArgument> <extraArgument>-XX:+HeapDumpOnOutOfMemoryError</extraArgument> <extraArgument>-XX:HeapDumpPath=logs/gc.hprof</extraArgument> <extraArgument>-XX:ErrorFile=logs/java_error_%p.log</extraArgument> <!--<extraArgument>-Xbootclasspath/p:lib/alpn-boot-${alpn.boot.version}.jar</extraArgument>--> </extraArguments> </jvmSettings> <platforms> <platform>jsw</platform> </platforms> <generatorConfigurations> <generatorConfiguration> <generator>jsw</generator> <includes> <include>linux-x86-32</include> <include>linux-x86-64</include> <include>macosx-universal-64</include> <include>macosx-universal-32</include> <include>windows-x86-32</include> <include>windows-x86-64</include> </includes> <configuration> <property> <name>configuration.directory.in.classpath.first</name> <value>conf</value> </property> <property> <name>set.default.REPO_DIR</name> <value>lib</value> </property> <property> <name>wrapper.java.command</name> <value>%JAVA_HOME%/bin/java</value> </property> <property> <name>wrapper.logfile</name> <value>logs/wrapper.log</value> </property> <property> <name>wrapper.startup.timeout</name> <value>7200</value><!-- 2小时 --> </property> <property> <name>wrapper.ping.timeout</name> <value>3600</value><!-- 1小时 --> </property> <property> <name>wrapper.ntservice.name</name> <value>${wrapper.ntservice.name}</value> </property> <property> <name>wrapper.ntservice.displayname</name> <value>${wrapper.ntservice.displayname}</value> </property> <property> <name>wrapper.ntservice.description</name> <value>${wrapper.ntservice.description}</value> </property> <property> <name>wrapper.console.title</name> <value>${wrapper.ntservice.name}</value> </property> <property> <!-- 如果pid文件已经存在则不启动程序 --> <name>wrapper.pidfile.strict</name> <value>TRUE</value> </property> </configuration> </generatorConfiguration> </generatorConfigurations> </daemon> </daemons> </configuration> </execution> </executions> </plugin> </plugins> </build> 复制代码
注意: 如果手动打包的时候,不要使用idea内置的插件(install指令),有时候会有坑
三、书写执行脚本
-
环境准备完毕以后书写相关执行脚本
创建一个test.sh 脚本文件,写入下面内容( 根据自己项目进行一定的修改 )
#!/bin/sh #######变量设置 #输出间隔标识 DASH_LINE_TAG="------------" #目标机器 TARGET_SERVER="192.168.6.225" #目标用户 TARGET_USER=root #jenkins的workspace目录 JENKINS_WORKSPACE="/${TARGET_USER}/.jenkins/workspace" #打包出来的目录地址 详细的修改根据自己项目的最终打包出来的结构做一定调整 其中data-server-test表示的你在jenkins中构建项目的名称,后面才是项目打包的路径 JENKINS_SOURCE_TARGET_HOME="${JENKINS_WORKSPACE}/data-server-test/data-server/target/generated-resources/appassembler/jsw/data-server" #修改workspace对应项目conf下的wrapper.conf jdk路径 sed -i "s\\%JAVA_HOME%/bin/java\\/soft/dorcst/environment/jdk8/bin/java\\g" ${JENKINS_SOURCE_TARGET_HOME}/conf/wrapper.conf #app所在路径 APP_HOME="/soft/data-server" #备份app的目录 APP_BACKUP="/soft/Backup/" #备份文件所在目录 CONF_BAKUP_HOME="/soft/perioperative-jenkins/data-server/conf_bak" #执行文件服务名 SERVICE_NAME=data-server ########远程执行流程 #停止服务 echo "${DASH_LINE_TAG}停止服务: ${APP_HOME}/bin/${SERVICE_NAME} stop" ssh ${TARGET_USER}@${TARGET_SERVER} "${APP_HOME}/bin/${SERVICE_NAME} stop" #备份文件 echo "${DASH_LINE_TAG}备份文件到: ${APP_BACKUP}" ssh ${TARGET_USER}@${TARGET_SERVER} "rm -rf ${APP_BACKUP}data-server" ssh ${TARGET_USER}@${TARGET_SERVER} "cp -rf ${APP_HOME}/ ${APP_BACKUP}" #删除原文件 echo "${DASH_LINE_TAG}删除原文件:${APP_HOME}" ssh ${TARGET_USER}@${TARGET_SERVER} "rm -rf ${APP_HOME}/*" #复制新文件到目录 echo "${DASH_LINE_TAG}复制新文件到目录:${JENKINS_SOURCE_TARGET_HOME} ---> ${TARGET_USER}@${TARGET_SERVER}:${APP_HOME}" scp -r ${JENKINS_SOURCE_TARGET_HOME}/* ${TARGET_USER}@${TARGET_SERVER}:${APP_HOME} #复制备份的配置文件到目录 这是你设置的配置文件地址,配置文件会根据部署不同机器使用不同的配置文件,一开始设置好,自动打包的时候自动替换,就不用每次部署都手动修改了 echo "${DASH_LINE_TAG}复制备份的配置文件到目录: ${CONF_BAKUP_HOME}/conf" ssh ${TARGET_USER}@${TARGET_SERVER} "cp -rf ${CONF_BAKUP_HOME}/* ${APP_HOME}/conf/" #更改执行文件权限 echo "${DASH_LINE_TAG}更改执行文件权限:${APP_HOME}/bin/" ssh ${TARGET_USER}@${TARGET_SERVER} "chmod +x ${APP_HOME}/bin/*" #启动服务 echo "${DASH_LINE_TAG}启动服务: ${APP_HOME}/bin/${SERVICE_NAME} start" ssh ${TARGET_USER}@${TARGET_SERVER} "${APP_HOME}/bin/${SERVICE_NAME} start" 复制代码
以上所述就是小编给大家介绍的《记录一次自己使用jenkins搭建自动部署》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- 「实战篇」开源项目docker化运维部署-借助dockerSwarm搭建集群部署(九)
- 三周学会小程序(三):服务端搭建和免费部署
- next + koa + mongodb 从搭建到部署(一)
- Jenkins + Github + Nginx搭建前端项目自动部署
- Jenkins+SVN+Maven自动化部署环境搭建
- 搭建 K8S 集群之 node 节点部署
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
重新定义团队:谷歌如何工作
拉兹洛·博克 / 宋伟 / 中信出版集团 / 2015-12-1 / CNY 56.00
谷歌首席人才官拉斯洛•博克权威力作,谷歌公开认可的谷歌高层作品,首度揭秘谷歌颠覆工业时代模式的人才和团队管理的核心法则,《纽约时报》畅销榜第一名,Business Insider 2015最佳商业书籍,谷歌的创造力就在于此! 编辑推荐! 1、 谷歌人才官首次公开谷歌人才和团队管理的核心秘籍 在谷歌执掌人事多年的拉斯洛•博克是人才和团队管理的顶级专家。他加入谷歌后,谷歌的员工数从六......一起来看看 《重新定义团队:谷歌如何工作》 这本书的介绍吧!