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