AzureDevops创建和管理项目
安装完成了Azure devOps之后,打开配置的网站。
1.新建项目
打开配置的localhost:8033网站(默认为80)

右侧有个创建项目,输入项目名称,即可创建一个项目

项目创建成功

2.上传代码
Azure DevOps自己本身带了一个git仓库,点击项目的git仓库按钮,打开项目的git仓库。

当让你也可以使用GitHub作为自己的仓库。如果项目为空的化,它会提示你上传代码,根据提示上传即可。

根据提示,添加远程仓库地址,然后上传代码,上传完之后,刷新页面。即可看到自己上传的代码了。

这里我上传了一个spring boot项目
3.设置生成
在代码库的右上角有个设置生成按钮

点击设置生成,会跳到管道配置项

我选择了第一项,先打包并测试。跳到评审页,点击保存并运行。

会将azure-pipelines.yml提交到你的仓库中,没关系,保存运行好了。

4.出现代理错误
结果报错了,这个时候不要慌,不要怕,谷歌会帮你解决问题的。

找不到也没有关系,打开右侧的项目设置

找到代理池一项

点击默认的代理池

右侧有个新建代理

点击之后出现获取代理

获取代理完成之后,会出现一个设置页面,这里其实是一个安装说明,点击下载按钮,会下载一个zip包。

根据页面说明,一步步操作,先是在c盘创建了一个agent目录,然后进入这个目录,执行下面代码
1 | Add-Type -AssemblyName System.IO.Compression.FileSystem ; [System.IO.Compression.ZipFile]::ExtractToDirectory("你的下载路径\vsts-agent-win-x64-2.153.1.zip", "$PWD") |
注意命令里面的vsts-agent-win-x64-2.153.1.zip是你自己的下载路径。

然后运行: .\config.cmd,结果让我输入一个服务器url(这就比较尴尬了,我上哪找这个url呢?)
官方给出的答案是:https://dev.azure.com/{your-organization}

{your-organization}这也难倒我了。
7.重新生成
安装完代理后,重新生成。
(1) 点击管道,生成,右侧有个编辑。

(2) 打开编辑,修改azure-pipelines.yml中pool的名字,保存并生成。

(3) 最后生成成功

总结起来,我有点明白这个代理的作用了。其实他做的工作,就是在你输入的URL地址的服务器上安装了一个代理软件,然后在生成和发布的时候,你的代码都会送到这个服务器上执行相应的命令行。所以,你的代理服务器上要正确的安装相应的git和java环境等。

查看生成的日志,更加的确幸了我的猜测。
8.连接Jenkins
发布的过程,其实不是借助于Azure DevOps自己的工具,而是借助于第三方工具,比如jenkins.
(1) 安装Jenkins,可以查看另一篇文章 Jenkins持续集成和持续交付
(2) 打开项目设置->服务连接->新建服务连接

(3) 连接Jenkins

1.使用开源工具构建 DevOps Pipeline 的初学者指南
2.四个措施打造安全的 DevOps 流程
3.Release pipelines
4.在 Azure Pipelines 生成和发布管道中使用开发测试实验室
5.Use Azure Pipelines
6.Release artifacts and artifact sources
9.发布
重新梳理一下发布的流程:
(1) 点击右侧的Pipeline,选择发布,新建发布

(2) 可以选择作业模板,我这里选择从空作业开始

(3) 鼠标放到作业上,弹出查看任务,选择查看任务

(4) 打开任务面板

(5) 点击加号,可以选择任务模板,这里我选择从命令模板

(6) 点击添加,可以将任务添加到作业列表里面

(7) 点击任务后面的圆圈,可以打开编辑任务的面板,可以编写脚本和任务。当然,这些都可以使用yaml文件来编写。

(8) 如果这里的工作目录无法选择,你需要点击菜单栏,回到管道设置界面

(9) 点击项目,选择生成这样项,前提事你有设置生成这样步,参考第三到七章。

(10) 添加之后,重新回到任务设置界面

(11) 可以看到已经有目录可以选择了

(12) 设置完成之后,就可以点击保存了,会让你选择保存位置,我选择默认。

(13) 然后点击发布就可以自动执行你设置的命令了。

(14) 填写相关发布内容

(15) 注意版本与手动还是自动

(16) 点击创建之后,就有一个发布列表出现了

(17) 鼠标放到阶段上,点击部署按钮,执行部署

(18) 部署

(19) 可以带你就查看队列

(20) 查看队列的详细日志(这里失败,是因为我的脚本没有写正确)

(21) 你可以重新编辑任务,查看阶段,查看阶段的队列,然后查看队列的日志,修改后执行成功。

(22) 查看脚本的执行日志,确实是在代理服务器上执行了我定义的脚本

说明
在阶段设置里面,右侧的三个点,可以添加不同的类型,如果设置了部署组,可以添加部署组的任务,如果没有添加部署组,可以添加代理作业。在部署组里的任务,就是在部署组里执行,在代理里面定义的任务,就是在代理服务器中执行,部署组的添加,可以参考第八章

总结
当你设置安装好代理服务器的时候,你规定和一系列的项目和项目中的阶段,并为每个阶段定义的执行的命令,DevOps就会按顺序将你定义的命令,依此发送到代理服务器上进行执行,然后返回结果。所以,如果你想在代理服务器上执行maven命令,那么首先就需要在代理服务器上暗转maven环境,然后执行maven的打包和部署。想要部署到nodejs环境中,那么在代理服务器上,就应该有nodejs环境,这个环境需要自己手动安装,而不是devOps自动给你安装上了,devOps只不过是在你要部署的服务器上安装了一个代理软件罢了,将所有的代码都发送到代理服务器上执行。
错误
(1) 下载项目:未能创建 Release 项目目录 C:\agent_work\r2\a

这个错误,多半是因为多个程序执行时占用了项目目录,导致无法下载目录。你可以到代理服务器上,将这个此时的目录r2删除,然后重新执行部署命令。暂时还没有想好如何彻底解决这个问题,如果这个文件夹删除不掉,就重启下IIS中的这个网站,就好了。
最终,我通过mvn打包命令,然后配合mvn插件tomcat7-maven-plugin,在代理服务器的命令行中执行了mvn tomcat7:deploy,成功将测试demo打包,部署到了代理服务器的tomcat目录下。
10.其他参考资料
1.教程:使用 Jenkins 和 Azure DevOps Services 将应用部署到 Azure 中的 Linux 虚拟机
11.AzureDevops过期
天下没有不散的宴席,需要和AzureDevops说再见了。
