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
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
相关文章推荐
- Powershell实践之Discuz!NT自动打包发布
- 【ios开发技术】IOS项目工程自动打包并发布(用脚本实现打包)
- asp.net TreeView安装、使用(如何将TreeView打包发布)(带CheckBox选择框的TreeView的初始化,TreeView客户端操作:选择父节点后自动选择所有子节点,子节点选择后自动选择父节点)(TreeView节点精确定位)
- 使用 maven 自动将源码打包并发布
- 项目管理实践----自动编译和发布网站
- Ant自动编译打包&发布 android项目
- IOS工程自动打包并发布脚本实现
- Linux环境下Springboot自动打包发布功能
- Ant自动编译打包&发布 android项目
- Ant自动编译打包&发布 android项目
- Jenkins+Maven+Svn实现代码自动打包与发布
- ActiveX控件打包成Cab置于网页中自动下载安装 (收藏未实践测试)
- Jenkins+Maven+Svn实现代码自动打包与发布
- 项目管理实践五、自动编译和发布网站【Using Visual Studio with Source Control S
- ActiveX控件打包成Cab置于网页中自动下载安装 (收藏未实践测试)
- 项目管理实践【五】自动编译和发布网站
- 脚本ANT自动打包Android应用(方便多渠道发布)
- iOS自动打包并发布脚本
- 项目管理实践【五】自动编译和发布网站【Using Visual Studio with Source Control System to build and publish website automatically】
- Maven打包自动发布到nexus私服