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

本文涉及的产品
云服务器 ECS,每月免费额度280元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 持续集成交付部署是什么意思,它给我们带来什么好处? 先贴一张图 持续集成(Continuous Integration) 持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试(这个要看情况了是否需要) 持续交付(Continuous Delivery) 持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。
持续集成交付部署是什么意思,它给我们带来什么好处?
先贴一张图
持续集成(Continuous Integration)
  • 持续集成强调开发人员提交了新代码之后,立刻进行构建、(单元)测试(这个要看情况了是否需要)
持续交付(Continuous Delivery)
  • 持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
持续部署(Continuous Deployment)
  • 持续部署则是在持续交付的基础上,把部署到生产环境的过程自动化。
 
减少重复劳动 提高效率
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 docker images -f "dangling=true" | grep -q . && sudo docker rmi -f $(sudo docker images -f "dangling=true" -q)
sudo rm -rf site/drop 都ok了就删掉drop目录
 
以上一切准备好 提交一个commit到master试试
 
会自动触发CI 进行 编译 发布
接下来Release发布
发布打包的成果物在这里查看
 
 
 
发布成功 查看下docker image
 
已经成功创建了test_image这个镜像
 
容器是也跑成功了
 
验证一下

 

 
完美!!!不管你用的是腾讯云还是阿里云还是其他云都是可以的!
 
遗留问题:
TestDotnetcore.zip是我查看发布的日志找到的这个名字目前我还没有找到变量可以代替
有谁知道帮忙教育下!

 


如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,转载文章之后须在文章页面明显位置给出作者和原文连接,谢谢。
相关实践学习
一小时快速掌握 SQL 语法
本实验带您学习SQL的基础语法,快速入门SQL。
7天玩转云服务器
云服务器ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,可降低 IT 成本,提升运维效率。本课程手把手带你了解ECS、掌握基本操作、动手实操快照管理、镜像管理等。了解产品详情:&nbsp;https://www.aliyun.com/product/ecs
目录
相关文章
|
1天前
|
弹性计算 Ubuntu Linux
【3秒极速开服】Palworld/幻兽帕鲁服务器全自动部署极简教程(新手推荐)
本文将为您提供极简部署幻兽帕鲁专属服务器(Dedicated Server)的指引,「仅需轻点三次鼠标,3秒轻松开服」,和自己的朋友一起开心“抓帕鲁”。在帕鲁的世界中,与神奇的生物共度悠闲时光是一种无与伦比的乐趣。然而,有时官方服务器的不稳定性可能会给游戏体验带来延迟和卡顿。为了告别这些问题,部署自己的幻兽帕鲁服务器成为了一个不错的选择。通过搭建专属的游戏服务器(Dedicated Server),和小伙伴们获得一个专属的服务空间,获得顺畅流畅的游戏体验。
21 0
|
1天前
|
弹性计算 数据安全/隐私保护
【畅玩雾锁王国】阿里云雾锁王国服务器手动部署教程
想要部署属于自己的雾锁王国服务器(Dedicated Server),您首先需要拥有一台服务器,服务器是雾锁王国运行的基础。部署完成后,您和您的朋友便可以登入专属的游戏服进行体验。使用云服务器搭建雾锁王国服务器,便可以让您与您的朋友在一个相对独立且私密的空间中进行游戏,确保获得更加畅快的游戏体验。
13 0
|
1天前
|
弹性计算 数据安全/隐私保护
【雾锁王国/Enshrouded】阿里云服务器部署雾锁王国/Enshrouded联机服务教程
【雾锁王国/Enshrouded】阿里云服务器部署雾锁王国/Enshrouded联机服务教程。
13 1
|
1天前
|
弹性计算 Ubuntu Linux
2024年阿里云10秒自动完成Palworld/幻兽帕鲁游戏服务器部署教程
2024年阿里云10秒自动完成Palworld/幻兽帕鲁游戏服务器部署教程。阿里云服务器搭建帕鲁服务器游戏,服务器稳定无卡顿,先下载SteamCMD,并运行;然后下载Palserver,修改服务ini配置,启动PalServer,进入游戏服务器。今天分享阿里云创建幻兽帕鲁服务器教程。
|
1天前
|
弹性计算 数据安全/隐私保护
2024年《雾锁王国/Enshrouded》服务器部署启动全攻略:保姆级教程,轻松上手!
2024年《雾锁王国/Enshrouded》服务器部署启动教程:保姆级指导,让你轻松搭建私人游戏世界!本文将为您提供极简部署雾锁王国服务器的指引,「仅需轻点三次鼠标,即可完成开服」,和自己的朋友一起畅玩雾锁王国。雾锁王国(Enshrouded)作为一款热门多人在线游戏,为了给玩家提供稳定、流畅的联机体验,阿里云提供了高效便捷的快速部署解决方案,本文将为大家分享阿里云一键部署雾锁王国联机服务器详细教程。
|
1天前
|
弹性计算 运维 数据安全/隐私保护
2024《雾锁王国》服务器一键部署教程,不需要任何技术!
2024《雾锁王国》服务器一键部署教程,不需要任何技术!阿里云雾锁王国服务器搭建教程是基于计算巢服务,3分钟即可成功创建Enshrouded游戏服务器,阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月,阿里云百科亲自整理雾锁王国服务器详细搭建教程,零基础不需要技术一键部署
|
3天前
|
弹性计算 Ubuntu Linux
【幻兽帕鲁/Palworld】2024年新手在阿里云服务器上部署幻兽帕鲁/Palworld联机服务器攻略
【幻兽帕鲁/Palworld】2024年新手在阿里云服务器上部署幻兽帕鲁/Palworld联机服务器攻略。本文将详细介绍如何在阿里云服务器上部署幻兽帕鲁联机服务器,新手小白也能轻松搭建并管理自己的游戏环境。
|
Linux Docker Windows
Docker概述:什么Docker如此特别,它是如何构建的
本文讲的是Docker概述:什么Docker如此特别,它是如何构建的,【编者的话】在上一系列介绍中,我们大体地介绍了CoreOS。在这个系列中我想介绍一下Docker。本文我们看一下为什么Docker如此特别,它是如何构建的。我们会从基本开始介绍,所以读者不必担心自己是刚接触Docker的。
1337 0
|
1天前
|
IDE 数据中心 Docker
使用PyCharm与Docker容器进行开发:从入门到精通
使用PyCharm与Docker容器进行开发:从入门到精通
|
1天前
|
存储 机器学习/深度学习 Cloud Native
深入浅出Docker容器数据卷
深入浅出Docker容器数据卷
9 1