前言

本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).

打算用三个篇幅来记录完整的全过程

觉得有帮助的朋友~可以左上角点个关注,右下角点个推荐

CI/CD简介

首先,我们先来简单的介绍一下什么是CI/CD

CI全拼Continuous Integration 持续集成
我们的开发每天基本都会提交多次代码到主干上,这个时候如果需要编译或者打包,就会做一些重复性的动作,就可以用持续集成环境来操作。
有集成了,就肯定少不了它的好基友,没错就是CD。
CD全拼是Continuous Deployment,是持续部署。
CD还有个小号,交持续交付,英文全称是Continuous delivery,缩写也是CD。

CI/CD优点是,重复的工作用自动化来代替、减少时间成本、减少版本发布时间。

Azure DevOps简介

作为.NET的开发者,微软一直都是比较有爱的..从免费强大的IDE到人工智能ML.NET 基本上都提供了免费的入门版本,今天主要介绍的就是Azure DevOps.

Azure DevOps的前身其实大家都熟悉就是TFS,Azure DevOps是由TFS转为线上Online的产品.

它基本上提供了CI/CD所需要的全部功能。唯一的问题是在国内没有服务器,最近的服务器在香港。

Azure DevOps提供无限免费的私有仓库,以及最多5个contributor(贡献者)账号和无限的stakeholder(参与者)账号,注册即可使用.

本文的CI/CD概念图

 这里的代理服务池和各类服务器 都是采用阿里云的CentOS7.0+系统.

正文

1.提交代码到Azure DevOps Repos

首先我们创建一个项目(选择使用GIT作为版本控制工具),进入项目中我们可以看到Repos菜单下如图:

其实就是提供了一个GIT的仓库地址,提交代码即可.

2.创建代理服务器池

其实这里就直接可以用官方提供的代理服务器来进行CI和CD了,但是会有诸多不便,也不方便自己管理.

点击菜单最下面的Project Settings,如图:

找到Agent pools

创建一个新的自托管的代理服务器池

3.创建代理服务器

点进去上一步创建的代理服务器池,找到agent

创建一个自己的代理服务器

可以看到微软给我们提供了多种平台版本的代理服务器客户端 这里我们选择linux然后下载复制tar包地址:

回到我们自己阿里云服务器.

(1)安装打包编译需要的支持环境Docker

CentOS安装Docker我就不详细描述了,百度一大把资料.

(2)安装代码拉取的工具GIT

需要注意的是CentOS自带的GIT只有1.8+版本,需要升级到2.0+版本才能连接Azure DevOps

具体升级方式可以参考:https://blog.csdn.net/qq_28903377/article/details/86148687

这篇文章的安装目录是/usr/local/git/bin  记得自己的安装目录/usr/local/git/bin

(3)安装agent代理服务器客户端

执行命令 创建一个文件夹,并进入这个文件夹

mkdir myagent && cd myagent

下载微软提供给我们的agent代理服务器客户端

wget https://vstsagentpackage.azureedge.net/agent/2.172.2/vsts-agent-linux-x64-2.172.2.tar.gz

解压

tar -zxvf vsts-agent-linux-x64-2.172.2.tar.gz

运行配置代理服务器:

./config.sh

这里可能会出现一些错误提示:Must not run with sudo

具体的解决方案请参考https://github.com/microsoft/azure-pipelines-agent/pull/1713/commits/15a5beea684fa35172d661f3253b93e210409fbb

注意:代理服务器是基于.NET CORE3.1编写,所以需要相应的运行环境,如果没有,请运行如下命令:

./bin/installdependencies.sh to install

创建自己的访问令牌 (PAT) 进行身份验证(这里一定要操作,后面需要使用)

点击右上角选择access Token

创建一个新的令牌

这里为了方便,我直接选择了Full access授权这个Token可以访问所有的内容.

然后会得到一个Token字符串,记得复制保存,因为后面就查不到了,只能重新生成

解决环境问题,创建完Token后,我们继续运行配置:

  • 输入【Y】接受Team Explorer Everywhere许可协议;
  • 输入服务器URL,即项目的Azure的地址;
  • 输入身份验证类型,这里直接回车,选择默认的PAT;
  • 输入个人访问令牌,即PAT;
  • 连接服务器成功后,输入创建好的代理池;
  • 默认代理名称,也可以进行修改;
  • 因为我之前已经创建过了,所以是否替换的选择选择了【Y】;
  • 输入工作文件夹,直接回车,选择默认的【_work】;

这样就完成了我们的代理服务器的配置工作.

然后运行启动命令:

./run.sh

这个时候我们应该就能在网页上看到我们的代理服务器上线了如图:

4.采用服务的形式运行代理服务器

上面我们的代理服务器虽然上线了,但是在linux中是主线程的形式,退出就关闭了..

我们需要修改为服务的形式来运行.

运行命令安装服务:

