Azure的DevOps发布和打包Springboot程序
我在代理服务器上安装了maven环境,在部署服务器上只安装了java环境而没有安装maven环境,我的想法是通过代理服务器上使用maven对springboot进行打包,然后将生成的jar包部署到远程服务器上,然后再远程服务器进行部署。理论上应该可以实现自动部署的,结果很折腾。
(1) 首先我尝试使用文件复制的方式
结果不成功,因为文件复制的方式只能是在本地机器上服务,比如再代理服务器上添加任务,那么只能在代理服务器上面来回复制,同理,在部署服务器上添加任务,只能在部署服务器上来回复制,而不管你添加了什么样的变量。
这几个地方可以添加变量,参考文章中有对预设变量的说明,有些东西只能在代理服务器上,有些变量只能在部署服务器上用(这是我个人理解的),反复实验,都无法使用。
1.Predefined variables
(2) 第二我尝试使用下载生成项目
在下载生成项目的参数设置中,我填了很多版本,让我郁闷的是,最后下载到部署服务器上的,都是空的。
理论上生成了一个项目,我也把管道设置成了管道从生成项目开始,就应该可以将生成的项目下载到部署服务器上了。结果,并不如我意。
(3) 最后,我通过使用ssh的方式,实现了将生成的项目直接复制到远程服务器上
点击项目设置,选择服务连接,选择新建服务连接,添加ssh连接
添加远程linux主机的地址,用户名密码等内容
然后添加任务,选择ssh文件复制
编写复制参数
执行生成任务即可
1.利用 Azure Devops 创建和发布 Nuget 包
2.如何使用适用于 Azure Web 应用的 Maven 插件将容器化 Spring Boot 应用部署到 Azure
3.Release variables and debugging
总结
1.新建发布管道
点击项目左侧的列表,选择发布,然后新建发布管道
2.添加项目
选择项目,添加项目,选择Azure Repo代码库
3.添加阶段
在项目后面的阶段中,添加空阶段
4.为阶段添加任务
点击阶段下面的作业,编辑任务
5.添加打包任务
在代理作业上点击加号,添加maven打包任务
6.编辑打包任务参数
填写任务的名称,maven所在的pom.xml文件位置
7.添加ssh任务
然后再次点击代理作业右边的加号,添加通过ssh复制文件
8.编辑ssh任务参数
选择ssh服务连接,点击右侧的下拉箭头,选择添加的ssh服务
(1) 源文件目录选择:$(System.DefaultWorkingDirectory)变量代表的文件目录;
(2) 内容中可以添加正则表达式,“ ** ”,表示全部文件,或者是*/.war 表示.war文件;
(3) 目标目录填写部署服务器的目标目录。
(4) 高级选项中,选择精简文件夹和覆盖
1.Copy Files Over SSH task
9.保存和发布
编辑完任务,点击保存和发布
点击创建
10.查看日志
点击上面的Reles
鼠标放到解决上,点击出现的日志按钮
11.查看每一步的日志
打开日志列表,可以点击每一步,查看每一步的日志内容。
每一个任务的日志
将文件复制到部署服务器上,就可以在部署服务器上执行其他的命令了
12.添加部署服务器作业
右键点击阶级右侧的三个点(鼠标放上去,就显示了),添加部署作业
编辑部署作业,选择部署服务器
13.添加部署作业的任务
增加完了部署作业,选择完了部署服务器,在部署作业的右侧加号,添加多个任务
可以添加命令行工具,也可以添加其他的任务
后面的内容,比如添加哪些脚本,如何自动触发部署,就不具体写了,在其他文章中都写过了,多练习就好了。
最后保存配置,手动创建新的发布即可。
1.使用Azure Devops持续集成部署SpringBoot项目 这篇文章是我后来回顾的时候,重新看的一篇文章,这里有一个地方,就是可以借鉴,在使用后台执行java程序的时候,以及删除已有的程序的时候的代码,第一条命令: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文件中