Shell一键部署Auto.ps1

#AutoBuild.ps1
#初始化配置
Write-Host "正在进行初始化配置……"
#每日构建工作目录配置
$buildHome = "F:\AutoBuild"
#SVN相关配置
$svnHome = "D:\Program Files\TortoiseSVN\bin"
$svnUserName = "name"
$svnPsw = "HrZajIlQnJ61e8P"
#tomcat相关配置
$tomcatHome = "D:\Tomcat_7.0"


#项目相关配置@{项目名=svn路径;
#项目名=svn路径}
$projectList = @{"CZMF"="https://192.168.0.21:8800/svn/Qihang/tags/20150528/source"}
#从SVN服务器检出项目
function checkOut ([string]$projectName,[string]$projectUrl)
{
Write-Host "正在从svn服务器检出项目:$projectName ……"
Set-Location -path $svnHome
$projectHome = $buildHome+"\"+$projectName
./svn.exe export $projectUrl $projectHome -q --force --username $svnUserName --password $svnPsw
}
#编译项目
function compileProject ([string]$projectName)
{
Write-Host "正在编译项目:$projectName ……"
#配置编译需要的相关参数
$projectHome = $buildHome+"\"+$projectName
$sourcePath = $projectHome+"\src"
$targetPath = $projectHome+"\WEBRoot\WEB-INF\classes"
$projectLibPath = $projectHome+"\WebRoot\WEB-INF\lib"
#编译项目,拷贝源代码到项目classes目录
Copy-Item $sourcePath\* $targetPath -recurse
#构造classPath
$CLASSPATH = "%CLASSPATH%;"+$targetPath
$libList = Get-ChildItem -path $projectLibPath -include *.jar -Recurse
Foreach($file in $libList)
{
   $CLASSPATH = $CLASSPATH + ";"+$file
}
$otherLibList = Get-ChildItem -path $tomcatHome\lib -include *.jar -Recurse
Foreach($file in $otherLibList)
{
   $CLASSPATH = $CLASSPATH + ";"+$file
}
#遍历文件夹,获得需要编译的文件列表
$fileList = Get-ChildItem -path $targetPath -include *.java -Recurse
#开始编译
Foreach($file in $fileList)
{
javac -classpath $CLASSPATH $file -encoding utf-8 -g:{source,lines} -Xlint:unchecked -Xstdout $buildHome\tmp.txt
$pro = Get-ItemProperty -path $buildHome\tmp.txt
if($pro.Length -gt 0)
{
Get-Content -Path $buildHome\tmp.txt | add-content -path $buildHome\$projectName.txt
add-content -path $buildHome\$projectName.txt -value "==============================================================="
}
Remove-Item $file -recurse -force
}
}


#部署项目
function deployProject ([string]$projectName)
{
Write-Host "正在部署项目:$projectName ……"
Remove-Item -path $tomcatHome\work\Catalina\localhost\$projectName -recurse -force
Remove-Item -path $tomcatHome\webapps\$projectName -recurse -force
#Remove-Item -path $tomcatHome\webapps\$projectName.war -recurse -force
Remove-Item -path $tomcatHome\webapps\ROOT\* -force
$projectHome = $buildHome+"\"+$projectName
Set-Location $projectHome
#jar cf $buildHome\$projectName.war *
#Copy-Item $buildHome\$projectName.war $tomcatHome\webapps -recurse
Copy-Item $buildHome\$projectName\WebRoot\* $tomcatHome\webapps\ROOT\ -recurse
}


#构建
function doBuild
{
Write-Host "清理构建现场……"
#清理编译现场
Remove-Item -path $buildHome\* -recurse -force
#停止tomcat
Write-Host "停止tomcat……"
Set-Location $tomcatHome\bin
cmd /C shutdown.bat
#开始构建
Write-Host "开始构建……"
foreach($key in $projectList.Keys)
{
#从svn检出项目
checkOut $key $projectList[$key]
#编译项目
compileProject $key
#判断编译是否通过
if(Get-Content -Path $buildHome\$key.txt | select-string -pattern "错误" -Quiet)
{
Write-Host "$key 编译未通过!"
}
else
{
Write-Host "$key 编译通过!"
deployProject $key
}
$AttachFiles += $buildHome+"\"+$key+".txt"
}
Write-Host "构建结束……"






Write-Host "启动tomcat"
#启动tomcat
Set-Location $tomcatHome\bin
cmd /C startup.bat
}
#执行构建
doBuild
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值