Jenkins编译.NET Core、.NET Framework项目并远程部署到IIS

目录
  • Windows
    • 安装 Git
    • WebDeploy
    • Windows 从节点
  • .NET Core
    • 处理 IIS
    • 处理项目 Jenkinsfile
  • .NET Framework
    • 安装环境
      • .NET Framework SDK
      • MSBuild
      • Nuget
    • 配置项目
  • 前后端分类方案

Windows

我们先在 Windows 上安装好相应的环境。

Jenkins 依赖于 JDK 11,请自行查找方法安装。

https://www.jenkins.io/download/ 中可以下载到 Windows Jenkins 版本的安装包,下载完毕后,直接安装即可,安装完成后会自动启动。

Jenkins 的安装目录默认为:C:\Windows\System32\config\systemprofile\AppData\Local\Jenkins.jenkins,密码/密钥一般在其目录下的 secret-file 文件。

安装 Jenkins 后,打开 8080 端口访问 Jenkins,然后根据 Linux下使用Jenkins自动化构建.NET Core应用_安装插件 一节,把插件安装好,再额外安装一个 powershell 插件。

安装 Git

接着,在 Windows 服务器中,将 Git 安装好,一般 Git 的安装目录为 C:\Program Files\Git

然后添加下面两个 Git 相关的目录到系统环境变量中。

C:\Program Files\Git\cmd
C:\Program Files\Git\usr\bin

如不配置  C:\Program Files\Git\usr\bin 到环境变量,会出现 nohup 错误,Jenkins 依赖 nohup 命令。

WebDeploy

WebDeploy 是一个 IIS 远程部署工具,通过 WebDeploy 我们可以很方便地打包应用远程部署到 IIS 中,而不需要手动重启、更替网站文件、重启程序池等。WebDeploy 下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=43717

安装完成后,其程序默认安装目录为:

C:\Program Files\IIS\Microsoft Web Deploy V3

请添加此目录到系统环境变量中。

同时,在要被远程部署的服务器中,也安装 WebDeploy。

Windows 从节点

如果你有一台 Jenkins Master 服务器,然后再添加 Windows Jenkins Node,做主从 Jenkins,那么可以按照下面的方法将 Windows 加入到 Linux 节点中。

如果你只部署 Windows ,那么 Windows 上的的 Jenkins 就是 Master,可以跳过此步。

打开 Master Jenkins 的 Web 界面,在左侧菜单导航中打开 Manage Jenkins,然后在 System Configuration 中,选择 Manage Nodes and Clouds

然后添加新的节点 “New Node”。

节点名称可随意,在接下来要求填写的 Label 中,需要填写 “windows” ,当然填写其它标识也行,但是一般 Label 用来标识系统特性的,另外也会要求填写构建目录,这是用于存放 Jenkins 工作时的文件,例如拉取代码、执行命令等,都会在这个目录下操作。

点击蓝色字体的 agent.jar,可以下载 java 包。

将 agent.jar 包放到 Jenkins 所在的 Windows 中,然后按照提示的命令,启动 agent.jar。

就是把 agent.jar 放到目录中,然后打开 powershell 或者 cmd,复制上面的 Java -jar agent.jar -jnlpUrl ..... 命令,直接执行就行。

接着,在 Jenkins 界面,可以看到另一台 Windows 从节点已经加了上去。

.NET Core

这一小节,介绍如何构建、远程部署 .NET Core 应用到 IIS 中。

对于 .NET Core 应用,其过程比较简单,只需要安装 .NET Core SDK 即可,无需再额外操作。

.NET Core 各类版本下载地址:

https://dotnet.microsoft.com/download/dotnet

.NET Core 3.1 版本下载地址:

https://download.visualstudio.microsoft.com/download/pr/56131147-65ea-47d6-a945-b0296c86e510/44b43b7cb27d55081e650b9a4188a419/dotnet-sdk-3.1.201-win-x64.exe

处理 IIS

在你要部署应用的那台 Windows 服务器 上,打开 IIS ,点击 ”应用程序池“,然后添加一个新的。

接着,添加一个网站。

然后开始添加一个新用户,点击主机名称,然后点击 “IIS 管理器用户”,然后添加一个用户。

然后为网站启用 WebDeploy 部署。

处理项目 Jenkinsfile

笔者已经上传了 Demo 项目已经 Jenkinsfile 文件,读者直接 fork 项目即可,示例项目在 coreiis 分支中。

https://github.com/whuanle/DotNetCoreJenkinsDemo/tree/coreiis

然后,下载源码,修改一下 Jenkinsfile 文件。

        // IIS 配置,远程发布的变量
        IISTMP     =   'C:/webdemo_tmp'                            // 用于打包发布的临时目录
        IISAPP     =   'jenkinsdemo.com'                           // 网站名称
        IISADDR    =   'https://192.168.0.66:8172/msdeploy.axd'    // WebDeploy 的地址
        IISUSER    =   'jenkinesdemo'                         // 用于登录到 IIS 的账号密码
        IISADMIN   =   'jenkinesdemo'

