VSTS + XX云服务器构建netcore+docker持续集成交付部署

2023-11-06 15:48

本文主要是介绍VSTS + XX云服务器构建netcore+docker持续集成交付部署,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

持续集成交付部署是什么意思,它给我们带来什么好处?

先贴一张图

持续集成(Continuous Integration)

  • 持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试(这个要看情况了是否需要)

持续交付(Continuous Delivery)

  • 持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。

持续部署(Continuous Deployment)

  • 持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。

更多概念请参考https://link.zhihu.com/?target=http%3A//www.mindtheproduct.com/2016/02/what-the-hell-are-ci-cd-and-devops-a-cheatsheet-for-the-rest-of-us/

 

减少重复劳动 提高效率

jenkins大家都知道吧,但今天我们用微软的vsts来定制个性化定制持续集成交付(个人或者小团队我建议用vsts 也不用自己安装jenkins环境了 直接用vsts在线系统很方便)

用到的资源有:

  1. 腾讯云服务器ubuntu一台(自己先安装好docker哈)

  2. vsts创建一个git(有微软账号就能免费创建,<=5人团队是免费使用的,对于敏捷团队绰绰有余啦) https://www.visualstudio.com/zh-hans/team-services/

  

一步步看图

第一步 在vsts创建一个工程

 

 

 

创建git用户

 

然后用git工具clone到本地 我习惯用Sourcetree 大家可以用自己习惯的方式

如果提示输入密码就输入上面创建的用户名和密码

 

第二步创建一个实验工程

这里我们创建一个非常简单的console webapplication

安装nuget包

 

 


这里注意一点:我这里写死了 用 5001端口 注意我用的是 *:5001 没有用 localhost:5001 如果用这个方式的话 部署docker上会访问不了

确认可以跑起来

 

然后git提交代码到master分支

 

第三步我们来配置vsts

 

先配置第一部分 一有代码提交到master分支 就自动编译 打包 【CI部分】

 

 

 

选择 ASP.NET Core 会默认有以下Task

 

一定要注意选择linux环境编译

 

Test我们暂时不需要就Remove掉

由于我们不是web project

 

配置触发器 (意思就是一有代码提交打master分支[可以指定特定分支]就会触发CI)

 

尝试跑一下

 

 

CI正常完成

 

 

到此CI配置工作已完成

接下来我想要完成自动 发布到我的腾讯云服务器 在服务器上把发布的文件打包并生成一个image 然后用这个image生成一个Container 并启动

 

第四部我们配置Release

 

 

Sourece alias 这个大家可以修改成名字短一点

执行Release发布的时候会把之前CI public的东西download然后放在命名为 Source alisa文件夹内

我改成 _test_netcore-docker

 

接下来来配置环境

大家可以根据实际情况配置多个环境 比如 集成测试环境 和 prod环境

我这里就只配置一个prod环境

由于我们是发布到腾讯云服务器 所以在这里选择 Empt process 且命名为prod

接下来要配置 Release 操作的 Task

我们添加SSH 目的是用SSH 链接到 腾讯云服务器 然后 把发布的文件通过SSH传输到我的服务器

 

 

 

得先配置SSH无密码登录

 

 

按照提示进行配置

配置好后

 

Source folder 输入我们之前配置的别名 _test_netcore-docker

最终如下

 

然后再添加SSH执行命令工具

 

 

unzip -q site/drop/TestDotnetcore.zip -d site/drop/ 发布的文件是zip的 通过这个命令解压zip <TestDotnetcore.zip是我查看发布的日志找到的这个名字目前我还没有找到变量可以代替>

sudo rm -rf site/drop/*.zip 解压完成后删除掉

touch site/drop/Dockerfile 生成一个dockerfile

echo "FROM microsoft/aspnetcore:2.0" >> site/drop/Dockerfile echo命令是往创建的dockerfile里面写入内容

echo "COPY . /publish" >> site/drop/Dockerfile

echo "WORKDIR /publish" >> site/drop/Dockerfile

echo "EXPOSE 5001" >> site/drop/Dockerfile

echo "CMD [\"dotnet\", \"TestDotnetcore.dll\"]" >> site/drop/Dockerfile

sudo docker build --rm -t test_image -f site/drop/Dockerfile site/drop/ 创建一个image 名字叫 test_image

sudo docker ps -q --filter "name=test_netcore" | grep -q . && sudo docker rm -f test_netcore || true 查看是否有没有叫 test_netcore的容器有没有在runing 如果有就干掉它

sudo docker run --name test_netcore -d -p 5001:5001 test_image:latest 根据test_image启动一个名字叫test_netcore的容器

if sudo docker images -f "dangling=true" | grep ago --quiet; then sudo docker rmi -f $(sudo docker images -f "dangling=true" -q); fi 查看是否有<none>的image 把它删掉 因为我们创建image的时候每次都会覆盖所以会产生一些没有的image

sudo rm -rf site/drop 都ok了就删掉drop目录

 

以上一切准备好 提交一个commit到master试试

 

会自动触发CI 进行 编译 发布

接下来Release发布

发布打包的成果物在这里查看

 

 

 

发布成功 查看下docker image

 

已经成功创建了test_image这个镜像

 

容器是也跑成功了

 

验证一下

 

 

完美!!!不管你用的是腾讯云还是阿里云还是其他云都是可以的!

 

遗留问题:

TestDotnetcore.zip是我查看发布的日志找到的这个名字目前我还没有找到变量可以代替

有谁知道帮忙教育下!


原文地址:https://www.cnblogs.com/yudongdong/p/9042750.html


 

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

这篇关于VSTS + XX云服务器构建netcore+docker持续集成交付部署的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/357546

相关文章

C#TextBox设置提示文本方式(SetHintText)

《C#TextBox设置提示文本方式(SetHintText)》:本文主要介绍C#TextBox设置提示文本方式(SetHintText),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录C#TextBox设置提示文本效果展示核心代码总结C#TextBox设置提示文本效果展示核心代

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

Spring Boot项目部署命令java -jar的各种参数及作用详解

《SpringBoot项目部署命令java-jar的各种参数及作用详解》:本文主要介绍SpringBoot项目部署命令java-jar的各种参数及作用的相关资料,包括设置内存大小、垃圾回收... 目录前言一、基础命令结构二、常见的 Java 命令参数1. 设置内存大小2. 配置垃圾回收器3. 配置线程栈大小

基于Python打造一个可视化FTP服务器

《基于Python打造一个可视化FTP服务器》在日常办公和团队协作中,文件共享是一个不可或缺的需求,所以本文将使用Python+Tkinter+pyftpdlib开发一款可视化FTP服务器,有需要的小... 目录1. 概述2. 功能介绍3. 如何使用4. 代码解析5. 运行效果6.相关源码7. 总结与展望1

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

Docker镜像修改hosts及dockerfile修改hosts文件的实现方式

《Docker镜像修改hosts及dockerfile修改hosts文件的实现方式》:本文主要介绍Docker镜像修改hosts及dockerfile修改hosts文件的实现方式,具有很好的参考价... 目录docker镜像修改hosts及dockerfile修改hosts文件准备 dockerfile 文

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

详解C#如何提取PDF文档中的图片

《详解C#如何提取PDF文档中的图片》提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使用,下面我们就来看看如何使用C#通过代码从PDF文档中提取图片吧... 当 PDF 文件中包含有价值的图片,如艺术画作、设计素材、报告图表等,提取图片可以将这些图像资源进行单独保存,方便后续在不同的项目中使

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面