.Net在Windows上使用Jenkins做CI/CD的那些事(二)

简介: .Net在Windows上使用Jenkins做CI/CD的那些事(二)

添加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安装,不然后续会有很多执行的权限问题。


image.png


如果点击Test Credentials无法通过,可以在运行输入mmc打开策略编辑器,并在计算机配置-[windows设置]-[安全设置]-[本地策略]-[用户权限分配]-[作为服务登录],填写administrator或者您的管理员账号。


image.png


接着点击下一步等待完成后,会弹出一个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


image.png

  

在主界面点击【Manage Jenkins】-【Global Tool Configuration】界面,定位到Git,输入您刚安装的git路径的git.exe,C:\Program Files\Git\bin\git.exe


image.png

  


到这里Jenkins的配置基本上完成了。


自动发布组件包到NuGet

  

新建Freestyle project,并在【源码管理】、【构建】填入您的构建信息,构建脚本我是保存在服务器上,因为保存在服务器上更加可靠

 

 

image.png

image.png

构建脚本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能把编译好的文件发送到相应的服务器,并执行对应的集群分发脚本。


image.png


image.png

示例构建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


目录
相关文章
|
3月前
|
存储 文字识别 C#
.NET开源免费、功能强大的 Windows 截图录屏神器
今天大姚给大家分享一款.NET开源免费(基于GPL3.0开源协议)、功能强大、简洁灵活的 Windows 截图、录屏、Gif动图制作神器:ShareX。
|
3月前
|
C# Windows
.NET开源免费的Windows快速文件搜索和应用程序启动器
今天大姚给大家分享一款.NET开源(MIT License)、免费、功能强大的Windows快速文件搜索和应用程序启动器:Flow Launcher。
|
1月前
|
C# 开发者 Windows
4款.NET开源、功能强大的Windows桌面工具箱
4款.NET开源、功能强大的Windows桌面工具箱
|
1月前
|
C# 开发者 Windows
WPF在.NET9中的重大更新:Windows 11 主题
这也是一个很好的学习WPF的项目,可以通过看源代码提升自己的WPF水平。 WPF Gallery演示如何在标记中指定 XAML 控件,因为每个控件页都显示用于创建每个示例的标记。它还将显示您的应用程序的所有可能的布局选项。 WPF Gallery应用还包含有关使用颜色、排版和图标开发特殊应用程序的设计指南。它还包括一个示例页,用于演示如何使用不同的控件在 WPF 应用程序中创建用户界面。 WPF在.NET 9中可以使用Win11主题的控件了,有助于WPF开发者们开发出更符合现在设计风格、更美观的界面。 希望WPF越来越好。
35 0
|
1月前
|
Java jenkins 持续交付
Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试
【7月更文挑战第1天】Jenkins是开源CI/CD工具,用于自动化Java项目构建、测试和部署。通过配置源码管理、构建触发器、执行Maven目标,实现代码提交即触发构建和测试。成功后,Jenkins执行部署任务,发布到服务器或云环境。使用Jenkins能提升效率,保证软件质量,加速上线,并需维护其稳定运行。
83 0
|
2月前
|
Kubernetes Cloud Native jenkins
云原生时代:从Jenkins到Argo Workflows,构建高效CI Pipeline
基于Argo Workflows可以构建大规模、高效率、低成本的CI流水线
|
3月前
|
开发框架 .NET API
在Windows Server 2008 R2上运行.Net 8应用
在Windows Server 2008 R2上成功运行.Net 8程序,需安装三个补丁:Windows Server 2008 R2 SP1 (KB976932)是基础更新;VC_redist.x64提供MSVC库支持;KB3063858解决.NET运行时加载`kernel.dll`的路径问题。KB3063858可能需要KB2533623。详细信息和下载链接在文中给出。
232 4
|
3月前
|
C# Windows
一款.NET开源、简洁易用的Windows桌面小说阅读应用
一款.NET开源、简洁易用的Windows桌面小说阅读应用
|
3月前
|
jenkins Java 持续交付
Jenkins与Docker的自动化CI/CD实战
Jenkins与Docker的自动化CI/CD实战
|
3月前
|
SQL Windows
保姆级:Windows Server 2012上安装.NET Framework 3.5
保姆级:Windows Server 2012上安装.NET Framework 3.5
476 0