最近由于一个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. 时间序列分析专题——利用SPSS专家建模器进行建模

    SPSS的专家建模器可以自动识别数据,给出最适合的模型,本章通过三个例题介绍如何使用SPSS实现时间序列分析.由于本人对时间序列分析的理解尚浅,做出模型后在论文上的呈现形式需要取查阅资料,以便更好地在 ...

  2. vulhub - INFOSEC PREP: OSCP

    vulhub - INFOSEC PREP: OSCP 信息收集 nmap 192.168.157.0/24 nmap -sT --min-rate 10000 -p- 192.168.157.162 ...

  3. Vue 组件间通信有哪几种方式?

    父子通信 (1)父组件向子组件传值props <button-counter :title="send"></button-counter> Vue.com ...

  4. Java异步判断线程池所有任务是否执行完成的方法

    1.使用ExecutorService和CountDownLatch的方法示例 在Java中,当我们使用线程池(如ExecutorService)来执行异步任务时,常常需要知道所有任务是否都已经完成. ...

  5. XAMPP的mysql启动失败:Plugin ‘FEEDBACK‘ is disabled

    安装完XAMPP后启动mysql,发现启动失败也没有任何提示,通过查看mysql_error日志,描述: 2021-08-11 18:56:53 0 [Note] InnoDB: Mutexes an ...

  6. element-plus如何隐藏el-row

    在 Element Plus 中,el-row 是用于布局的组件,如果你想要隐藏 el-row,你可以使用 CSS 的 display 属性将其设置为 none.以下是一个简单的示例: <tem ...

  7. SQL连续查询问题拓展—记上海拼多多非技术岗面试真题

    真巧,昨天刚写了关于数据库连续问题的解决方案,没想到今天下午两点就有朋友在上海拼多多面试非技术岗位中就遇到了相似的问题.下面是原题: 一个最大连续支付失败的次数 有一张支付流水表pay;字段如下 id ...

  8. 【MySQL】查询是否连续5次失败

    场所房间表 场所编号和房间号联合唯一, 一对多关系 场所编号关联商家ID,一对一关系 CREATE TABLE `aisw_room` ( `ID` int(11) NOT NULL AUTO_INC ...

  9. 【WSDL】03 使用注解自定义服务信息

    对原来的自定义WebService设置注解: package cn.cloud9.jax_ws.server.intf; import javax.jws.WebMethod; import java ...

  10. 【SpringBoot】整合Swagger 接口文档

    前言 可能运用的开发模式: SSM -> SpringMVC + Spring + Mybatis SSMP -> SpringMVC + Spring + MybatisPlus SM ...