最近由于一个API项目,需要利用负载均衡来做支撑,因此需要将同一份代码分发到多个服务器,之前一直手工干这个活,感觉太累了,去开发交流群,还有搜索了一下资料,发现很多人推荐我用ftp、还有磁盘共享等这种偏门的方案,每个人都振振有词的说有多好多简单,其实仔细想想一堆的问题,比如说复制到一半断网怎么办?比如说版本回退怎么办?网站IIS是不是得一个个自己去新建站点进行配置了?所以我坚信专业的事要交给专业的工具去干。

所以一通搜索资料后,发现devops工具可以用,然后博问里面有人推荐我用azure devops。然后花了两三天时间去研究这个azure devops,终于跑通了所有流程,为了防止自己后面忘记如何配置,也方便大家参考,所以写了这篇博文来记录过程。

关于什么是devops,自行百度,我写这篇文章主要是记录一下我是如何利用这个微软的 azure devops 来帮我实现开头说的“将同一份代码,自动编译后自动部署到N台服务器上

正常来说,我们写完了代码后,比如vs2019,写完了代码后,我们会点击发布按钮,然后输出到本地文件夹,压缩后,上传到服务器,对服务器IIS上的站点的路径进行暂停IIS站点后,覆盖,然后启动IIS站点。

但是,如果说,同一份代码要部署到N台服务器,我们就需要重复以上这个步骤N次,工作量大不说,出错的概率也大。

因此,我们需要一个工具,它能自动把我们编译后的代码,进行自动传输到N台服务器(下面我们称这些服务器为“目标服务器”),并且按我们的要求配置好IIS站点信息(比如端口号、域名等)

因此我们需要类似 devops 这种工具。

简单来说azure devops 帮我们做了如下工作:(理解了它帮我们做了哪些工作有助于我们使用这个工具)

1、将代码进行编译。(传统编译,我们是用IDE的编译,比如VS2019的发布功能,将编译后的文件发布到本地文件系统,再手动上传到目标服务器)

(写给小白:vs2019的发布,其实也就是几个命令,我们习惯了vs图形化操作后,不知道这个命令而已,其实就是类似 dotnet restore 、 dotnet build 、 dotnet publish 执行这种命令而已,也就是说,只要有一台服务器,它上面安装了相关的.net sdk,能执行这些命令,即使没有vs,它也是能进行编译和发布的 )

2、将编译后的代码,发布到目标服务器,并设置IIS web站点信息(也可能是其他系统,其他web服务器,比如linux的apache,因为我的负载后面的机器是windows的,所以用windows+IIS来写了这篇文章)。

对于第1步,azure devops会用他们编译服务器帮我们进行编译,也就是说,azure准备了一堆服务器,让我们用于编译工作,但是由于某些不法分子恶意利用,比如用微软的服务器进行挖矿,所以微软对于新账号,可能会限制你使用他们的服务器进行编译(下文有解决办法,我们可以自己搭建编译服务器),所以,你在执行编译的时候,可能会提示你不能进行并行任务。

理解了以上这个的内容后,接下来进入到 azure devops 的实际操作。

总结起来我们在azure devops 中要做的工作有:

1、配置一个Pipeline,让它能顺利对你存储在云端的代码(比如svn、github)上的代码进行拉取,编译。

2、配置一个Release,让你的Pipeline的代码编译成功后,能自动发布到目标服务器。

如果英语可以的小伙伴,可以自己上手去尝试添加,不用看下面的文章,如果你一通捣鼓下来失败了,再继续看我下面这个文章。

首先,进入到 azure ,注册账号,创建组织和项目,没什么好说的,跟着网页输入框去做就是了。地址如下:https://dev.azure.com/

以上是创建好组织和项目的截图。

点击项目后,进入项目后,有一个菜单,我们重点关注菜单:Pipelines ,点击它,如图:(你们没有创建pipeline之前是没有那个绿色✓ 的那一行的)

说真的,我也不知道该如何翻译这个“Pipelines” ,按道理可能应该叫做“管道”,我们只要能理解,所有编译工作,都是通过这个管道提交给编译服务器的就可以了,通过配置它,可以定义你的代码位置(比如代码放在github、svn等),

