一个通用的 java 项目的模板
#!groovy
def oper_checkout(SCM_TYPE,SCM_URL,SCM_AUTH_PASS,SCM_BRANCH=' ',SCM_AUTH_USER=' '){
if (SCM_TYPE =='git') {
return checkout([$class: "GitSCM", branches: [[name: "${SCM_BRANCH}"]], \
doGenerateSubmoduleConfigurations: false, extensions: [], \
submoduleCfg: [], userRemoteConfigs: [[credentialsId: "${SCM_AUTH_PASS}", \
url: "${SCM_URL}"]]])
}
else if (SCM_TYPE == 'tfs' ) {
// need SCM_AUTH_USER args
return checkout(changelog: false, poll: false, scm: [$class: 'TeamFoundationServerScm', \
password: new hudson.util.Secret("$SCM_AUTH_PASS"), projectPath: "${SCM_BRANCH}", \
serverUrl: "${SCM_URL}", useOverwrite: true, useUpdate: true, userName: "$SCM_AUTH_USER", \
workspaceName: 'Hudson-${JOB_NAME}'])
}
else if (SCM_TYPE == 'svn' ){
return checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', \
excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', \
locations: [[cancelProcessOnExternalsFail: true, credentialsId: "${SCM_AUTH_PASS}",\
depthOption: 'infinity', ignoreExternalsOption: true, local: '.', \
remote: "${SCM_URL}" ]], \
quietOperation: true, workspaceUpdater: [$class: 'CheckoutUpdater']])
}
}
pipeline { environment { // define output packagename
sourcefile="project_name"
//Tomcat Home Path SCM_TYPE = 'git'
SCM_URL = 'gitutl'
SCM_AUTH_PASS = 'jenkins_auth'
SCM_BRANCH = 'dev'
SCM_AUTH_USER = ' ' // build cmd
BUILD_CMD = 'mvn clean package' // define app env START_CMD = '/opt/apache-tomcat-8.5.34/bin/startup.sh'
STOP_CMD = '/opt/apache-tomcat-8.5.34/bin/shutdown.sh' APP_PATH = '/opt/apache-tomcat-8.5.34/webapps/ROOT' // Not need often change
zipfile="${sourcefile}.zip"
outfile="${sourcefile}.war" }
tools {
maven 'maven3'
jdk 'jdk-8'
}
agent { label 'master' } options {
buildDiscarder(logRotator(numToKeepStr: '30', artifactNumToKeepStr: '30' ))
}
stages{
stage('checkout'){
steps{
oper_checkout(SCM_TYPE,SCM_URL,SCM_AUTH_PASS,SCM_BRANCH,SCM_AUTH_USER)
}
}
stage('build'){
steps{
sh """
${BUILD_CMD};
"""
// sh """ // find target -name '*.war' | xargs -i mv {} target/${sourcefile}-1.0.jar
// """
script{
rvfind = sh returnStdout: true,script: "find target -name '${sourcefile}*.war'" if (rvfind == ''){
outfile = "${sourcefile}.jar"
rvfind = sh returnStdout: true, script: "find target -name '${sourcefile}*.jar'"
} rvfind = rvfind.trim()
sh """
if test ! -d ${sourcefile};then mkdir ${sourcefile};else rm -rf ${sourcefile}/* ; fi;
"""
if (outfile.contains('war')){
sh """
unzip -q ${rvfind} -d ${sourcefile};
"""
} else {
sh " cp ${rvfind} ${sourcefile}/;"
}
sh ""
} script {
if (outfile.contains('war')){
if (APP_PATH.contains('ROOT')) {
sh """
cd ${sourcefile};
zip -qry $zipfile .;
cd .. && mv ${sourcefile}/$zipfile .;
"""
}else{
sh """
zip -qry $zipfile ${sourcefile};
"""
}
} else {
sh """
cd ${sourcefile};
zip -qry $zipfile .;
cd .. && mv ${sourcefile}/$zipfile .;
"""
}
}
stash includes: "$zipfile", name: "$zipfile"
}
}
stage('service oper'){
agent { label '192.168.8.105'}
steps{
sh 'rm -rf ./*'
unstash "$zipfile"
sh '''
echo "Normal Stop Process ...";
sudo su -c "$STOP_CMD" && echo 'Process Stop Success' || echo 'Process Stop Fariure'
'''
script {
if (APP_PATH.contains('ROOT')) {
sh '''
sudo su -c "if test ! -d $APP_PATH;then mkdir -p $APP_PATH;fi; cd ${APP_PATH};rm -rf ./*;unzip $WORKSPACE/$zipfile;";
'''
} else {
sh '''
sudo su -c "if test ! -d $APP_PATH;then mkdir -p $APP_PATH;fi; cd ${APP_PATH};rm -rf ./${sourcefile}*;unzip $WORKSPACE/$zipfile;";
'''
}
}
sh '''
echo "Normal Start Process ...";
sudo su -c "$START_CMD" && echo 'Process Start Success' || echo 'Process Start Fariure'
'''
}
}
}
}
一个通用的 java 项目的模板的更多相关文章
- 肝了一个半月的 Java 项目快速开发脚手架:Chewing
前言 闲来无事,整一个 Java 项目快速开发脚手架. 正文 一.简介 Chewing 是一个简单的 Java 项目快速开发脚手架.既适合需要开发小型项目的小伙伴使用,也适合刚入门的新手用来学习一些常 ...
- Maven:如何在eclipse里新建一个Maven的java项目和web项目
如何在eclipse里新建一个Maven的java项目和web项目: 一:java项目 New-->Other-->Maven 右击项目-->properties,修改以下文件: ① ...
- Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目
http://www.cnblogs.com/xiaocen/p/3736095.html amoeba实现mysql读写分离 application shang 2年前 (2013-03-28) ...
- 怎么快速入门一个老的java项目
作者:eilen著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 1.有文档肯定先看文档,先看设计文档,产品的.技术的设计文档,接口文档写的好的可以看看,要是写的不好不着急看. 2 ...
- Ubuntu上部署一个简单的Java项目
一.安装tomcat7,mysql,Java JDK,直接apt安装 $ sudo aptitude install tomcat7 $ -jdk openjdk--jre $ sudo aptitu ...
- 使用Eclipse载入一个现有的java项目
下文的导入记录了在Eclipse环境中,要对已经下载好的java源码进行载入时的步骤.主要用于下载后的文件不方便进行拷贝到其它位置的情况.笔者几次用到这个顺序来载入项目,但是都是隔非常长时间才用一次, ...
- 导入一个eclipse的java项目到IDEA报Cannot find JDK '1.7' for module 'TEST'
解决办法: 右键你的项目--------------->OPen module settings 将dependencies里面的module sdk改成你安装的java版本就可以了(比如我电脑 ...
- 一个简单的java项目使用hibernate连接mysql数据库
实体类与表对应文件Customer.hbm.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTY ...
- JetBrains Fleet初体验,如何运行一个java项目
序言 各位好啊,我是会编程的蜗牛,JetBrains 日前宣布其打造的下一代 IDE Fleet 正式推出公共预览版,现已开放下载.作为java开发者,对于JetBrains开发的全家桶可以说是印象深 ...
- [IntelliJ IDEA入门] 新建一个Java项目
新建一个Project 是否有JDK配置 选择JavaEE 点击Next 项目路径和文件 .idea (directory based) 创建项目的时候自动创建一个 .idea 的项目配置目录来保存项 ...
随机推荐
- 2022-11-03 Acwing每日一题
本系列所有题目均为Acwing课的内容,发表博客既是为了学习总结,加深自己的印象,同时也是为了以后回过头来看时,不会感叹虚度光阴罢了,因此如果出现错误,欢迎大家能够指出错误,我会认真改正的.同时也希望 ...
- kotlin的suspend对比csharp的async&await
协程的出现大大降低了异步编程的复杂度,可以让我们像写同步代码一样去写异步代码,如果没有它,那么很多异步的代码都是需要靠回调函数来一层层嵌套,这个在我之前的一篇有介绍 rxjava回调地狱-kotlin ...
- IDEA把项目推送到Gitee
1.在gitee注册账户:QQ注册就是:QQ邮箱和密码 2.新建一个自己的仓库 3.打开本地的IDEA中的项目 4.添加git项目标记||前提都是IDEA已关联你的GIt软件 5.查看git项目标记是 ...
- Python3 Scrapy 框架学习
1.安装scrapy 框架 windows 打开cmd输入 pip install Scrapy 2.新建一个项目: 比如这里我新建的项目名为first scrapy startproject fir ...
- 关于Module Not Found Error No module named Crypto解决
前言 之前就遇到这个问题, 当然是windows上具有的问题 问题描述 from Crypto.Cipher import AES 出现 ModuleNotFoundError: No module ...
- 1.3 Apache Hadoop的重要组成-hadoop-最全最完整的保姆级的java大数据学习资料
目录 1.3 Apache Hadoop的重要组成 1.3 Apache Hadoop的重要组成 Hadoop=HDFS(分布式文件系统)+MapReduce(分布式计算框架)+Yarn(资源协调框架 ...
- 基于jenkins+kubernetes的cicd流程实践一:环境搭建及方案原理实现
1.基础环境:Centos7.9,kubernetes:v1.21.5 node-1@112(master):docker,containerd,harbornginx(80),git,etcd no ...
- 【大数据面试】Flink 03-窗口、时间语义和水印、ProcessFunction底层API
三.窗口 1.窗口的介绍 (1)含义 将无限的流式数据切割为有限块处理,以便于聚合等操作 (2)图解 2.窗口的分类 (1)按性质分 Flink 支持三种划分窗口的方式,time.count和会话窗口 ...
- 3.7V升压5V,3.7V转5V电路图芯片
锂离子电池在如今是广泛应用存在我们生活中的方方面面的电子产品中.如,电子玩具,美容仪,医疗产品,智能手表,手机,笔记本,电动汽车等等非常多. 锂电池3.7V升压到5V,3.7V转5V稳压输出的电子产品 ...
- Vuex极速入门
01.什么是Vuex? 1.1.为什么需要状态管理? 在复杂的系统中,我们会把系统按照业务逻辑拆分为多个层次.多个模块,采用组件式的开发方式.而此时不同模块.父子模块之间的通信就成了一个问题. 为了解 ...