版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cdnight/article/details/82909858
demo如下
jenkins任务
#!/usr/bin/env groovy
pipeline{
agent any
environment {
REVISION = "0.0.${env.BUILD_ID}"
}
options{
disableConcurrentBuilds()
skipDefaultCheckout()
timeout(time: 1, unit: 'HOURS')
timestamps()
}
parameters{
choice(name: 'build_env', choices: 'dev\ntest\nprod\n', description: '请选择构建的环境')
string(name: 'jenkins_project_path', defaultValue: '/var/lib/jenkins/workspace/DevBase/DevBase', description: '注意,这是导出到jenkins的项目的真实目录位置')
}
stages{
stage ('Initialize') {
steps {
script {
currentBuild.displayName = "${REVISION}"
}
sh '''
echo "任务初始化..."
echo "构建版本revision:${REVISION}"
'''
sh '''
echo "项目检出...."
'''
checkout([$class: 'SubversionSCM',
additionalCredentials: [],
excludedCommitMessages: '',
excludedRegions: '',
excludedRevprop: '',
excludedUsers: '',
filterChangelog: false,
ignoreDirPropChanges: false,
includedRegions: '',
locations: [[credentialsId: ????????????????????????????????',
depthOption: 'infinity',
ignoreExternalsOption: true,
remote: 'svn://127.0.0.1:3690/DevBase']],
workspaceUpdater: [$class: 'UpdateUpdater']])
}
}
stage ('Build') {
steps {
echo "您选择了:${params.build_env}"
echo '构建阶段....'
echo 'pojo项目clean.........'
echo 'gradle home need export '
sh "dos2unix ${params.jenkins_project_path}/deploy/deploy-web.sh"
sh "chmod +x ${params.jenkins_project_path}/deploy/deploy-web.sh"
sh " ${params.jenkins_project_path}/deploy/deploy-web.sh -p '${params.jenkins_project_path}' -e '${params.build_env}' "
}
}
stage ('Deploy') {
steps {
echo '发布阶段....'
}
}
}
post {
always {
echo '构建结束...'
}
success {
echo '恭喜您,构建成功!!!'
}
failure {
echo '抱歉,构建失败!!!'
}
unstable {
echo '该任务已经被标记为不稳定任务....'
}
changed {
echo ''
}
}
}
而部署用的脚本:
#!/bin/bash
echo "==========================="
echo "当前脚本用于自动部署web项目"
echo "==========================="
echo "需求参数说明:"
echo "参数-e、构建的环境参数,注意,环境参数有:dev、test、prod三种,默认为dev"
echo "参数-p、项目在jenkins时候的真实目录,譬如:/var/lib/jenkins/workspace/DevBase/DevBase/"
echo "==========================="
echo "==========================="
echo "正在执行:$0"
echo "==========================="
echo "==========================="
echo "脚本执行情况:"
echo "用户输入参数个数:$#"
echo "输入参数列表:$@"
echo "==========================="
###参数设定
#从外界传进来的参数获取工程产出物的具体路径
##构建的环境参数
build_env="dev"
##这些都是事先配置好的参数
build_war_file="/var/lib/jenkins/workspace/DevBase/DevBase/WebSite/build/libs/WebSite-1.0.war"
target_path="/data/web-root/test/OpSystem/"
tomcat_home="";
jar_file_name=""
project_path=""
source /etc/profile
#获取参数:
while getopts :e:p: OPTION;do
case $OPTION in
e)
build_env=$OPTARG
;;
p)
project_path=$OPTARG
;;
?)
;;
esac
done
####判断项目目录是否真实存在。
echo "现在要定位到项目真实目录:$project_path"
if [ ! -e $project_path ]
then
echo "${project_path}不存在,无法继续!"
exit 1
else
if [ -f $project_path ]
then
echo "$project_path 为文件,系统无法处理!"
exit 1
fi
fi
#if [ $build_env eq "dev" ]
#then
###
#elif [ $build_env eq "test" ]
#then
#gradle compileConfig -Denv=test
#elif [ $build_env eq "prod" ]
#then
#gradle compileConfig -Denv=prod
#else
#gradle compileConfig -Denv=dev
#fi
#########1、对项目进行构建
echo "现在要定位到项目真实目录:$project_path"
cd $project_path
###1、a、不同环境的配置文件进行配置及复制
gradle compileConfig -Denv=$build_env
###1、b、编译构建 web 模块项目
gradle :WebSite:releaseWar
#########2、解压缩
echo "build_war_file is:$build_war_file"
####判断产出物是否存在。
if [ -e $build_war_file ]
then
echo "工程打包文件存在,继续执行"
else
echo "工程打包文件不存在,无法继续执行!"
exit 1
fi
if [ -f $build_war_file ]
then
echo ""
else
echo "您指定的产出物为目录,系统无法继续执行!"
exit 1
fi
###检查输出目录是否存在,不存在则新建目录。
if [ ! $target_path ]
then
echo "输出目录为空,系统无法继续执行!"
exit 1
fi
if [ ! -e $target_path ]
then
mkdir -p $target_path
echo "${target_path}不存在,新建成功"
else
if [ -f $target_path ]
then
echo "$target_path 为文件,系统无法处理!"
exit 1
fi
fi
has_tomcat=0
####检查tomcat 目录是否存在。
if [ -z "$tomcat_home" ]
then
echo "tomcat 目录(-s)参数为空系统不执行tomcat相关操作!"
else
has_tomcat=1
fi
##假设有tomcat目录,那么就判断一下。
if [ $has_tomcat -eq 1 ]
then
if [ ! -e $tomcat_home ]
then
echo "${tomcat_home}不存在,系统暂停"
exit
else
if [ -f $tomcat_home ]
then
echo "$tomcat_home 为文件,系统无法处理!"
exit 1
fi
fi
fi
#######有tomcat的话,请先关停服务。
if [ $has_tomcat -eq 1 ]
then
echo "....稍等,正在关停tomcat"
sh "${tomcat_home}/bin/shutdown.sh"
fi
####部署开始。
###删除之前所有文件。
for FILE in $(ls $target_path)
do
echo "删除:$FILE"
rm -rf "${target_path}/${FILE}"
done
###解压缩:
unzip $build_war_file -d $target_path
#######有系统服务的话,部署完了就启动系统服务吧。
if [ $has_tomcat -eq 1 ]
then
echo "....正在重启服务器..."
sh "${tomcat_home}/bin/startup.sh"
fi