一,引言

  由于新申请的 Azure DevOps 账号中的私有项目不在享受托管代理提供的1800分钟的免费时间,又不想花钱付费,那我们只能另想版本解决没有并行作业的问题。

-------------------- 我是分割线 --------------------

新组织中的私有项目无法获得1800分钟的免费试用期限

于是,我们只能利用旧的Azure DevOps 连接到新的 Azure 账号的订阅上。通过我的调查。Azure DevOps 和 Azure 的关联是可以通过 Azure DevOps 上的手动管理 Service connections。既然如此,我们尝试利用手动管理类型为 “Azure Resource Manager” 的服务连接。

二,正文

1,创建可用的Service Principal并设置其权限

1.1,创建服务主体

  创建 Service Principal(服务主体)的方式,我之前都讲过的,可以通过 Azure CLI 登录到Azure 上,利用  az sp create ....... 进行创建,还可以手动进行创建,今天我们手动演示如何创建Service Principal。

首先,我们登录到Azure Portal 上,在 Azure Active Directory 上注册应用程序,首页左侧菜单点击 “Azure Active Directory”

选择 “Manage=》App registrations”,点击箭头所指的 “+ New registration”

输入 display name "Allen_ServiceConnection",点击 “Register”

创建完成后,就可以跳转到当前注册的 application 页面。接下来,我们需要为当前应用创建密码

选择 “Manage=》Certificates & secrets”,点击 “+ New client secret”

在添加客户端密钥页面,需要我们输入相关参数

Description:“Allen_ServiceConnection_Secret”

Expires:“24 months”(可以根据自己的实际情况选择过期时间)

点击 “Add”

创建完成后,我们尽快复制当前应用的客户端密钥的值(切记),一旦刷新页面重新切换到当前页面,我们就不能再复制密钥的值了。

1.2,设定 Service Principal 的权限

我们都知道在之前介绍的利用Azure CLI 创建 sp 的时候,给的角色为 “Contributor”,范围为 “当前subscription”。同样的,我们手动也需要为当前应用添加对应的权限

找到当前订阅,选择 “Access control”,切换到 “Role assignments”,点击 “+Add”

点击 “Add role assignment”(角色分配)

输入相关角色分配的参数

Role  选择:‘Contributor“

Assign access to:”User,group,or service principal“

Select 输入:”Allen_ServiceConnection”,并选择当前会员

点击 “Save” 进行保存操作

同时我们可以在当前角色指派页面看到添加的信息

2,Azure DevOps 中创建Service connection

我们尝试创建一个新的项目 "CnBateBlog_Test",并且点击左下角的 “Project Settings”

找到 “Pipeline=》Service connections”,点击 “Create service connection”

选择 “Azure Resource Manager”,并且点击 “Next”

Authentication method(验证方式) 选择 “Service principal(manual)”,点击 “Next”

大家需要注意的是,如果选择自己对于的 Azure 环境,如果跟我一样,那么就可以跟我选择一样的 “Azure Cloud”

接下来需要输入刚刚创建好的 Service Pricipal 的信息

Scop Level 选择:“Subscription”

Subscription Id:“xxxxxxxx”(自己的订阅ID)

Subscription Name:“Visual Studio Enterprise”(输入自己的订阅名称)

Service Principal Id 输入刚刚在 Azure Active Directory 中注册的 App 的 Id

Credential (凭据) 选择:“Service principal key”

Service principal key 就是刚刚创建的 application 的Client Screct

Tenant ID:“当前sp 的租户 id”

输入完 sp 的信息,我们可以先点击 “Verify” 验证一下,没有问题的话再输入其他参数

Service connection name:“Allen_ServiceConnection”

点击 “Verify and save”(保存之前,我们得保证手动输入的sp 的信息都是正确的

验证保存完成后,我们可以看到手动创建好的 Service connection 

3,验证Service connection 的可用性

测试的项目还是  CnBateBlogWeb

Azure DevOps 中创建 Release Pipeline,并且设置相关参数

记得配置 App Settings 信息,最后点击 “Create release”

等待部署完成之后,我们先查看部署状态

并且复制 “cnbateblogweb01” 的 URL 在浏览器中尝试访问

访问成功!!!

三,结尾

参考资料:Azure Pipeline管理服务链接

github:https://github.com/yunqian44/CnBateBlogWeb


本文所分享的内容也存在着很多我自己的一些理解,有理解不到位的,还希望多多包涵,并且指出不足之处。