sudo ./svc.sh install

启动服务:

sudo ./svc.sh start

查看服务状态:

sudo ./svc.sh status

停止服务:

sudo ./svc.sh stop

更新环境变量(当你有其他插件安装或者更新时)

./env.sh
sudo ./svc.sh stop
sudo ./svc.sh start
后记

本篇主要讲解了如何创建自己的代理服务器池,下一篇我们主要讲解如何创建一个管道来自动编译和打包我们的项目.

Azure DevOps+Docker+Asp.NET Core 实现CI/CD(一 .简介与创建自己的代理池)的更多相关文章

  1. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...

  2. 使用Azure DevOps Pipeline实现.Net Core程序的CD

    上一次我们讲了使用Azure DevOps Pipeline实现.Net Core程序的CI.这次我们来演示下如何使用Azure DevOps实现.Net Core程序的CD. 实现本次目标我们除了A ...

  3. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)

    上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS. 本 ...

  4. Docker & ASP.NET Core 教程

    第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 第五篇: Docker & ASP.NET Core (5):Docker Compose AS ...

  5. .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)

    前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...

  6. 使用Azure DevOps Pipeline实现.Net Core程序的CI

    上次介绍了Azure Application Insights,实现了.net core程序的监控功能.这次让我们来看看Azure DevOps Pipeline功能.Azure DevOps Pip ...

  7. 不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序

    一般我们写好了应用程序想要部署发布它,要么发布到物理机,要么发布到虚拟机,要么发布到容器来运行它.现在有了Azure应用服务,我们可以完全不用管这些东西,只管写好自己的代码,然后使用VisualStu ...

  8. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)

    相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...

  9. 【OF框架】在Azure DevOps中配置项目持续集成CI服务,推送镜像到Azure容器注册表

    准备工作 开通Azure账号,具有开通服务权限,关键是里面要有钱. 开通Azure DevOps,能够创建组织和项目. 具备一定的DevOps知识,了解CICD概念.Docker基本操作. 一.创建& ...

随机推荐

  1. 数据可视化之powerBI技巧(二十二)利用这个方法,帮你搞定Power BI"增量刷新"

    Power BI的增量刷新功能现在已经对Pro用户开通,但由于种种限制,很多人依然无法使用无这个功能,所以,每一次刷新,都要彻底更新数据集.这对于量级比较大的数据集来说,着实是一件耗费时间的事情. 拿 ...

  2. AcWing 1208. 翻硬币

    AcWing 1208. 翻硬币 原题链接 小明正在玩一个"翻硬币"的游戏. 桌上放着排成一排的若干硬币.我们用 * 表示正面,用 o 表示反面(是小写字母,不是零). 比如,可能 ...

  3. P4158 [SCOI2009]粉刷匠(洛谷)

    今天A了个紫(我膨胀了),他看起来像个贪心一样,老师说我写的是dp(dp理解不深的缘故QWQ) 直接放题目描述(我旁边有个家伙让我放链接,我还是说明出处吧(万一出处没有了)我讲的大多数题目都是出自洛谷 ...

  4. node.js day01学习笔记:认识node.js

    Node.js(JavaScript,everywhere) 1.Node.js 介绍 1.1. 为什么要学习Node.js 企业需求 + 具有服务端开发经验更好 + front-end + back ...

  5. 我把JVM的类加载器整理了一下

    前言 ​ 之前去面试的时候面试官问了我关于关于JVM性能调优的问题,由于自己之前公司的项目里自己没有接触到JVM性能调优的相关问题(感觉这些都是公司架构师考虑的问题),所有面试官问的时候自己一脸懵逼, ...

  6. Python 简明教程 --- 25,Python 目录操作

    微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 做技术一定要一颗恒心,这样才不会半途而废. 目录 上一节我们介绍了文件相关的操作,本节我们来介绍目录 ...

  7. Django安装与简单配置(1)

    目录 1. 环境准备 2. 开始安装 2.1 安装Django 2.2 安装 Mysql数据库 3. 开始配置 3.1 Django简单配置 3.1.1 创建一个工程(project)为devops: ...

  8. Monster Audio 使用教程(四)Wifi 远程遥控

    Android端下载二维码:(链接指向的是apk包地址,所以微信可能打不开,请用自带浏览器扫描二维码)  IOS下载二维码: 安装好上面的app,确保你的移动端设备和你电脑连接的是同一个路由器(也就是 ...

  9. js异步执行原理

    我们都知道js是一个单线程的语言,所以没办法同时执行俩个进程.所以我们就会用到异步. 异步的形式有哪些那,es5的回调函数.es6的promis等 异步的运行原理我们可以先看下面这段代码 应该很多人都 ...

  10. git pull 放弃本地修改, 全部使用远端代码

    git强制覆盖:    git fetch --all    git reset --hard origin/master    git pull git强制覆盖本地命令(单条执行):    git ...