前言

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

上一篇:

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

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

今天我们废话不多说 直接开始正文

正文

昨天我们创建了自己的代理服务器(其实也可以用Azure提供的免费代理服务器,就是要排队,而且比较慢,限制比较多..)

今天我们来讲讲如何创建自己的持续集成管道.

今天大致的流程图如下:

1. 创建私有Docker Registry

首先我们需要到自己需要持续集成的服务器上 安装Docker Registry来获取我们的docker image

安装Docker..我这就不说了.主要讲讲如何安装Docker Registry

直接拉取registry镜像:

docker pull registry

查看是否存在镜像:

拉取到镜像后,我们直接Run 命令:

docker run -itd -v /data/registry:/var/lib/registry -p : --restart=always --name registry registry:latest

这里的8082是你映射外网的端口.

运行命令查看是否运行成功:

curl http://127.0.0.1:8082/v2/_catalog

这里显示{}就表示运行成功了,我这个是因为有项目了...所以打码了..

(注意:正式环境的Docker Registry部署请设置用户密码,毕竟是对外的端口)

2. 创建Service connections(服务连接)

点击项目下的配置按钮:

找到Service connections

创建一个新的连接, 这里我们选择上一步创建的Docker Registry

填写刚刚创建好的Docker Registry地址与密码.

这一步就算完成了,下一步我们将来使用它.

3. 创建持续集成管道

我们找到Pipelines菜单

点击创建新的管道

选择自己的项目代码托管的地方,这里我们选择上篇文章代码提交的地方Azure Repos Git

选中自己需要集成的项目:

配置管道,我们选择Docker

选择项目中的dockerFile文件位置:

我测试项目的DockerFile文件如下,大家可自行参考(纯空项目啥也没有):

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE
EXPOSE FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
RUN mkdir -p /app
WORKDIR /src
COPY . .
RUN dotnet restore "WebApplication1.csproj"
RUN dotnet build "WebApplication1.csproj" -c Release -o /app FROM build AS publish
RUN dotnet publish "WebApplication1.csproj" -c Release -o /app FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "WebApplication1.dll"]

编辑配置我们的Pipeline YAML(这里开始,很重要):

将默认的Pool名改为我们昨天自行创建配置的Pool

修改为

创建持续集成的步骤Steps,点击右边的按钮可以打开图形化配置界面

 这里我们添加三个步骤如下(这是我自己的配置,各位请通过下面的图形化配置 添加自己的步骤):
    steps:

      - task: Docker@
inputs:
containerRegistry: 'TestDocker'
command: 'login'
- task: Docker@
inputs:
containerRegistry: 'TestDocker'
repository: '$(Build.Repository.Name)'
command: 'build'
Dockerfile: '$(Build.SourcesDirectory)/WebApplication1/WebApplication1/Dockerfile'
- task: Docker@
inputs:
containerRegistry: 'TestDocker'
repository: '$(Build.Repository.Name)'
command: 'push'

登陆,buid 最后Push我们的镜像.

添加好步骤之后,我们直接保存我们的管道.

4. 提交代码查看是否持续集成

我们修改一下首页的代码,并提交到Master主干:

可以发现,我们的管道已经监控到了主干的变化,开始运行

 

可以看到,管道自动push了版本号为42的镜像.

我们上持续集成服务器看看,有没有.

持续集成成功!

后记

我们下一篇来讲如何CD 持续部署与持续交付.

