初创型公司-持续部署系列(九)测试环境的持续交付

测试环境没有像生产环境的流程那么多,步骤那么严谨。讲究的是发布速度快,快速呈现给开发/测试一个环境出来。

测试环境持续交付的流程:

Paste_Image.png

本实例用得是192.168.77.140作为测试服务器,后端数据库不做考虑,iis站点配置不做说明。

git仓库目前存在3个分支:

  • master
  • dev-pages
  • release-1.0

测试服务器配置

在测试服务器上创建目录

  • D:\test\Packages 用来存放jenkins发来的压缩文件
  • D:\tools 用于存放工具

允许192.168.77.* 网段的主机远程执行winrm

Set-Item wsman:\localhost\Client\TrustedHosts -value 192.168.77.*
winrm quickconfig

jenkins配置

** 安装插件**

  • Git Parameter Plug-In 动态获取git仓库中得分支目录

** 在jenkins服务器上创建目录**

  • D:\build_code\demo,用于存放编译后的代码
  • D:\test\Packages,用于存放代码压缩文件
  • D:\tools,用于存放工具

** 创建一个名为192.168.77.140-test 视图**

Paste_Image.png

目的是为了区分多个测试环境的任务。一个测试环境的发布任务都放在一个视图中。

** 在192.168.77.140-test 视图下创建一个名为Build-deploy_demo_140的任务**

Paste_Image.png

** 配置参数化构建**

选择参数化构建,点击添加参数,选择Git Parameter

Paste_Image.png
Paste_Image.png

** 配置源码管理**

Paste_Image.png

** 配置编译脚本**

Paste_Image.png
/t:clean /t:rebuild /p:Configuration=release  /p:WebProjectOutputDir=d:\test\build_code\demo /p:OutputPath=d:\test\build_code\demo\bin

** 配置编译发布脚本**

Paste_Image.png
function GetRequest($url)
{
    $request = [System.Net.HttpWebRequest]::Create($url)
    $response = [System.Net.HttpWebResponse]$request.GetResponse()
    $code = [System.Int32]$response.StatusCode
    $response.Close()
    Write-Host '[-] HTTP 状态吗: ' $code
}

$datetime=Get-Date -Format 'yyyyMMddHHmmss'
#Predefine necessary information
$ComputerName = "192.168.77.140"     # 远端地址
$Username = "administrator"         # 用户名
$Password = "123456"         # 密码

Write-Host '[-] 清空上传目录'
Remove-Item D:\test\Packages\*  -force -recurse

Write-Host '[-] 打包文件'
D:\tools\7z.exe a D:\test\Packages\demo-$datetime.7z D:\test\build_code\demo\*

#Create credential object
$SecurePassWord = ConvertTo-SecureString -AsPlainText $Password -Force
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $Username, $SecurePassWord

#Create session object with this
$Session = New-PSSession -ComputerName $ComputerName -credential $Cred

Write-Host '[-] 清空部署服务器的上传目录'
Invoke-Command -Session $Session -ScriptBlock {Remove-Item D:\test\Packages\*  -force -recurse}

Copy-Item "D:\test\Packages\demo-*.7z" -Destination "\\$ComputerName\d$\test\Packages\"
Write-Host $ComputerName  '文件 【传送完毕】' 

Write-Host '[-] 关闭iis站点'
Invoke-Command -Session $Session -ScriptBlock {cmd /c "%windir%\system32\inetsrv\appcmd.exe stop site demo"}

Write-Host '[-] 关闭应用程序池'
Invoke-Command -Session $Session -ScriptBlock {cmd /c "%windir%\system32\inetsrv\appcmd.exe stop site demo"}

Write-Host '[-] 关闭iis站点'
Invoke-Command -Session $Session -ScriptBlock {cmd /c "%windir%\system32\inetsrv\appcmd.exe stop apppool demo"}

Write-Host '[-] 清空部署服务器的iis站点目录'
Invoke-Command -Session $Session -ScriptBlock {Remove-Item D:\iis_sites\demo\*  -force -recurse}

Write-Host '[-] 解压文件至iis站点目录’
Invoke-Command -Session $Session -ScriptBlock {cmd /c "cd /d D:\iis_sites\demo\ && D:\tools\7z.exe x D:\test\Packages\*.7z"}

Write-Host '[-] 开启应用程序池'
Invoke-Command -Session $Session -ScriptBlock {cmd /c "%windir%\system32\inetsrv\appcmd.exe start apppool demo"}

Write-Host '[-] 开启iis站点'
Invoke-Command -Session $Session -ScriptBlock {cmd /c "%windir%\system32\inetsrv\appcmd.exe start site demo"}

#Close Session
Remove-PSSession -Session $Session

GetRequest 'http://192.168.77.140'

测试构建

点击任务的Build with Parametes, 选择dev-pages分支编译发布

