windows服务器使用 azure devops 批量自动发布网站到IIS
最近由于一个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的更多相关文章
- 利用 Azure Devops 创建和发布 Nuget 包
利用 Azure Devops 创建和发布 Nuget 包 原 Visual Studio Team Service ,简称 VSTS,能够创建 pipelines 管道以构建应用程序,并将其部署到任 ...
- VS2013使用WebDeploy发布网站到IIS服务器
VS2013用Web Deploy方式发布网站到IIS服务器发布文档 VS版本:VS2013 服务器版本:Windows Server 2012 R2 IIS版本:IIS8.0 Web Deploy版 ...
- 【Azure DevOps系列】Azure DevOps构建并发布Nuget程序包
在Azure DevOps中,管道可以用来构建解决方案,O(∩_∩)O哈哈~快万能了,本章主要介绍如何创建Nuget包并且将其发布到Nuget服务器的过程. 前面我创建了一个非常简单的类库,这边我不做 ...
- SVN利用Hooks自动发布网站
出于管理需要,也需要在公司内部实现自动发布流程.当开发机提交SVN代码之后,自动同步到测试服务器进行测试. 网络的拓扑简化为: 1台核心SVN服务器,使用的svn管理软件为Subversion Edg ...
- Windows Server 2012 RS 配置IIS8.0+发布网站
一.配置iis 8.0 IIS 8.0 是 windows server 2012 自带的服务器管理系统.相比之前版本,IIS 8.0 安装和操作都更加简单,界面也很简洁,安装也很迅速. 1. 进入w ...
- 搭建了一个Apache+Php+MySQL的服务器。要如何通过Apache发布网站使得其他的电脑可以通过局域网访问?
源址: 1.网站的代码放在文件夹“www”下: 2.配置apache允许他人访问网站:在wamp/apache/apache版本/conf的httpd.conf文件修改代码如下: Optio ...
- 发布网站配置IIS(把网上找到的解决方法综合了一下)
1.由于权限不足而无法读取配置文件,无法访问请求的页面(参考网址:http://blog.csdn.net/yinjingjing198808/article/details/7185453) 2.处 ...
- 在macOS苹果电脑上安装Azure DevOps Server(TFS)代理
1. 概述 MacOS是一套运行于苹果Macintosh系列电脑上的操作系统,是首个在商用领域成功的图形用户界面操作系统.Iphone应用软件的开发人员,都使用运行macOS的电脑或mini盒子进行软 ...
- [Azure DevOps] 如何安装并配置 Build Agent
1. 编译服务器 在 Azure Pipelines 中至少需要一个编译服务器的 Agent 才能编译代码或发布软件.Azure DevOps 本身已经提供了一个 Agent,但出于各种理由(需要特殊 ...
- Azure DevOps Server 2019 第一个补丁包(2019.0.1 RTW)
在Azure DevOps Server 2019正式发布后的2周左右时间,微软快速发布了第一个补丁包Azure DevOps Server 2019.0.1 RTW.Azure DevOps Ser ...
随机推荐
- vulnhub - LAMPSECURITY: CTF5
vulnhub - LAMPSECURITY: CTF5 信息收集 端口扫描 nmap -sT --min-rate 10000 -p- 192.168.157.164 详细扫描 sudo nmap ...
- Solo开发者社区-H5-Dooring, 开箱即用的零代码搭建平台
Dooring-Saas 是一款功能强大,高可扩展的零代码解决方案,致力于提供一套简单方便.专业可靠.无限可能的页面可视化搭建最佳实践.(Solo社区 投稿) 功能特点 可扩展, Dooring 实现 ...
- 一天快速入门Django:从0到1创建属于自己的Web应用
DjangoWeb开发 Day1 1. Django的安装 pip install django 2. 创建项目 2.1 终端创建 "python环境路径\scripts\django-ad ...
- 第二部分:关键技术领域的开源实践【Linux服务器自动化运维】
Linux运维可能会遇到多种问题,这些问题可能源于技术挑战.资源配置.安全性.管理复杂性等多个方面.以下是一些常见的Linux运维问题: 技能要求: Linux系统通常需要较高的技术水平和经验来进行有 ...
- 解决方案 | 1分钟快速解决 win10 任务管理器性能不显示GPU?
1 问题 环境:win10 22h2 2 解决方法 win+r输入dxdiag回车,查看下面信息: (1)确认你的Windows10版本号大于1909,如果确认,在任务管理器进程页右键名称一栏,将GP ...
- 解决方案 | Claunch 如何更新配置文件
1.问题 比如我的电脑上有Claunch 3.26版本(绿色版本),但是更新的时候如何保证我的新版本的图标.链接也更新是个问题. 官网说得比较模糊: 2.解决方法 打开复制data数据覆盖到新版本同样 ...
- B+树要点梳理
B+树重要操作 中间节点 中间节点的key,与其对应的指针的原则是,小于key的元素在其指针指向的节点中 中间节点的key可以看成是右斜着排放的,即小于等于key的节点由key对应的指针指定,最有一个 ...
- CF1956B Nene and the Card Game 题解
Nene and the Card Game 题意 有 \(2n\) 张牌,\(1,2,3,\dots,n\) 皆有两张. 有两个人在玩游戏,每个人有 \(n\) 张卡片,当一人出了一张编号为 \(k ...
- 关于Pure中使用RnadomInteger问题的BUG
每一次连线都会造成返回值不一样相当于重新调用了一次,所以返回值需要新建变量存储来使用而不是直接用它拉两次线 下面是错误写法: 正确写法:
- nodejs的服务器,用ffmpeg推流
http://m.zhizuobiao.com/node/node-19061200018/ ffmpeg -list_devices true -f dshow -i dummyffmpeg -f ...