Azure DevOps+Docker+Asp.NET Core 实现CI/CD(二.创建CI持续集成管道)的更多相关文章

  1. Azure DevOps+Docker+Asp.NET Core 实现CI/CD(一 .简介与创建自己的代理池)

    前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 打算用三个篇幅来记录完整的全过程 觉得有帮助的朋友~可以左上 ...

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

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

  3. 超简单!asp.net core前后端分离项目使用gitlab-ci持续集成到IIS

    现在好多使用gitlab-ci的持续集成的教程,大部分都是发布到linux系统上的,但是目前还是有很大一部分企业使用的都是windows系统使用IIS在部署.NET应用程序.这里写一下如何使用gitl ...

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

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

  5. Docker & ASP.NET Core 教程

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

  6. 【ASP.NET Core】运行原理(1):创建WebHost

    本系列将分析ASP.NET Core运行原理 [ASP.NET Core]运行原理[1]:创建WebHost [ASP.NET Core]运行原理[2]:启动WebHost [ASP.NET Core ...

  7. C# -- HttpWebRequest 和 HttpWebResponse 的使用 C#编写扫雷游戏 使用IIS调试ASP.NET网站程序 WCF入门教程 ASP.Net Core开发(踩坑)指南 ASP.Net Core Razor+AdminLTE 小试牛刀 webservice创建、部署和调用 .net接收post请求并把数据转为字典格式

    C# -- HttpWebRequest 和 HttpWebResponse 的使用 C# -- HttpWebRequest 和 HttpWebResponse 的使用 结合使用HttpWebReq ...

  8. 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— 准备

    ==== 目录 ==== 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之一 —— 开篇 跟我学: 使用 fireasy 搭建 asp.net core 项目系列之二 —— ...

  9. asp.net core 使用 signalR(二)

    asp.net core 使用 signalR(二) Intro 上次介绍了 asp.net core 中使用 signalR 服务端的开发,这次总结一下web前端如何接入和使用 signalR,本文 ...

随机推荐

  1. scrapy 基础组件专题(九):scrapy-redis 源码分析

    下面我们来看看,scrapy-redis的每一个源代码文件都实现了什么功能,最后如何实现分布式的爬虫系统: connection.py 连接得配置文件 defaults.py 默认得配置文件 dupe ...

  2. bzoj3384[Usaco2004 Nov]Apple Catching 接苹果*&&bzoj1750[Usaco2005 qua]Apple Catching*

    bzoj3384[Usaco2004 Nov]Apple Catching 接苹果 bzoj1750[Usaco2005 qua]Apple Catching 题意: 两棵树,每分钟会从其中一棵树上掉 ...

  3. DEX文件解析--6、dex文件字段和方法定义解析

    一.前言    前几篇文章链接:       DEX文件解析---1.dex文件头解析       DEX文件解析---2.Dex文件checksum(校验和)解析       DEX文件解析--3. ...

  4. Python Ethical Hacking - TROJANS Analysis(5)

    Spoofing File Extention - A trick. Use the Kali Linux Program - Characters 1. Open the program. 2. F ...

  5. 使用数据泵(expdp、impdp)迁移数据库流程

    转载原文地址为:http://blog.itpub.net/26736162/viewspace-2652256/ 使用数据泵迁移数据库流程 How To Move Or Copy A Databas ...

  6. JVM系列之:详解java object对象在heap中的结构

    目录 简介 对象和其隐藏的秘密 Object对象头 数组对象头 整个对象的结构 简介 在之前的文章中,我们介绍了使用JOL这一神器来解析java类或者java实例在内存中占用的空间地址. 今天,我们会 ...

  7. p40_数据交换方式

    一.为什么要数据交换 数据链路发展史: 二.数据交换方式 电路交换 报文交换 分组交换[数据报方式,虚电路方式] 三.电路交换 eg:电话网络(特点:**独占资源,**即使两个人不说话,链接也不会被别 ...

  8. 题解 洛谷 P4602 【[CTSC2018]混合果汁】

    注意到问题具有单调性,所以一个询问可以通过二分答案来解决. 对于多组询问,就采用整体二分来处理. 将果汁按\(d\)从大到小排序,二分出一个位置\(mid\),只考虑在位置\(mid\)之前的果汁,其 ...

  9. coding如何绑定二次验证码_虚拟MFA_两步验证_身份验证?

    Coding.net 是一个面向开发者的云端开发平台,提供 Git/SVN 代码托管.任务管理.在线 WebIDE.Cloud Studio.开发协作.文件管理.Wiki 管理.提供个人服务及企业管理 ...

  10. Springboot(二)springboot之jsp支持

    参考恒宇少年的博客:https://www.jianshu.com/p/90a84c814d0c springboot内部对jsp的支持并不是特别理想,而springboot推荐的视图是Thymele ...