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\

保存

Jenkins:.NET Framework+Windows+SSH的持续集成(3)

 

二、项目

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}

 

Jenkins:.NET Framework+Windows+SSH的持续集成(3)

 

 

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

Jenkins:.NET Framework+Windows+SSH的持续集成(3)

注意:

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

相关文章:

  • 2022-12-23
  • 2021-12-03
  • 2021-07-17
  • 2021-06-01
  • 2021-12-29
  • 2021-04-27
  • 2021-11-11
猜你喜欢
  • 2022-12-23
  • 2021-07-09
  • 2022-12-23
  • 2021-10-01
  • 2022-01-31
  • 2022-12-23
相关资源
相似解决方案