按照笔者的 demo,读者只需要修改一下 IISADDR 中的 IP 和 用户名或密码即可。

接着,使用 Jenkins ,添加流水线部署即可。这里不再赘述 Jenkins 上的新建流程,读者可以参考笔者的另一篇文章:

Linux下使用Jenkins自动化构建.NET Core应用_构建流水线

.NET Framework

为了能够编译 .NET Framework 应用,我们需要搭建起 .NET Framework 应用的编译环境,由于 .NET Framework 严重依赖 Vistual Studio,如果脱离 VS 环境,则需要安装很多环境工具,才能使用命令编译程序,比较麻烦,读者需要耐心处理。

示例项目笔者已经上传到 https://github.com/whuanle/DotNetCoreJenkinsDemo/tree/fxiis 中。

安装环境

.NET Framework SDK

.NET Framework 包提供编译、运行 .NET 程序的环境。

安装 .NET Framework 框架,其版本不定,按照要编译的项目其需要的版本为准,可安装多个版本。

例如 .NET Framework 4.6.1 和 .NET Framework 4.6.1 Developer Pack 。

下载地址:https://dotnet.microsoft.com/download/dotnet-framework

MSBuild

MSBuild 是一个 .NET 程序的编译工具,可以在脱离 VS 环境时使用。

如果要编译 .NET Framewrok 项目,例如 4.6,请使用 MSBuild 14(对应 VS 2015),一般文件名称为 BuildTools_Full_14.exe。

下载地址:

https://www.microsoft.com/en-US/download/details.aspx?id=48159

https://github.com/EWSoftware/SHFB/releases

安装 MSBuild 后其目录位置为:

C:\Program Files (x86)\MSBuild\14.0\Bin

请将其目录路径添加系统环境变量中。

Nuget

nuget 用于还原项目的依赖,对于 .NET Framework 项目,nuget 的版本不能为 5.0 以上,建议使用 4.5 版本左右,否则会有兼容问题!

安装完毕后,nuget 程序目录为:

C:\Program Files\nuget

请添加目录到系统环境变量中。

安装各种需要的工具后,环境变量一共需要添加以下项:

C:\Program Files (x86)\MSBuild\14.0\Bin
C:\Program Files\Git\cmd
C:\Program Files\nuget
C:\Program Files\Git\usr\bin
C:\Program Files\IIS\Microsoft Web Deploy V3

请仔细检查是否有遗留项。

配置项目

要脱离 VS 环境,自动化构建 .NET Framework 应用,需要处理的配置文件和环境很多,我们需要修改一下项目。在本节中,将介绍如何配置 .NET Framework 自动化流水线的构建,使用 Jenkins 配置流水线,编写 Jenkins 脚本等。

一般一个解决方案中,有一个是需要发布的主程序(主要为 Web 应用),请为需要发布的 Web 项目,添加 Nuget 引用,搜索 MSBuild.Microsoft.VisualStudio.Web.targets 包,添加引用到项目中。

因为 .NET Framework 项目需要依赖 Vistual Studio 发布,如果不使用 VS 发布,会出现很多问题,为了脱离 VS 环境,有人封装了一个完整的 targets 文件,指示 MSBuild 如何编译此此程序。

对于需要发布的 Web 项目需要定义 Web 发布属性,自动化构建中,依赖这些提前配置的属性,这些属性会生成一个 .pubxml 文件,随源代码一起上传到仓库。

然后点击发布,手动发布一次到一个目录。

保存设置后,在项目的 Properties\PublishProfiles 目录,可以找到 FolderProfile.pubxml 文件,其中有一行 PublishUrl 属性,为网站发布时的输出目录。

<PublishUrl>C:\test</PublishUrl>

此目录配置会影响到自动化构建时的输出,编译时,生成的文件会输出到这个目录中,请确保在 Windows Jenkins 中,存储此盘符!

然后直接在 Jenkins Web 上,操作即可。

前后端分类方案

当我们为 .NET Core / .NET Framework 项目创建网站完毕,此时程序跟前端是一起的,打包发布不方便。

我们可以为前端项目新建一个无用的网站。

我可以编写流水线脚本,将前端文件通过 WebDeploy 自动打包发布到此网站中。

接着,在后端网站中,添加一个虚拟目录,目录跟前端网站的目录一致。

这样,前后端都可以分开部署,而在后端网站后,可以直接读取前端文件。