然后,我们先创建一个pipeline ,点击界面右上角的那个“New pipeline” ,选择你代码所在位置(所以,这就要求你的代码不能单纯存放在你本地,应该要把代码上传到类似 github、svn这种云端),我的代码是放到svn服务器上的,因此我选了 Subversion ,然后添加svn链接以及账号信息即可,然后点击 “continue” ,然后根据你要编译的项目类型选一个,因为我的是 .net core 项目,我选择了 ASP.NET Core 这个(如果你的代码还没存储到云端,只是想创建项目测试,可以用微软的示例代码库的代码,它存在github上,你可以先转存到你的github账号,然后授权azure去读取你的github项目代码,就可以有一份代码用来测试了)。当我选择了 ASP.NET Core 后,配置界面是这样子的,

其中:

Pipeline 标签下,主要看那个 Agent Pool ,如果你选择微软的 Azure Pipeline 编译失败,提示你不可以运行并行任务的话,我们就需要搭建自己的编译代理服务器,关于如何搭建代理服务器,看这篇文章:微软azure devops 如何搭建代理池服务器 - LoveCoder - 博客园 (cnblogs.com)

可能是因为我按之前报错的提示,填写表单,申请了使用微软他们的服务器进行编译,申请完了以后可能过了2天不到吧,现在已经可以用他们服务器进行编译了,我配置好如下图:

