jenkins+gradle自动构建脚本demo

版权声明:本文为博主原创文章,未经博主允许不得转载。 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


猜你喜欢

转载自blog.csdn.net/cdnight/article/details/82909858
今日推荐