.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


目录
相关文章
|
29天前
|
运维 监控 jenkins
运维自动化实战:利用Jenkins构建高效CI/CD流程
【10月更文挑战第18天】运维自动化实战:利用Jenkins构建高效CI/CD流程
|
1月前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
96 9
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(二)
69 0
|
29天前
|
运维 监控 jenkins
运维自动化实践:利用Jenkins实现高效CI/CD流程
【10月更文挑战第18天】运维自动化实践:利用Jenkins实现高效CI/CD流程
|
1月前
|
Windows
.NET 隐藏/自定义windows系统光标
【10月更文挑战第20天】在.NET中,可以使用`Cursor`类来控制光标。要隐藏光标,可将光标设置为`Cursors.None`。此外,还可以通过从文件或资源加载自定义光标来更改光标的样式。例如,在表单加载时设置`this.Cursor = Cursors.None`隐藏光标,或使用`Cursor.FromFile`方法加载自定义光标文件,也可以将光标文件添加到项目资源中并通过资源管理器加载。这些方法适用于整个表单或特定控件。
|
1月前
|
jenkins Shell 持续交付
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
Jenkins持续集成GitLab项目 GitLab提交分支后触发Jenkis任务 持续集成 CI/CD 超级详细 超多图(一)
149 0
|
3月前
|
Java Spring 传感器
AI 浪潮席卷,Spring 框架配置文件管理与环境感知,为软件稳定护航,你还在等什么?
【8月更文挑战第31天】在软件开发中,配置文件管理至关重要。Spring框架提供强大支持,便于应对不同环境需求,如电商项目的开发、测试与生产环境。它支持多种格式的配置文件(如properties和YAML),并能根据环境加载不同配置,如数据库连接信息。通过`@Profile`注解可指定特定环境下的配置生效,同时支持通过命令行参数或环境变量覆盖配置值,确保应用稳定性和可靠性。
62 0
|
3月前
|
jenkins Shell 持续交付
自动化部署:使用Jenkins和Docker实现CI/CD
【8月更文挑战第31天】 本文旨在引导读者了解如何通过Jenkins和Docker来实现持续集成和持续部署(CI/CD),从而优化开发流程,提升工作效率。文章将详细介绍配置Jenkins服务器、创建Docker镜像以及设置自动化构建和部署的步骤。通过实际操作案例,我们将展示如何将代码变更快速部署到测试或生产环境,确保软件质量与发布速度的双重保障。
|
3月前
|
jenkins Java 测试技术
Jenkins 在持续集成/持续交付(CI/CD)管道中的应用
【8月更文第31天】 在现代软件开发过程中,持续集成(Continuous Integration, CI)和持续交付(Continuous Delivery, CD)已经成为提升开发效率和软件质量的重要实践。Jenkins 是一个广泛使用的开源工具,它能够帮助团队实现自动化构建、测试和部署,是 CI/CD 流水线的核心组件之一。本文将详细介绍 Jenkins 在 CI/CD 管道中的应用,并提供具体的代码示例。
171 0
|
3天前
|
网络安全 Windows
Windows server 2012R2系统安装远程桌面服务后无法多用户同时登录是什么原因?
【11月更文挑战第15天】本文介绍了在Windows Server 2012 R2中遇到的多用户无法同时登录远程桌面的问题及其解决方法,包括许可模式限制、组策略配置问题、远程桌面服务配置错误以及网络和防火墙问题四个方面的原因分析及对应的解决方案。
下一篇
无影云桌面