-----很详细的Az Devops部署java项目的文章
提示:
此文是本人打着想玩一玩devops的想法,来记录的,用的是最直接简单的方法来实现持续部署的,适合个人玩玩demo,内容不一定适合实际生产,大家就当逛逛就行
好吧,切入正题,先简单讲讲Azure Devops是什么:
简介:
-
Azure Devops是MS Azure下的产品,提供devops自动集成和部署的服务平台:
正式进入主题:
那么要完成使用Azure Devops自动集成部署一个Springboot项目我们需要那些准备工作呢?
第1步:
1.因为我们需要有自动部署连接的云服务器, 当然先要有一台可远程连接的云服务器啦,这里我选择了腾讯的学生体验服务器,(当然你也可以使用阿里的),在使用微信扫码支付0.01元实名认证后,我免费获取了一个体验服务器,注意这里的root用户的ip和密码,我们在后面需要使用到
2.给你的云服务器安装JDK,并配置好环境变量,
因为我买的云服务器莫得安装JDK,所以我们需要安装jdk,(如果你已经安装jdk,可以跳过这步)这里你可以选择手动ssh连接你的云服务器安装.
第2步: 需要有一个Azure Devops的账号,这个账号使用你的微软账户登录/邮箱注册都行, 且是免费的.
注册登陆后, 你需要创建一个组织和项目(例如我的组织190...项目名azure-devops,且是public的):到此我们的准备工作已经做好
第3步:
在本地新建一个以maven管理的Springboot Start Web项目,并在Controller层写一个测试连接的Http api接口,在本地运行成功后, 提交到github仓库
附:我的仓库地址我的项目github:
第4步(使用Azure Devops的Pipelines构建CI管道)
回到我们在第2步的页面
点击进入azure-devops项目, 选择pipelines新建一个管道
(注意: 对于新的Azure DevOps帐户,这里会自动带你进入使用YAML构建管道体验,我们要提前在 点击右上角头像|Preview features|New YAML pipeline creation experience关闭这个选项)
到此我们的Springboot项目已经通过CI管道自动集成了,接下来就是准备发布Releases工作了:
1.配置devops的连接服务通过ssh连接到我们的云服务器准备工作好了后
添加远程运行jar包的命令来运行我们的项目(注意由于ssh远程直接运行命令可能会读取不到云主机的环境变量配置,导致提示java命令未找到,所以这里写成全路径来执行jar文件), 我们的第一条命令:
kill -9 $(netstat -nlp | grep :8080 | awk '{print $7}' | awk -F"/" '{ print $1 }')
是表示查询8080端口的进程id并kill停止它, 以免在发布新版本的时候提示端口被占用, 第二条命令:
nohup /usr/java/jdk1.8.0_201/bin/java -jar /tmp/azure-demo-0.0.1-SNAPSHOT.jar > log.file 2>&1 &
表示后台启动运行jar文件,并把日志打印到log.file文件中
最后点击Save保存工作
到此我们的CD持续部署的管道就搭好了, 我们去先手动发布一次:
点击左边Releases选项,点击Create a release,点击Create
接下来我们将在本地修改代码并提交一次到github,以验证我们的自动集成部署是否已经成功
1.在本地修改,并提交push到github仓库:到此,本文章就结束了,我们实现了在本地更新代码,修改成一个稳定的版本后,直接push到github的主分支,我们就可以回家睡觉了,而我们此次版本的修改会通过Azure Devops自动集成发布,这样所有连接我们的服务的请求就都有了这次新的更新.
(我在写演示的过程中,并不是一次成功的,我重新修改任务命令发布了几次,所以发布的版本号来到了18,但本文章是最后我完全可以一次运行成功的截图版本,所以在发布的版本号上有点不同,不过不影响大致流程)
(演示中我们关闭了使用YAML文件来构建管道,其实YAML文件就是用来描述我们每个自动集成部署阶段要执行的任务,和我们手动设置管道任务一样,具体使用YAML构建可以看这里官方文档)
其实Azure Devops的玩法还可以有许多种,它支持很多语言框架和容器的自动集成部署,比如ASP.NET, Node.js的NPM, Python, Docker容器等,并且可定制性高,各位大佬可以根据官方文档自行摸索,并且结合MicroSoft 的Azure云计算服务平台还有更丰富的玩法,不过由于Azure的使用有点复杂,这篇文章中我也就没有用到Azure的服务(主要是注册Azure的国际账户需要VISA信用卡,我没有,而且我也不会玩Azure哈哈哈),而是使用了最简单的云服务ssh连接来完成自动集成部署.
最后谢谢阅读