Paste_Image.png

构建日志

Started by user admin
Building in workspace C:\Program Files (x86)\Jenkins\workspace\Build-deploy_demo_140
Cloning the remote Git repository
Cloning repository https://git.oschina.net/lework/Webdemo.git
 > C:\Program Files\Git\bin\git.exe init C:\Program Files (x86)\Jenkins\workspace\Build-deploy_demo_140 # timeout=10
Fetching upstream changes from https://git.oschina.net/lework/Webdemo.git
 > C:\Program Files\Git\bin\git.exe --version # timeout=10
using GIT_ASKPASS to set credentials 
 > C:\Program Files\Git\bin\git.exe fetch --tags --progress https://git.oschina.net/lework/Webdemo.git +refs/heads/*:refs/remotes/origin/*
 > C:\Program Files\Git\bin\git.exe config remote.origin.url https://git.oschina.net/lework/Webdemo.git # timeout=10
 > C:\Program Files\Git\bin\git.exe config --add remote.origin.fetch +refs/heads/*:refs/remotes/origin/* # timeout=10
 > C:\Program Files\Git\bin\git.exe config remote.origin.url https://git.oschina.net/lework/Webdemo.git # timeout=10
Fetching upstream changes from https://git.oschina.net/lework/Webdemo.git
using GIT_ASKPASS to set credentials 
 > C:\Program Files\Git\bin\git.exe fetch --tags --progress https://git.oschina.net/lework/Webdemo.git +refs/heads/*:refs/remotes/origin/*
 > C:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/dev-pages^{commit}" # timeout=10
 > C:\Program Files\Git\bin\git.exe rev-parse "refs/remotes/origin/origin/dev-pages^{commit}" # timeout=10
Checking out Revision 7a1ffd4d8688273f537ef556d4a2c761181475a6 (refs/remotes/origin/dev-pages)
 > C:\Program Files\Git\bin\git.exe config core.sparsecheckout # timeout=10
 > C:\Program Files\Git\bin\git.exe checkout -f 7a1ffd4d8688273f537ef556d4a2c761181475a6
 > C:\Program Files\Git\bin\git.exe rev-list 7a1ffd4d8688273f537ef556d4a2c761181475a6 # timeout=10
Path To MSBuild.exe: C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe
Executing the command cmd.exe /C " "C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" /t:clean /t:rebuild /p:Configuration=release /p:WebProjectOutputDir=d:\test\build_code\demo /p:OutputPath=d:\test\build_code\demo\bin /p:version=origin/dev-pages Webdemo.sln " && exit %%ERRORLEVEL%% from C:\Program Files (x86)\Jenkins\workspace\Build-deploy_demo_140
[Build-deploy_demo_140] $ cmd.exe /C " "C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" /t:clean /t:rebuild /p:Configuration=release /p:WebProjectOutputDir=d:\test\build_code\demo /p:OutputPath=d:\test\build_code\demo\bin /p:version=origin/dev-pages Webdemo.sln " && exit %%ERRORLEVEL%%
Microsoft (R) 生成引擎版本 14.0.23107.0

....(编译日志)

已成功生成。
    0 个警告
    0 个错误

已用时间 00:00:37.51
[Build-deploy_demo_140] $ powershell.exe -NonInteractive -ExecutionPolicy ByPass "& 'C:\Users\ADMINI~1\AppData\Local\Temp\hudson1881669104991386343.ps1'"
[-] 清空上传目录
[-] 打包文件
7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04

Scanning the drive:
15 folders, 161 files, 43669548 bytes (42 MiB)

Creating archive: D:\test\Packages\demo-20161217123320.7z

Items to compress: 176


Files read from disk: 161
Archive size: 6849624 bytes (6690 KiB)
Everything is Ok
[-] 清空部署服务器的上传目录
192.168.77.140 文件 【传送完毕】
[-] 关闭iis站点
“demo”已成功停止
[-] 关闭应用程序池
“demo”已成功停止
[-] 关闭iis站点
“demo”已成功停止
[-] 清空部署服务器的iis站点目录
[-] 解压文件至iis站点目录

7-Zip [64] 16.04 : Copyright (c) 1999-2016 Igor Pavlov : 2016-10-04

Scanning the drive for archives:
1 file, 6849624 bytes (6690 KiB)

Extracting archive: D:\test\Packages\demo-20161217123320.7z
--
Path = D:\test\Packages\demo-20161217123320.7z
Type = 7z
Physical Size = 6849624
Headers Size = 2698
Method = LZMA2:24 BCJ
Solid = +
Blocks = 2

Everything is Ok

Folders: 15
Files: 161
Size:       43669548
Compressed: 6849624
[-] 开启应用程序池
“demo”已成功启动。
[-] 开启iis站点
“demo”已成功启动。
[-] HTTP 状态吗:  200
Finished: SUCCESS
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容