您的位置:首页 > 运维架构 > Shell

Powershell实践之Discuz!NT自动打包发布

2009-05-24 14:17 477 查看
缘起:以前写过一篇文章《Discuz!NT持续集成实战》介绍CruiseControl.net 来做Discuz!NT项目的持续集成 。最近喜欢上了 Powershell ,由于本人向来懒惰,遂将日常工作中一些琐碎的,重复的事情用 powershell 来做了。为此某不才,读了 PowerShell 自带的 《GettingStarted》和《UserGuide》 ,基本的东西也就差不多了。在实践的过程中也曾被一些小问题卡住,在ps自带的文档中没有发现解决办法。幸而得到高人相助,一句话道破天机。(悄悄说:这位高人最近酝酿一件关于ps的作品)

Code dnt_publish.ps1

Code function.ps1

#function.ps1 Create by 戏水 2008年12月23日 13:16:43 zjneter.cnblogs.com

#上传ftp

function global:Upload

{

#param定义函数接受的参数,可以指定默认值

param([string]$h, [string]$u, [string]$p,[string]$f,[string]$cd="\")

$cmd = "open $h

user $u $p

binary

cd $cd

put $f"

$cmd | ftp -n

}

function UploadSetupToDntWebServer

{

Write-Host -foregroundcolor green "开始ftp上传到官方网站"

Upload -h 221.194.139.228 -u nicai -p !@#$%^&*() -f $ZipSetupFileName

if ($?)

{

Write-Host -foregroundcolor green "上传到官方网站成功!"

}

else

{

Write-Host -foregroundcolor red "上传到官方网站失败!"

}

#$?变量表示最后一个操作成功与否,成功返回true

}

function UploadToDownloadServer

{

param([string]$filename,[string]$cd)

Write-Host -foregroundcolor green "开始ftp上传到下载服务器"

Upload -h download.comsenz.com -u nizaicai -p !@#$%^&*() -f $filename -cd $cd

if ($?)

{

Write-Host -foregroundcolor green "上传到下载服务器成功!"

}

else

{

Write-Host -foregroundcolor red "上传到下载服务器失败!"

}

}

function ExportDNTSource

{

param([string]$url,[string]$path)

Remove-Item $path -force -recurse

svn export $url $path 从svn中导出无版本控制的源代码

if ($?)

{

Write-Host -foregroundcolor green "导出源代码成功!"

}

else

{

Write-Host -foregroundcolor red "导出源代码失败!"

}

}

这里需要注意的是 dnt_publish.ps1文件中 引入 function.ps1文件的方法:文件名前用了两个点,而且两个点中间需要有空格。

闲言碎语:不才初步体验了PowerShell 一下,感觉很不错哦,像粘合剂一样 把一些小工具 ,WMI .Net Framework 等联系起来 组成超级强大的武器。 语法么还是稍稍感觉有些怪,不太舒服,不过习惯就好了。 另外如果VS能支持 PowerShell 就好了,感觉 PowerShellPlus 用起来还是稍稍不爽。自从写了这个脚本,一切只需轻轻的点一下鼠标,真个过程就自动ok了 (过程: svn check out -> MSBuild 编译解决方案 -> 上传到FTP服务器) 。当然 结合前天代震军同学翻译的文章
http://www.cnblogs.com/daizhj/archive/2008/12/22/1352019.html ,就可以实现整个的打包发布流程咯。

行文仓促,如有谬误 ,还请指正

编辑器不好用,上面的代码可能有问题, 提供源代码下载:http://files.cnblogs.com/zjneter/dnt_publish.rar
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: