Azure DevOps+Docker+Asp.NET Core 实现CI/CD(一 .简介与创建自己的代理池)
本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目).
打算用三个篇幅来记录完整的全过程
觉得有帮助的朋友~可以左上角点个关注,右下角点个推荐
首先,我们先来简单的介绍一下什么是CI/CD
CI全拼Continuous Integration 持续集成
我们的开发每天基本都会提交多次代码到主干上,这个时候如果需要编译或者打包,就会做一些重复性的动作,就可以用持续集成环境来操作。
有集成了,就肯定少不了它的好基友,没错就是CD。
CD全拼是Continuous Deployment,是持续部署。
CD还有个小号,交持续交付,英文全称是Continuous delivery,缩写也是CD。
CI/CD优点是,重复的工作用自动化来代替、减少时间成本、减少版本发布时间。
作为.NET的开发者,微软一直都是比较有爱的..从免费强大的IDE到人工智能ML.NET 基本上都提供了免费的入门版本,今天主要介绍的就是Azure DevOps.
Azure DevOps的前身其实大家都熟悉就是TFS,Azure DevOps是由TFS转为线上Online的产品.
它基本上提供了CI/CD所需要的全部功能。唯一的问题是在国内没有服务器,最近的服务器在香港。
Azure DevOps提供无限免费的私有仓库,以及最多5个contributor(贡献者)账号和无限的stakeholder(参与者)账号,注册即可使用.
这里的代理服务池和各类服务器 都是采用阿里云的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
注意:代理服务器是基于.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(一 .简介与创建自己的代理池)的更多相关文章
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)
前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...
- 使用Azure DevOps Pipeline实现.Net Core程序的CD
上一次我们讲了使用Azure DevOps Pipeline实现.Net Core程序的CI.这次我们来演示下如何使用Azure DevOps实现.Net Core程序的CD. 实现本次目标我们除了A ...
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)
上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS. 本 ...
- Docker & ASP.NET Core 教程
第一篇:把代码连接到容器 第二篇:定制Docker镜像 第三篇:发布镜像 第四篇:容器间的连接 第五篇: Docker & ASP.NET Core (5):Docker Compose AS ...
- .Net Core DevOps -免费用Azure四步实现自动化发布(CI/CD)
前言 linux 大行其道的今天想必大家都已经拥抱 core 了吧,通常的方案都是 gitlab+jenkins+centos,但是这样的方案不适合我这种懒人,一直在寻求简单的解决方案,在寻求方案的过 ...
- 使用Azure DevOps Pipeline实现.Net Core程序的CI
上次介绍了Azure Application Insights,实现了.net core程序的监控功能.这次让我们来看看Azure DevOps Pipeline功能.Azure DevOps Pip ...
- 不用虚机不用Docker使用Azure应用服务部署ASP.NET Core程序
一般我们写好了应用程序想要部署发布它,要么发布到物理机,要么发布到虚拟机,要么发布到容器来运行它.现在有了Azure应用服务,我们可以完全不用管这些东西,只管写好自己的代码,然后使用VisualStu ...
- Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)
相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...
- 【OF框架】在Azure DevOps中配置项目持续集成CI服务,推送镜像到Azure容器注册表
准备工作 开通Azure账号,具有开通服务权限,关键是里面要有钱. 开通Azure DevOps,能够创建组织和项目. 具备一定的DevOps知识,了解CICD概念.Docker基本操作. 一.创建& ...
随机推荐
- Spring源码解析——核心类介绍
前言: Spring用了这么久,虽然Spring的两大核心:IOC和AOP一直在用,但是始终没有搞懂Spring内部是怎么去实现的,于是决定撸一把Spring源码,前前后后也看了有两边,很多东西看了就 ...
- scrapy 基础组件专题(十四):scrapy CookiesMiddleware源码
一 Scrapy框架--cookie的获取/传递/本地保存 1. 完成模拟登陆2. 登陆成功后提取出cookie,然后保存到本地cookie.txt文件中3. 再次使用时从本地的cookie.txt中 ...
- JavaScript动画实例:动感小球
已知圆的坐标方程为: X=R*SIN(θ) Y=R*COS(θ) (0≤θ≤2π) 将0~2π区间等分48段,即设定间隔dig的值为π/24.θ初始值从0开始,按曲线方程求得坐标值(x,y), ...
- bzoj2561最小生成树
bzoj2561最小生成树 题意: 给定一个连通无向图,假设现在加入一条边权为L的边(u,v),求需要删掉最少多少条边,才能够使得这条边既可能出现在最小生成树上,也可能出现在最大生成树上. 题解: 最 ...
- bzoj3437小P的牧场
bzoj3437小P的牧场 题意: n个牧场,在每个牧场见控制站的花费为ai,在该处建控制站能控制从此处到左边第一个控制站(或边界)之间的牧场.一个牧场被控制的花费等于它到控制它的控制站之间的牧场数目 ...
- 使用redis完成秒杀系统原理
假设秒杀商品数为100,list名称为winner_user 参考视频教程:https://www.imooc.com/video/15167
- J.U.C体系进阶(二):juc-locks 锁框架
Java - J.U.C体系进阶 作者:Kerwin 邮箱:806857264@qq.com 说到做到,就是我的忍道! juc-locks 锁框架 接口说明 Lock接口 类型 名称 void loc ...
- three.js 绘制3d地图
通过地图数据配合three可以做出非常酷炫的地图,在大数据展示中十分常见. 这篇郭先生就来说说使用three.js几何体制作3D地图.在线案例点击原文地址. 地图的数据是各个地图块的点数组,通过THR ...
- 深入浅出ReentrantReadWriteLock源码解析
读写锁实现逻辑相对比较复杂,但是却是一个经常使用到的功能,希望将我对ReentrantReadWriteLock的源码的理解记录下来,可以对大家有帮助 前提条件 在理解ReentrantReadWri ...
- AI面试题之深入浅出卷积网络的平移不变性
卷积网络的平移不变性可能会经常在论文中看到,那这个到底是什么呢?看了一些论文的原文和网络上十几篇讲这个的博文,大概捋清了思路然后写下这个.不得不说,有的博文讲的有那么点问题. 1 什么是不变性 [不变 ...