到此这篇关于Jenkins编译.NET Core、.NET Framework项目并远程部署到IIS的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 关于docker启动jenkins环境的问题

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! jenkins基本工作原理 1.拉取镜像 需要从官网进入:Jenkins download and deployment 命令: docker pull jenkins/jenkins:lts 2.创建目录 由于防止jenkins中重要文件因为容器损毁或删除导致文件丢失,因此创建文件对外挂载 mkdir /data/jenkins

  • 为Jenkins添加SSH全局凭证

    目录 一.什么是凭证 1.凭据简介 2.凭据分类 3.凭据安全 二.添加凭据 1.创建的时候添加 2.在凭证里面添加 一.什么是凭证 1.凭据简介 有许多第三方网站和应用程序可以与Jenkins进行交互,例如代码仓库GitHub等. 此类应用程序的系统管理员可以在应用程序中配置凭证以专供Jenkins使用.通常通过将访问控制应用于这些凭证来完成这项工作,以“锁定Jenkins可用的应用程序功能区域”.一旦Jenkins管理员在Jenkins中添加/配置这些凭证,Jenkins项目就可以使用凭证与

  • Windows系统修改Jenkins端口号

    Jenkins默认使用的是8080端口进行访问,有时候需要根据自己的需求将默认的8080端口改掉,这篇文章将讲解如何更改Jenkins默认的8080端口. 在安装Jenkins的时候,会有一个配置Jenkins实例的界面,配置实例界面可以修改端口号,但是那里修改的端口号不起作用,需要修改配置文件里面的端口号. 一.关闭Jenkins服务 修改端口号之前要首先关掉Jenkins服务,Jenkins安装完成以后就会一直处于启动状态,除非手动将其关闭. 可以看到Jenkins是运行状态. 1.使用命令

  • 为Jenkins创建定时构建任务

    目录 一.前言 二.创建定义任务 1.新建任务 2.General 3.源码管理 4.构建触发器 5.构建环境 6.构建 7.构建后操作 三.总结 一.前言 在前面的文章中,我们添加SSH凭据,添加了凭据以后就可以利用Jenkins创建构建任务了.我们这里利用Jenkins创建一个定时构建任务. 二.创建定义任务 1.新建任务 在Jenkins首页选择新建item或者点击创建一个新任务: 输入任务名称,选择自由风格的任务(Freestyle project): 2.General 在Genera

  • 在Windows平台安装Jenkins的方法介绍

    一.什么是Jenkins Jenkins是一个开源软件项目,是基于Java开发的.我们可以利用Jenkins来实现持续集成的功能. 因为Jenkins是基于Java开发的,所以在安装Jenkins之前首先需要安装Java的JDK. 二.安装Jenkins 在Windows平台上面安装Jenkins共有两种方式,下面分别介绍这两种方式. 1.使用msi安装Jenkins 安装Jenkins之前首先去Jenkins官网下载安装文件,Jenkins官网:https://jenkins.io/zh/ 如

  • Linux下使用Jenkins自动化构建.NET Core应用

    目录 部署 Jenkins 安装插件 拉取镜像 制作 Jenkinsfile 脚本 构建流水线 观察 部署 Jenkins 请提前在 Linux 上安装 Docker,在 Linux 中,我们使用 Docker 启动 Jenkins,这样可以避免手动安装大量依赖以及污染本地环境,也便于快速启动和故障恢复. 安装 Docker 完毕后,使用 docker version 检查 Docker 版本,Docker 版本不能为 1.x.3.x 这种版本,请升级到 18.x 以上版本.一般在 Ubuntu

  • .NET微服务架构CI/CD自动构建Jenkins+Gitee

    目录 CI/CD 准备工作 安装Jenkins 添加并配置Gitee 新建工作流 CI/CD 它的意思是 持续集成/持续部署,这也不是新概念.那些八股文就不写了,说话的方式简单点:如果成功搭建CI/CD环境,当你需要迭代线上程序时,只需通过git提交代码就可以,其他什么都不用做.是不是很爽?这样你就拥有了快速迭代的能力,微服务大环境下,这也是必要的. 准备工作 1.准备一个.NET6项目: 2.准备一个gitee仓库 3.准备一台服务器(非必要) 安装Jenkins 首先在docker中运行这段

  • Jenkins编译.NET Core、.NET Framework项目并远程部署到IIS

    目录 Windows 安装 Git WebDeploy Windows 从节点 .NET Core 处理 IIS 处理项目 Jenkinsfile .NET Framework 安装环境 .NET Framework SDK MSBuild Nuget 配置项目 前后端分类方案 Windows 我们先在 Windows 上安装好相应的环境. Jenkins 依赖于 JDK 11,请自行查找方法安装. 在 https://www.jenkins.io/download/ 中可以下载到 Window

  • 如何在ASP.NET Core应用程序运行Vue并且部署在IIS上详解

    前言 从.NET Core 1.0开始我们就将其应用到项目中,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用ASP.NET Core结合Vue在IIS上运行. ASP.NET Core结合Vue部署于IIS 关于安装Vue和Webpack则不再叙述,我们直接来创建ASP.NET Core应用程序或者通过dotnet new mvc创建ASP.NET Core应用程序 接下来在上述应用程序下通过如下命令创建Vu

  • Centos7+Docker+Jenkins+ASP.NET Core 2.0自动化发布与部署的实现

    前言 Docker一直很火热,一直想把原本的Jenkins自动部署工具搬到Docker上面,无奈今年一直忙于各种事情,迟迟未实施这个事情,正好迎来了dotnet core 2.0 的正式发布,升级项目的同时,顺便直接将Jenkins搬到Docker上.为什么要写这篇文章呢?因为找过相关的资料,大多数文章都是基于Ubuntu 安装.net core 又或者 GitLab 进行持续集成 自动部署等等等,并未有人尝试过Centos7.3 上部署 Jenkins 并且 构建 ASP.NET CORE 2

  • Vue项目webpack打包部署到Tomcat刷新报404错误问题的解决方案

    遇到的问题 使用webpack打包vue后,将打包好的文件,发布到Tomcat上,访问成功,但是刷新后页面报404错. 在网上查找了一下,原来是HTML5 History 模式引发的问题,具体为什么,vue官方已经给出了解释,你可以看https://router.vuejs.org/zh-cn/essentials/history-mode.html 但是看完问题又来了,官方给出的解决方案中没有说tomcat下,怎么决解. 解决方案 根据官方给出的解决方案原理 你要在服务端增加一个覆盖所有情况的

  • ASP.NET Core在WebApi项目中使用MiniProfiler分析Entity Framework Core

    安装配置MiniProfiler 在现有的ASP.NET Core MVC WebApi 项目里,通过Nuget安装MiniProfiler: Install-Package MiniProfiler.AspNetCore.Mvc MiniProfiler.EntityFrameworkCore 当然也可以通过Nuget Package Manager可视化工具安装 接下来就是如何配置和使用 MiniProfiler 了,总共分三步: 第一步,来到Startup.cs的ConfigureServ

  • Entity Framework Core对Web项目生成数据库表

    一.引言 这篇文章中我们讲解如何在Web项目中使用EntityFrameworkCore,并生成数据库表,这里以ASP.NET Core WebApi为例讲解.还是采用分层的结构.创建后的项目整体结构如下图所示: 项目结构: EFCoreWeb.API:ASP.NET Core WebApi项目,用来提供Web功能,在项目中会引用EFCoreWeb.Data. EFCoreWeb.Data:类库项目,基于.NET Core的类库.存放的是与EFCore相关的操作. EFCoreWeb.Model

  • Java利用jenkins做项目的自动化部署

    最近领导要求上海本地的项目需要使用进jenkins实现自动化部署,以便可以直接将项目移交给运维的同学,减轻开发的工作量.记录下这次爬坑的过程. 一.前言 Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括: 1.持续的软件版本发布/测试项目. 2.监控外部调用执行的工作. 上面是我从百科上down下来的,老实说没看懂,这是个什么玩意啊?其实以我现在的理解和应用,最多的便是部署了,其他功能待研究╮(╯_╰)╭撸主目前在上海一个不知名国企打工,我们现在项目的发布流程

  • ASP.NET Core在WebApi项目中使用Cookie

    目录 一.Cookie的作用 二.在ASP.NET Core中使用Cookie 1.在控制器中直接使用Cookie 1.1.设置Cookie 1.2.获取Cookie 1.3.删除Cookie信息 2.封装Cookie 一.Cookie的作用 Cookie通常用来存储有关用户信息的一条数据,可以用来标识登录用户,Cookie存储在客户端的浏览器上.在大多数浏览器中,每个Cookie都存储为一个小文件.Cookie表示为键/值对的形式,可以利用键来读取.写入或删除Cookie. 在ASP.NET

  • 使用.NET升级助手将.NET Framework项目升级为.NET 6

    概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NETFramework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual Studio 2022 17.0 或更高版本 环境准备 ①首先是VS2022下载,直接上微软官方网站,下载地址: https://visualstudio.microsoft.com/zh-hans/downloads/ 下载后,在线安装就行,如果之前有vs的其它版本也不用卸载,VS可以多个版本共存,安

  • 使用.NET升级助手将.NET Framework项目升级为.NET 6

    目录 概述 环境准备 .NET Portability Analyzer安装和使用 升级助手介绍和安装 项目升级 打开项目 概述 .NET6 正式版本已经发布有一阵子了,今天我就体验一下如何将.NETFramework的项目升级为.NET 6. 升级条件: Windows 操作系统 .NET 6 SDK Visual Studio 2022 17.0 或更高版本 环境准备 ①首先是VS2022下载,直接上微软官方网站,下载地址: https://visualstudio.microsoft.co

随机推荐