创世网站建设 优帮云山西省住房和城乡建设厅门户网官方网站
news/
2025/10/3 19:36:01/
文章来源:
创世网站建设 优帮云,山西省住房和城乡建设厅门户网官方网站,吉林市百姓网免费发布信息网,wordpress文章两端对齐上一次我们讲了使用Azure DevOps Pipeline实现.Net Core程序的CI。这次我们来演示下如何使用Azure DevOps实现.Net Core程序的CD。实现本次目标我们除了Azure DevOps外还需要#xff1a;一台安装了Docker的主机一个 Docker Hub 账号上一次我们的CI实现了#xff1a;发布编… 上一次我们讲了使用Azure DevOps Pipeline实现.Net Core程序的CI。这次我们来演示下如何使用Azure DevOps实现.Net Core程序的CD。实现本次目标我们除了Azure DevOps外还需要一台安装了Docker的主机一个 Docker Hub 账号上一次我们的CI实现了发布编译单元测试这次我们要实现剩下的几个步骤生成镜像推送镜像部署创建Docker镜像仓库我们生成的镜像需要有个存放的地方。各大云厂商其实都有这种服务这次直接使用Docker Hub提供的公共仓库服务。创建一个仓库名叫azdevoptest。创建Dockerfile我们的代码创建为镜像需要一个Dockerfile来描述如何构建这个镜像。在项目根目录下新建一个文件命名为Dockerfile注意不带任何后缀名。以下为Dockerfile的内容 FROM mcr.microsoft.com/dotnet/core/sdk:3.1-bionic AS build
WORKDIR /app
COPY /. /app
RUN dotnet restore
WORKDIR /app/devops_test
RUN dotnet publish -o ./out -c Release
EXPOSE 5000
ENTRYPOINT [dotnet, out/devops_test.dll]
配置Servic Connections选择ProjectSetting菜单选择Service connections。Service connections用来存储跟外部服务相关的账号密码等信息这里我们需要配置2个service。Docker Hub的信息主机SSH的信息配置Docker Registry service我们的pipeline需要给Docker hub推送镜像所以需要一些必要的信息比如账号密码等信息。点击New Service找到Docker Register项目点击下一步选择DockerHub填写对应的账号密码配置SSH service我们的pipeline在完成镜像推送后需要通过SSH登录到主机运行命令把新的镜像跑起来。填写主机IP端口等信息。修改pipeline上次我们的pipeline已经定义好了CI的步骤这次需要在上次的基础上继续完善CD的功能。BuildAndPush Task找到上次的pipeline选择编辑功能在右边的Task列表里找到DockerTask点击出现配置界面在Container register里选择前面在service connections配置的docker-hub服务。repository填写我们在docker hub上新建的仓库kklldog/azdevoptest 。注意仓库名称要把用户名写全了不然推不上去。tags填写latest 。command选择buildAndPush 。build跟push本是两步操作这里直接合并为一步。SSH Task添加完BuildAndPush Task后同样的方法再次添加SSH Task。SSH service connection里选择前面我们配置好的ssh service。Run 这里选择Commands。Commands 填写需要执行的命令docker rm -f az_devop_testdocker rmi -f kklldog/az_devop_testdocker pull kklldog/az_devop_testdocker run -d -p 5000:5000 --name az_devop_test kklldog/az_devop_test
简单解释下这个命令删除运行的容器删除镜像拉取最新的镜像使用新的镜像运行一个容器。完整的pipeline到此我们的pipeline已经配置好了以下是完整的pipeline.yml代码。# ASP.NET Core (.NET Framework)
# Build and test ASP.NET Core projects targeting the full .NET Framework.
# Add steps that publish symbols, save build artifacts, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/dotnet-core
trigger:
- master
pool:vmImage: ubuntu-18.04
variables:solution: **/*.slnbuildPlatform: Any CPUbuildConfiguration: Release
steps:
- task: DotNetCoreCLI2inputs:command: restore
- task: DotNetCoreCLI2displayName: Buildinputs:command: buildprojects: **/*.csprojarguments: --configuration $(buildConfiguration)
- task: DotNetCoreCLI2inputs:command: testprojects: **/*Tests/*.csprojarguments: --configuration $(buildConfiguration)
- task: Docker2inputs:containerRegistry: docker-hubrepository: kklldog/az_devop_testcommand: buildAndPushDockerfile: **/Dockerfiletags: latest
- task: SSH0inputs:sshEndpoint: azvm-sshrunOptions: commandscommands: |docker rm -f az_devop_testdocker rmi -f kklldog/az_devop_testdocker pull kklldog/az_devop_testdocker run -d -p 5000:5000 --name az_devop_test kklldog/az_devop_testreadyTimeout: 20000
运行一下手动运行一个这个pipeline点击pipeline可以看到实时的日志等到最后可以看到每一步都成功了说明我们的pipeline配置成功了。访问一下容器对应的端口我们的网站已经可以访问了。修改一下代码然后提交每次都会自动部署最新的代码到主机。总结以上通过2篇文章简单的介绍了Azure DevOps Pipeline如何实现CICD功能。Azure DevOps Pipeline给我的感觉是比较易用的配置yml其实都是图形化的上手难度会比较小。另外它跟Github有深入的集成可以使用Github的账号直接登录。况且它还是个免费服务大家可以试试。关注公众号一起玩转技术
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926242.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!