1.部署环境
方法一: FTP部署
插件:Publish Over FTP
https://www.cnblogs.com/burningmyself/p/12143278.html
方法二:PowerShell
插件:PowerShell
https://www.jianshu.com/p/7a0dc4d8c6c3
方法三:传统的SSH
插件: Publish Over SSH
1.安装OpenSSH
#下载 OpenSSH-Win64版本-解压后复制到C:\Program Files
#https://github.com/PowerShell/Win32-OpenSSH/releases
cd 'C:\Program Files\OpenSSH-Win64'
.\install-sshd.ps1
https://docs.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse
2.启动SSH Server服务-设置为自动启动
测试域账户登录成功
3.Jenkins系统设置->Configure System->SSH配置,方法:见上篇博文
2.编译环境
1.安装插件
Team Foundation Server Plug-in
MSBuild
2.系统配置
系统设置——>全局工具配置——>新增MSBuild——>名称:MSBuild;——>路径:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\
保存
二、项目
1.项目与源码配置
回到Jenkins首页新增Item-自由风格软件-源码管理-这里使用TFS-2019
Collection URL : http://10.10.10.101/DefaultCollection/
Project path :$/SSO/Test-分支-Bug/
设置账户密码
另外高级:
Local workspace name 本地代码存放目录: D:/Work/SSO/Test-分支-Bug/
workspace name 工作空间:Hudson-${JOB_NAME}-${NODE_NAME}
2.构建触发器
这里用Poll SCM 使用 H 18 * * 1-5
语法:
五个位置:* * * * *
第一颗*表示分钟,取值0~59
第二颗*表示小时,取值0~23
第三颗*表示一个月的第几天,取值1~31
第四颗*表示第几月,取值1~12
第五颗*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
特殊语法
M-N:表示M-N的范围;比如第三个位置写:1-7就是每月的1到7号
M/N:表示间隔N的时间;比如:第一个位置:H/30 表示30分钟一次
M,N:表示指定时间;比如:第二个位置:9,17表示每天9点下午5点执行
这里设置为每天执行一次,TFS有变化就会执行
示例
H/15 * * * * 每15分钟执行一次
H(0-29)/10 * * * * 每小时的前半小时,间隔10分钟查一次
45 9-16/2 * * 1-5 每周一到周五的9点到16点,间隔2小时的第45分钟执行一次
H H 1,15 1-11 * 在1到11月的每月1号和15号每天一次
3.构建环境
这里勾上Add timestamps to the Console Output
4.构建
4.1.编译发布
D:\Work\WF\OnlyEdu.WF.UI-分支-Bug\OnlyEdu.WF.Web\OnlyEdu.Workflow.Web\OnlyEdu.Workflow.Web.csproj
命令:
/t:Rebuild /t:ResolveReferences /p:Configuration=Release /p:TargetFrameworkVersion=v4.5 /p:VisualStudioVersion=15.0
/p:DeployOnBuild=true;PublishProfile=Jenkins.pubxml /p:Platform=AnyCPU
4.2.打包
增加构建步骤->Windows Batch Command
压缩设置
chcp 936 if not exist Publish md Publish cd .\Publish del /a /f /s /q D:\Publish\WF\OnlyEdu.Workflow.Web\*.config del /a /f /s /q D:\Publish\WF\OnlyEdu.Workflow.Web\bin\*.pdb del /a /f /s /q D:\Publish\WF\OnlyEdu.Workflow.Web\bin\*.xml set zipname=OnlyEdu.Workflow.Web_BUG_ del %zipname%%TFS_CHANGESET%.zip "C:\Program Files\WinRAR\WinRAR.exe" a -r -ep1 "%zipname%%TFS_CHANGESET%.zip" D:\Publish\WF\OnlyEdu.Workflow.Web\*
del命令
del /a /f /s /q "*.jpg" "*.json" /a /f 是强制删除所有属性的文件 /q是无需确认直接删除 要是再加上/s开关,就可以删除子文件加中的文件
5.构建后操作 Publish Over SSH
注意:
1.命令只支持单行(去除下面换行);
2.环境变量使用$变量名称
3. cmd命令的set变量后在单行多条命令下,要使用call 命令才可以使用变量
4.&表示无论前一条命令成功失败都会继续执行;&&表示前面执行成功再往后执行
cd C:\Devline_WF_UP && del /a /f /s /q .\OnlyEdu.Workflow.Web_BUG_$TFS_CHANGESET
&&"C:\Program Files\WinRAR\WinRAR.exe" x .\OnlyEdu.Workflow.Web_BUG_$TFS_CHANGESET.zip .\OnlyEdu.Workflow.Web_BUG_$TFS_CHANGESET\
&& echo 解压完成 && net stop iisadmin /y & net stop w3svc /y &set strbakday=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
&&call xcopy C:\Devline_WF_APP\OnlyEdu.Workflow.Web C:\Devline_WF_BAK\%strbakday: =0%\ /e /i /y /c /exclude:C:\Devline_WF_APP\OnlyEdu.Workflow.Web\uncopy.txt
&& xcopy .\OnlyEdu.Workflow.Web_BUG_$TFS_CHANGESET\*.* C:\Devline_WF_APP\OnlyEdu.Workflow.Web\ /e /i /y /c && net start iisadmin & net start w3svc &echo 服务启动完成
SSH Server Name:选个一个你在系统设置里配置的配置的名字
Transfer Set Source files:需要上传的文件(注意:相对于工作区的路径。看后面的配置可以填写多个,默认用,分隔)
Remove prefix:移除目录(只能指定Transfer Set Source files中的目录)
Remote directory:远程目录(根据你的需求填写吧,因为我这儿是测试,所以偷懒没有填写。默认会继承系统配置)
Exec command:把你要执行的命令写在里面
(新版本的要求Transfer Set Source files和Exec command都要填写,可以不了他。老版本的允许只填写一个)
高级:
Exclude files:排除的文件(在你传输目录的时候很有用,使用通配符,例如:**/*.log,**/*.tmp,.git/)
Pattern separator:分隔符(配置Transfer Set Source files的分隔符。如果你这儿更改了,上面的内容也需要更改)
No default excludes:禁止默认的排除规则(具体的自己看帮助)
Make empty dirs:此选项会更改插件的默认行为。默认行为是匹配该文件是否存在,如果存在则创建目录存放。选中此选项会直接创建一个目录存放文件,即使是空目录。(个人理解)
Flatten files:只上传文件,不创建目录(除了远程目录)
Remote directory is a date format:远程目录建立带日期的文件夹(需要在Remote directory中配置日期格式),具体格式参考下表:
| Remote directory | Directories created |
|---|---|
'qa-approved/'yyyyMMddHHmmss |
qa-approved/20101107154555 |
'builds/'yyyy/MM/dd/'build-${BUILD_NUMBER}' |
builds/2010/11/07/build-456 (if the build was number 456) |
yyyy_MM/'build'-EEE-d-HHmmss |
2010_11/build-Sun-7-154555 |
yyyy-MM-dd_HH-mm-ss |
2010-11-07_15-45-55 |
Exec timeout (ms):运行脚步的超时时间(毫秒)
Exec in pty:模拟一个终端执行脚步
Add Transfer Set:增加一个配置
XCOPY相关命令
https://www.cnblogs.com/pscc/p/10127719.html
TFS环境变量:https://github.com/jenkinsci/tfs-plugin/blob/master/README.md
TFS_WORKSPACE - 工作空间名称(TFS).
TFS_WORKFOLDER - 工作空间映射在(服务器)本地的完整路径.例如:D:\Program Files (x86)\Jenkins\workspace\WF_UI_BUG\D:/Work/WF/OnlyEdu.WF.UI-分支-Bug/
TFS_PROJECTPATH - 项目在TFS的路径.例如:$/工作流_WF/OnlyEdu.WF.UI-分支-Bug/TFS_SERVERURL - TFS服务器地址.例如:http://10.10.10.158/DefaultCollection/
TFS_USERNAME - TFS/Azure DevOps的用户名.
TFS_CHANGESET - 变更集
Windows服务
其他和Web都一样
构建:MSBuild配置
/t:Rebuild /p:Configuration=Release;ExcludeGeneratedDebugSymbol=false;ExcludeXmlAssemblyFiles=false
命令修改
chcp 936 if not exist Publish md Publish cd .\Publish xcopy D:\Work\RLS\OnlyEdu.RLS-分支-Iteration\OnlySSO.NServiceBus\OnlySSO.NServiceBus.Server\bin\Release\*.* D:\Publish\Jenkins\RLS\OnlySSO.NBus.Server\ /e /i /y /c del /a /f /s /q D:\Publish\Jenkins\RLS\OnlySSO.NBus.Server\*.config del /a /f /s /q D:\Publish\Jenkins\RLS\OnlySSO.NBus.Server\*.pdb del /a /f /s /q D:\Publish\Jenkins\RLS\OnlySSO.NBus.Server\*.xml set zipname=OnlySSO.NBus.Server_Iteration_ del %zipname%%TFS_CHANGESET%.zip "C:\Program Files\WinRAR\WinRAR.exe" a -r -ep1 "%zipname%%TFS_CHANGESET%.zip" D:\Publish\Jenkins\RLS\OnlySSO.NBus.Server\*
上传后部署命令修改
cd C:\Devline_RLS_UP &&
del /a /f /s /q .\OnlySSO.NBus.Server_Iteration_$TFS_CHANGESET &&
"C:\Program Files\WinRAR\WinRAR.exe" x .\OnlySSO.NBus.Server_Iteration_$TFS_CHANGESET.zip .\OnlySSO.NBus.Server_Iteration_$TFS_CHANGESET\
&& echo 解压完成
&& net stop DevLine.OnlyEdu.RLS.NBus.Publish /y
&set strbakday=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%
&&call xcopy C:\Devline_RLS_APP\OnlyEdu.RLS.NBus.Server C:\Devline_RLS_BAK\%strbakday: =0%\ /e /i /y /c /exclude:C:\Devline_RLS_APP\OnlyEdu.RLS.WEB\uncopy.txt
&& xcopy .\OnlySSO.NBus.Server_Iteration_$TFS_CHANGESET\*.* C:\Devline_RLS_APP\OnlyEdu.RLS.NBus.Server\ /e /i /y /c &echo 覆盖完成
资源:
https://www.zybuluo.com/hzl201/note/1473689