上篇已介绍了.netcore项目构建的相关步骤,本篇继续完善

1、什么是CI/CD

CI/CD 中的“CI”始终指持续集成,它属于开发人员的自动化流程。成功的 CI 意味着应用代码的新更改会定期构建、测试并合并到共享存储库中。该解决方案可以解决在一次开发中有太多应用分支,从而导致相互冲突的问题。
CI/CD 中的“CD”指的是持续交付和/或持续部署,这些相关概念有时会交叉使用。两者都事关管道后续阶段的自动化,但它们有时也会单独使用,用于说明自动化程度。

2、Azure Devops创建镜像注册连接

  • 通过项目设置,创建新的服务连接

  • 选择Docker Registry,点下一步

  • 填写docker hub用户验证信息及服务器连接名称,点验证,看到成功

3、编辑Azure Devops管道信息,添加推送镜像操作

  • 添加设置对应的镜像仓库信息



4、保存管道信息,退出编辑,重新运行管道

  • 运行管道,报错信息如下,denied: requested access to the resource is denied

    解决方法:参考https://sample.blog.csdn.net/article/details/70156144
    添加镜像前缀tag

  • 再次运行管道,管道执行成功,备注:docker hub国内访问较慢

  • 登入docker hub,发现多了一个镜像,说明构建推送镜像成功

