PowerShell自动化脚本生成项目的RPM包

 

 

背景:在做关于扩展PowerShell命令的项目过程中,关于此项目的流程大致是:功能分析->代码编写->进行本地测试->远程连接到linux系统生成rpm包->发布rpm包->等待测试。进行本地测试之后的步骤每次都需要执行某些命令,并且当版本迭代时还要修改配置文件,整个流程下来在不出错的情况下也需要半个小时左右,要是中间出现人为配置的不当,还需要重来。所以想着不如写个脚本来把整个流程跑一遍,这样每次只需要执行一个文件就OK。

需要的环境:vSphere Client(可选),Window 7+,powershell 3.0, Git,VS2012, putty,pscp,Maven

          首先安装项目需要的环境,由于这个脚本和环境也可能提供给其他人使用,所以随便找一个电脑配置所需要的环境,在这里公司的虚拟机都放在一台服务器上的,所以利用VSphere Client连接服务器在该服务器上创建虚拟机安装windows7+系统。

    • PowerShell环境:我所安装的windows7系统中powershell版本是2.0,需要升级到3.0+。
    1. 安装Microsoft .NET Framework 4.0的完整安装版本,或者安装Microsoft .NET Framework 4.5的完整安装版本
    2. 安装Windows Management Framework 3.0的6.1内核版本安装文件,如果服务器本身已经安装了高版本的Windows Framework,比如4.5等,直接安装Windows Management Framework 3.0
    3. 重启电脑。利用Get-Host | Select-Object Version命令查看版本是否升级成功。详情请参考链接:如何升级Powershell
    • Git 使用的版本是Git-2.13.0-64-bit,下载后双击安装即可。利用git --version验证如下

    • Maven安装,MVN官网,下载最新版本,解压后配置Path环境变量即可,验证安装成功在cmd中输入mvn -v 

 

 

思路:

    1. 从Git中Clone下Code下项目,如果项目文件已存在就Pull下最新的代码。此脚本放在一个.ps1文件中
    2. Build项目生成项目工具包zip文件。
    3. 将工具包安装到本地,集成到PowerShell命令中
    4. 创建Spec文件,并将工具包zip文件和Spec文件利用pscp.exe上传到linux系统中,在本机利用putty.exe远程执行命令生成rpm
    5. 利用pscp.exe工具从linux下载rpm到本机
    6. 利用Maven工具发布rpm包到指定服务器中。
    7. 主要包含如下几个方法

 

 流程图如下:

 

 

注意事项:

    • 需要改变powershell执行策略,允许执行脚本。命令为Set-ExecutionPolicy RemoteSigned
    • 由于在ps1脚本文件中有些步骤需要生成特殊的文件,在linux上执行,所以要将文件以utf-8格式保存,同时由于回车和换行在不同操作系统中不一样,所以需要进行特殊的处理。由于powershell自带的out-file方法,会把文件转换为utf8-bom的形式所以需要利用New-Object System.Text.UTF8Encoding($false)形式进行文件转换并保存。

涉及到的知识简介:

  •  Windows Power Shell:是一种命令行外壳程序(在操作系统之上提供的一套命令解释程序)和脚本环境,使命令行用户和脚本编写者可以利用.NET Framework的强大功能。
  • 在安装配置apache服务器时,遇到了几个错误。
  1. 首先从官网下载apach。http://www.apache.org/选择Download,在出现的页面中点击第一个链接,会出现文件列表,找到httpd/->Current Releases->找到Files for Microsoft Windows->最后选择第三方网站下载即可。详情参考:http://www.cnblogs.com/yerenyuan/p/5460336.html
  2. 利用"路径\Apache\bin\httpd.exe" -k install -n apache命令安装时,会显示某些错误,不过服务已经存在windows服务列表中,只是在启动服务时会报错:无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题。该错误可以下载vc++2015 并安装 ,链接:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145
  3. 安装完成后,重新启动,显示Invalid command 'Order'错误,此时在httpd文件中找到#LoadModule access_compat_module modules/mod_access_compat.so,去掉#即可,重新启动服务
  4. 卸载apache命令为:sc delete apache
搭建 apache文件服务器,参考 http://limingwang.blog.51cto.com/2739029/1630107/ 。修改apache配置文件httpd,首先 ServerName IP:80  ServerName 去掉#注释,DocumentRoot "d:/myfile" DocumentRoot 改为你要开发给用户的目录。另外将其他的Diectory节点注释掉,修改Directory节点如下:
 <Directory />
        Options FollowSymLinks  
添加Indexes即Options Indexes FollowSymLinks目的:解决在浏览器中运行出现在You don't have permission to access / on this server.  
        AllowOverride None
        Order deny,allow
        deny from all deny 改为allow,即允许任何访问
</Directory>
  • 在文本处理中,通过使用NotePad++设置View->shwo symbol->shwo all character,会显示文本对于换行的处理方式。CR,LF是不同操作系统上使用的换行符。区别在于:CR用符号\r表示,LF使用\n符号表示。在windows平台上换行在文本文件中使用CRLF两个字节表示,而UNIX和苹果平台换行则使用CR或LF一个字节表示。参考:http://www.cnblogs.com/jiji262/p/3410515.html所以一个文件在传输到不同平台时可能在执行过程中出错。需要统一转换一下。
  • 配置maven服务器,用以maven deploy。

 

转载于:https://www.cnblogs.com/mjys-gh/p/7118244.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值