Git管理本地项目-Azure DevOps持续集成-WebApp部署

  • 实践操作(2)
  • Azure DevOps 配置CI-持续集成
  • 在Azure DevOps中配置Self-host Agent
  • Azure DevOps 配置CD


实践操作(2)

Azure DevOps 配置CI-持续集成

我们都知道编译项目代码是需要一台计算机作为编译机的,在这里我们使用本机作为Azure DevOps CI的编译机。

在Azure DevOps中配置Self-host Agent

将本机配置成编译的代理机器:
1.打开本地的cmd 生成一个Key

ssh-keygen -t rsa -C "你的Azure DevOps 邮箱"

Azure DevOps配置SonarSource azure devops本地部署_git


它会给这个账号创建一个连接的Key,会存储在一个.ssh的文件夹里面,如果它检测到没有这个文件夹会自动给你创建,如上图Key保存在

Your public key has been saved in C:\Users\My/.ssh/id_rsa.pub 这个里面。

然后打开这个文件,复制Key,我们需要将这个Key配置到Azure DevOps上。

我们回到Azure DevOps 找到User Settings -> SSH public keys

Azure DevOps配置SonarSource azure devops本地部署_Azure_02


进去之后点击右上角 +New Key ,然后输入一个名称,将刚刚复制的Key粘贴到Public Key Data中。

2.在本地的cmd 中创建一下关联的账号密码设置

Azure DevOps配置SonarSource azure devops本地部署_Azure_03


(账号安全配置,name自定义,email为Azure DevOps 邮箱)

打完之后回车,没有任何反应说明配置成功。

3.配置编译代理池,回到Azure DevOps 在左下角找到Organization Settings->Agent pools

Azure DevOps配置SonarSource azure devops本地部署_azure_04


它默认会有两个池,我们的编译机需要放在池里,而一个编译池可以有很多台机器同时工作,

这两个池是微软提供的,如果使用我们需要提前两天申请工单,这里我们新建一个池来承载我们的编译机。点击右上角add pool 我们是本机,这个选择类型为Self-hosted,然后给定一个名字,点击创建。

Azure DevOps配置SonarSource azure devops本地部署_Azure_05


点击我们刚刚创建的池,在里面创建agent。点击New agent.

Azure DevOps配置SonarSource azure devops本地部署_Azure_06


因为我们这里是本机所以我们按照他的步骤直接点击Download下载压缩文件夹并解压。(下载可能需要一些时间)。

本地解压过后的文件如下图所示:

Azure DevOps配置SonarSource azure devops本地部署_devops_07


点击config.cmd进行连接。(这一步是件本机配置成agent)

Azure DevOps配置SonarSource azure devops本地部署_git_08


第一步让你输入一个服务器的URL,这个就是复制你Azure DevOps 的URL直到你一开始创建的组织结束。

第二步是说身份验证类型,本机直接回车

第三步是个人访问令牌,我们需要去Azure DevOps上创建,注意token只显示一次,如果关闭了不能再看,所以注意保存,现在我们回到Azure DevOps 创建一个令牌。

点击User Settings->Personal access tokens

Azure DevOps配置SonarSource azure devops本地部署_git_09


输入一个名字,选定组织名(你自己创建的),token保存时间。Scpoes是权限,一般正常开发项目我们需要自定义一些权限,在这里我们给了所有权限Full。

Azure DevOps配置SonarSource azure devops本地部署_azure_10


复制下来token点击关闭。

Azure DevOps配置SonarSource azure devops本地部署_azure_11


代理池我们自己创建的所以我们输入自己的创建的池名称。

代理名称是本机,我们直接回车。

之后等他检测本机所需要的工具

之后的直接回车/(Y)就好.

Azure DevOps配置SonarSource azure devops本地部署_git_12


这时候我们可以看到在我们的池中可以看到本机已经配成agent了,但是他的状态是offline,不在线的,因为还没有启动,接下来我们点击下一个文件run.cmd

Azure DevOps配置SonarSource azure devops本地部署_devops_13


在这里我们可以看到本地使用cmd已经连接到Azure DevOps服务器了,而Azure DevOps 上的本机也变成了online在线了,说明本机已配置成了一台代理编译机。(注意:run.cmd不要关闭,如果关闭服务连接断开,服务就停掉了

Azure DevOps配置SonarSource azure devops本地部署_git_14

现在编译机已经配置好了,服务也启动了,下一步我们在Azure DevOps 上配置Pipeline 管道里面的CI。
首先我们点击项目里面的Pipelines然后再点击Pipelines里面的Pipelines,点击右上角New Pipeline,创建一个管道来承载CI 和 CD 。

Azure DevOps配置SonarSource azure devops本地部署_git_15


配置Pipelines管道需要有一个YAML的配置文件,我们如果不想写代码来生成YAML文件,可以点击Use the classic editor 来使用默认生成的YAML文件。

Azure DevOps配置SonarSource azure devops本地部署_devops_16


因为我们的数据源是Azure DevOps Repos 所以选第一个,选中项目,仓库,分支等选完后点击Continue。

Azure DevOps配置SonarSource azure devops本地部署_Azure_17

下面有很多模板,这是我们的例子是C#的 API项目,所以我们选择上图template。(点击Apply)

Azure DevOps配置SonarSource azure devops本地部署_azure_18

Azure DevOps配置SonarSource azure devops本地部署_Azure_19


这里我们需要注意我们的Agent pool需要绑定我们自己创建的。

Azure DevOps配置SonarSource azure devops本地部署_Azure_20

Azure DevOps配置SonarSource azure devops本地部署_服务器_21

到最后左侧的Agent job对勾全勾上代表编译已完成(最后两个有时候会勾上,有时候勾不上不需要管他,不影响)

Azure DevOps配置SonarSource azure devops本地部署_azure_22


接下来我们可以看一下,编译结果的文件是什么形式的。

Azure DevOps配置SonarSource azure devops本地部署_服务器_23


点击编译好的job,然后点击图中标注published。然后点击drop,展开后发现他其实打包成了一个zip文件。编译到此完成。

Azure DevOps 配置CD

我们需要知道 CI 和CD、Pipelines的关系,Pipelines(管道)它是CI,CD的承载着,便编译和部署需要在管道中进行,而CI(编译)的输出,就是CD(部署)的输入。我们需要理解,其实编译的目的就是为了让我们的代码转换成电脑可以识别的语言,然后打成包,部署到服务器上。

点击Pipelines->Releases->Create release

Azure DevOps配置SonarSource azure devops本地部署_azure_24


Artifacts就是在让你选择编译的包版本,因为你会编译很多次,系统会默认给你编译的产出物标著上版本,而且会自动给你选择最高的版本,然后点击创建。

Azure DevOps配置SonarSource azure devops本地部署_devops_25


之后我们点击Edit tasks进行配置,这里也需要注意让选Agent pool时一定要改为我们自己创建的Agent pool。然后选择订阅,选择部署的位置,需要注意的是,(以Azure App Service)为例,我们需要部署到上面,我们在部署之前可以先在Azure portal门户上先行创建,之后我们在Azure DevOps 中直接选择需要部署的AppService 就好了。