我那个apigateway/taobaoapigateway/*.csproj ,代表的是我只想编译我拉取到的代码的根目录下的这个目录的项目(因为我这个svn是一整个解决方案,里面有N个项目,比如作业线程、类库文件,而我真正需要他编译并发布的,只有这个 taobaoapigateway 这个文件夹下的项目)

那个Get souces 是配置从哪里获取你的代码的,一开始我们创建这个pipeline的时候就指定了,现在也能修改。

下面那个 Agent job ,不需要配置什么,把必填的大概填写一下就好了

配置完了以后可以点击 Save & Queue ,它就会执行了。

如果成功执行,会如下图:

只要看到上面这个图,代表编译这块,已经是利用服务器来编译了,接下来就是部署了。下一篇写关于部署的。

利用微软azure devops自己的编译服务器,有一点好像不太好,每次编译都要去全量拉取代码(因为它每次都要删除我们的代码?还是每次分配到的机器都不一样?还是说能配置不要每次都全量拉?知道的大神说一下),我用我自己架设的编译代理服务器,因为代码一直在服务器上,每次都是增量拉取一下就编译,很快。

windows服务器使用 azure devops 批量自动发布网站到IIS的更多相关文章

  1. 利用 Azure Devops 创建和发布 Nuget 包

    利用 Azure Devops 创建和发布 Nuget 包 原 Visual Studio Team Service ,简称 VSTS,能够创建 pipelines 管道以构建应用程序,并将其部署到任 ...

  2. VS2013使用WebDeploy发布网站到IIS服务器

    VS2013用Web Deploy方式发布网站到IIS服务器发布文档 VS版本:VS2013 服务器版本:Windows Server 2012 R2 IIS版本:IIS8.0 Web Deploy版 ...

  3. 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包

    在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...

  4. SVN利用Hooks自动发布网站

    出于管理需要,也需要在公司内部实现自动发布流程.当开发机提交SVN代码之后,自动同步到测试服务器进行测试. 网络的拓扑简化为: 1台核心SVN服务器,使用的svn管理软件为Subversion Edg ...

  5. Windows Server 2012 RS 配置IIS8.0+发布网站

    一.配置iis 8.0 IIS 8.0 是 windows server 2012 自带的服务器管理系统.相比之前版本,IIS 8.0 安装和操作都更加简单,界面也很简洁,安装也很迅速. 1. 进入w ...

  6. 搭建了一个Apache+Php+MySQL的服务器。要如何通过Apache发布网站使得其他的电脑可以通过局域网访问?

         源址: 1.网站的代码放在文件夹“www”下: 2.配置apache允许他人访问网站:在wamp/apache/apache版本/conf的httpd.conf文件修改代码如下: Optio ...

  7. 发布网站配置IIS(把网上找到的解决方法综合了一下)

    1.由于权限不足而无法读取配置文件,无法访问请求的页面(参考网址:http://blog.csdn.net/yinjingjing198808/article/details/7185453) 2.处 ...

  8. 在macOS苹果电脑上安装Azure DevOps Server(TFS)代理

    1. 概述 MacOS是一套运行于苹果Macintosh系列电脑上的操作系统,是首个在商用领域成功的图形用户界面操作系统.Iphone应用软件的开发人员,都使用运行macOS的电脑或mini盒子进行软 ...

  9. [Azure DevOps] 如何安装并配置 Build Agent

    1. 编译服务器 在 Azure Pipelines 中至少需要一个编译服务器的 Agent 才能编译代码或发布软件.Azure DevOps 本身已经提供了一个 Agent,但出于各种理由(需要特殊 ...

  10. Azure DevOps Server 2019 第一个补丁包(2019.0.1 RTW)

    在Azure DevOps Server 2019正式发布后的2周左右时间,微软快速发布了第一个补丁包Azure DevOps Server 2019.0.1 RTW.Azure DevOps Ser ...

随机推荐

  1. uBrand | 更适合个人创业者,小公司的AI品牌创建平台

    在跟一些辞职创业的朋友聊品牌,这个问题大家不约而同地都会提到:"我不会设计也没有资金请专业的设计师,有没有低成本打造品牌的方法呢?" 正好这段时间赶上AI的风潮,从众多AI工具中刚 ...

  2. 数学工具 | 如何将图片公式快速输入到Word中?

    背景: 在日常科研.学习与工作中,我们可能需要使用到某些书籍.期刊或者规范上的公式,但是如果自己纯手打则会相当麻烦(数学系LaTeX高手请忽略),因此如果有工具能够解决这个问题,那真的是解决了一大痛点 ...

  3. 网易传媒基于 Arctic 的低成本准实时计算实践

    网易传媒大数据实际业务中,存在着大量的准实时计算需求场景,业务方对于数据的实效性要求一般是分钟级:这种场景下,用传统的离线数仓方案不能满足用户在实效性方面的要求,而使用全链路的实时计算方案又会带来较高 ...

  4. oeasy教您玩转vim - 90 - # 语法定义syntax

    ​ 内容查找 grep 回忆 我们这次研究了一下配色方案 murphy虽然配色好看 但是对于java的支持并不好 我们对于murphy进行了修改 增加了String.StorageClass颜色的定义 ...

  5. oeasy教您玩转vim - 81 - # 宏macro的进阶

    ​ 宏的进阶 macro 回忆 关于宏,上次有4个要点 qa 开始录制宏 q 结束录制宏 @a 应用宏 qA 追加录制宏 甚至可以编辑宏 "ap 把宏作为文本粘贴出来 编辑之后 " ...

  6. 学习 React 需要具备的 JavaScript 知识

    学习 React 需要具备的 JavaScript 知识 为什么要学习 React? React 可以与任何其他库或框架无缝集成,因为 React 是一个仅视图库(它是 Model View C on ...

  7. [UE源码] 关于使用UE待改进的一些尝试

    UE从自己做了一款游戏后,发现了蓝图以及UE引擎本身的一些优缺点: 1.蓝图在一些简单的逻辑上书写方便,直观,而且编译速度快,但是也有一些其他问题: 结构体赋值后,无法二次修改 只有3种容器Array ...

  8. java面试一日一题:java内存模型

    问题:请讲下java内存模型? 分析:该问题比较容易和jvm内存区域(java内存结构)这样的问题混淆,其实他们是两个概念,jvm内存区域指的是运行时的几块数据区域,包括堆.方法区.虚拟机栈.本地方法 ...

  9. hbuilderx打正式包所需的私钥证书的创建方法

    现在使用uniapp作为底层框架来开发app应用已经成为了很多公司的事实标准,而uniapp的开发工具hbuilderx云打包的时候,需要私钥证书和证书profile文件. 而且还需要将打包好的ipa ...

  10. Jmeter函数助手5-RandomFromMultipleVars

    RandomFromMultipleVars函数用于获取指定变量的随机变量值. Source Variable(s) (use | as separator):传入指定的变量名称,这里的变量可以是单值 ...