添加NuGet还原源配置项
在部署Jenkins服务器47.115.111.58,打开
C:\Windows\system32\config\systemprofile\AppData\Roaming\NuGet\NuGet.Config,
没有的化可以自己建一个,输入以下脚本。
如果没有配置好,接下来的应用项目可能会编译时还原包失败导致无法编译通过。
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" /> <add key="私有NuGet服务" value="http://47.115.11.58:8008/nuget" /> <add key="Microsoft Visual Studio Offline Packages" value="C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\" /> </packageSources> </configuration>
安装OpenSSH服务端
根据上面表格的地址下载解压后,在服务器47.115.151.108以管理员启动CMD
cd C:\tools\OpenSSH-Win64 #安装服务端 powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1 #启动服务 net start ssh-agent sc config ssh-agent start= auto net start sshd sc config sshd start= auto #防火墙打开22端口 #大于等于 Windows Server 2012 New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 #小于 Windows Server 2012 netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22 这样就可以通过administrator账号或者管理员账号在客户端用ssh登录了。 以上是各个服务器基本依赖安装。
安装Jenkins
在服务器47.115.111.58,先把jdk与git安装好后,点开Jenkins安装,选择默认路径下一步,遇到设置服务登录账户的时候,必须选择以administrator安装,不然后续会有很多执行的权限问题。
如果点击Test Credentials无法通过,可以在运行输入mmc打开策略编辑器,并在计算机配置-[windows设置]-[安全设置]-[本地策略]-[用户权限分配]-[作为服务登录],填写administrator或者您的管理员账号。
接着点击下一步等待完成后,会弹出一个localhost:8080的页面,根据他的指示初始化界面就可以了。输入完管理员账号后这个时候可以去修改workspace的地址,当时我没有修改地址的时候,因为路径有特殊字符导致无论如何都无法用msbuild编译通过。
打开
C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins.jenkins\config.xml,修改workspaceDir属性的值为C:/jenkins_workspace/${ITEM_FULL_NAME},尽可能给一个简单纯英文的路径。
配置Jenkins
在主界面点击【Manage Jenkins】-【Configure System】界面,定位到Shell,输入您刚安装的git路径的sh.exe,C:\Program Files\Git\bin\sh.exe
在主界面点击【Manage Jenkins】-【Global Tool Configuration】界面,定位到Git,输入您刚安装的git路径的git.exe,C:\Program Files\Git\bin\git.exe
到这里Jenkins的配置基本上完成了。
自动发布组件包到NuGet
新建Freestyle project,并在【源码管理】、【构建】填入您的构建信息,构建脚本我是保存在服务器上,因为保存在服务器上更加可靠。
构建脚本shell示例
#!/bin/bash #脚本开始执行 echo '脚本开始执行' base_path=C:/jenkins_workspace/Librariy nuget_url=http://47.115.111.58:8008/nuget nuget_api_key=B82D6DDB-C6F958E8C945 nuget restore $base_path for project_name in $base_path/* do project_path=$project_name package_path=$project_path/packages rm -rf $package_path nuget pack $project_path -Build -IncludeReferencedProjects -Properties Configuration=Release -OutputDirectory $package_path && nuget push -ApiKey $nuget_api_key -Source $nuget_url $package_path/*.nupkg if [ $? -eq 0 ]; then echo '发布成功:'$project_name'' else echo '发布失败:'$project_name'' fi done echo '脚本执行结束' 以上发布组件包到私有NuGet的步骤就实施完毕了。
自动发布Web应用到IIS
新建Freestyle project,并在【源码管理】、【构建】填入您的构建信息。[Publish Over SSH]插件跟OpenSSL能把编译好的文件发送到相应的服务器,并执行对应的集群分发脚本。
示例构建shell脚本
#!/bin/bash echo '脚本开始执行' base_path=C:/jenkins_workspace/API project_path=$base_path/API.csproj publish_path=$base_path/publish rm -rf $publish_path nuget restore $base_path && MSBuild.exe $project_path -t:"rebuild;publish;ResolveReferences;_CopyWebApplication" -p:"Configuration=Release;OutputPath=$publish_path" if [ $? -eq 0 ]; then echo '发布成功:'$project_name'' else echo '发布失败:'$project_name'' fi echo '脚本执行结束'
示例分发bat脚本
记得在局域网把相应服务器的共享文件夹启动
net use \\192.168.1.2\app "password" /user:"administrator" xcopy/a/s/h/y C:\app\ftp\SFNovelAPI \\192.168.1.2\app\API net use \\192.168.1.3\app "password" /user:"administrator" xcopy/a/s/h/y C:\app\ftp\SFNovelAPI \\192.168.1.3\app\API xcopy/a/s/h/y C:\app\ftp\SFNovelAPI C:\app\SFNovelAPI