5、新建发布管道,部署应用

  • 创建发布管道

  • 新建一个空作业

  • 添加项目信息

  • 添加阶段,命名部署应用,随意



  • 想代理作业中添加任务,选择ssh连接应用主机,执行命令





  • 参考脚本:
      #!/bin/bash
    name="netcoreapp01"
    cid=`docker inspect --format '{{.Id}}' ${name} 2>/dev/null`
    if [[ ${#cid} -gt 0 ]]; then
    docker stop $name
    docker rm $name
    echo "successed deleted container ${name}"
    fi
    imageid=`docker images --format {{.ID}} $name`
    echo "准备删除旧镜像${imageid}"
    if [[ ${#imageid} -gt 0 ]]; then
    docker rmi -f $imageid
    echo "successed deleted old image ${name}"
    fi
    logfile="/var/log/servicelog/$name"
    if [[ ! -x "$logfile" ]]; then
    mkdir -p "$logfile"
    echo "已成功创建日志文件夹"
    else
    echo "文件存夹已存在"
    fi
    docker pull hub.docker.com/repository/docker/xjk27400861/coreapp3:$(Build.BuildId)
    docker tag hub.docker.com/repository/docker/xjk27400861/coreapp3:$(Build.BuildId) coreapp3:$(Build.BuildId)
    docker run -it -d -p 8002:80 --name netcoreapp01 --privileged=true coreapp3:$(Build.BuildId)
    docker logs netcoreapp01
  • 创建发布,部署应用

  • 部署应用



  • 发现部署成功

  • 访问应用,部署成功

Azure 实践(4)- CI/CD .netcore项目Docker构建及部署的更多相关文章

  1. 使用Gitlab-CI 实现NetCore项目Docker化并部署到阿里云K8S

    使用Gitlab-CI 实现NetCore项目Docker化并部署到阿里云K8S 先行条件: 1.了解NetCore项目基础命令,如dotnet publish   等几个常用命令. 2.了解Dock ...

  2. 超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本

    超简单让.NET Core开发者快速拥有CI/CD的能力-Docker版本 前言 上一篇自动化测试,全面且详细的介绍了从零开始到发布版本的步骤,这是传统的方式,本次为大家带来的是如何在5分钟内使用上d ...

  3. Azure Data Factory(三)集成 Azure Devops 实现CI/CD

    一,引言 由于上一节文章内容过长,无法分享Azure Data Factory 的持续集成,持续发布.今天将着重介绍一下在使用 Azure DevOps Pipeline 发布,自动进行持续集成,并且 ...

  4. 【Devops】【docker】【CI/CD】1.docker搭建Gitlab环境

    CI/CD[持续化集成/持续化交付] docker搭建Gitlab环境 1.查询并拉取gitlab镜像 docker search gitlab docker pull gitlab/gitlab-c ...

  5. 【Devops】【docker】【CI/CD】2.docker启动jenkins环境+安装必要的插件

    [注意:]jenkins的docker镜像,需要从官网进入直接获取,其他地方获取到的docker镜像,可能因为Jenkins版本过低,导致后续插件安装失败等问题!!! ================ ...

  6. Github Packages和Github Actions实践之CI/CD

    概述 Github在被微软收购后,不忘初心,且更大力度的造福开发者们,推出了免费私有仓库等大更新.近期又开放了packages和actions两个大招,经笔者试用后感觉这两个功能配合起来简直无敌. G ...

  7. Jenkins + Docker + dockerfile-maven-plugin + Harbor CI/CD spring-boot项目的最轻量级配置

    说明 本文只为方便日后查阅,记录一些关键性的步骤和踩坑的情况. dockerfile-maven-plugin构建镜像配置 <plugin> <groupId>com.spot ...

  8. 【Devops】【docker】【CI/CD】关于jenkins构建成功后一步,执行的shell命令详解+jenkins容器运行宿主机shell命令的实现方法

    1.展示这段shell命令 +详解 #================================================================================= ...

  9. IntelliJ IDEA web项目 工程构建运行部署

随机推荐

  1. let 及const

    ES5中的块级作用域 ES5中只有全局作用域和函数作用域,这样带来了很多的不便利,会出现内层变量被外层变量覆盖,循环体中的变量会暴露在全局,很多情况下需要自执行函数来私有化变量. ES6块级的作用域 ...

  2. [数据结构-平衡树]普通 FHQ_Treap从入门到精通(注释比代码多系列)

    普通 FHQ_Treap从入门到精通(注释比代码多系列) 前提说明,作者写注释太累了,文章里的部分讲解来源于Oi-wiki,并根据代码,有部分增改.本文仅仅发布于博客园,其他地方出现本文,均是未经许可 ...

  3. SunOS与Solaris系统的对应关系

    下文绝大部分译自维基百科Solaris词条的"历史"部分: http://en.wikipedia.org/wiki/Solaris_(operating_system)#Hist ...

  4. TotalCommander的两款目录插件

    CatalogMaker 与 DiskDir Extended 是两个用于生成文件夹目录的totalCmd插件. 将指定目录下所有文件.文件夹以指定格式存储在一个文本文件中,可作为EverCD+的轻量 ...

  5. Golang语言系列-13-常用内置包

    常用内置包 net/http包 http请求和响应 http服务端 main.go文件 package main import ( "fmt" "io/ioutil&qu ...

  6. SQL注入:sqli-labs:5~6 double injection(Query)

    第五题: http://127.0.0.1/sqli/Less-5/?id=1 显示:You are in--.后面发现,不管是1,2,3,4都死显示Your are in --,不打紧,继续看看 h ...

  7. Java之JSP

    JSP JSP简介 JSP指的是 JavaServerPages ,Java服务器端页面,也和Servlet一样,用来开发动态web JSP页面中可以嵌入java代码为用户提供动态数据 JSP原理 J ...

  8. 某次无中生有的getshell过程

    0x01 写在前面 某次对目标的渗透中,发现了疑似前台上传漏洞,反复测试后无法成功利用,多方探寻最终成功getshell的过程. 0x02 信息收集 这次的目标是一个APP分发平台,对这一类的网站接触 ...

  9. Python 赋值、浅拷贝、深拷贝之间区别

    赋值 不会开辟新的内存空间,是对原对象值的引用 当原对象值,改变后,赋值的变量也会随之改变 浅拷贝 只会拷贝最外层的对象,会开辟新的内存空间,和原对象是互相独立的 如果这个对象有嵌套对象的话,浅拷贝只 ...

  10. LuoguP3167通配符匹配

    题意 本题的意思就是给出一段带有 $ ? $ 与 \(*\) 的字符串 (在下面称为\(s\)), $ ? $ 必须占据一个字符位置, \(*\) 可以占据任意位置, 求下面给出几段(在下面称为\(s ...