如何在 Azure Devops 中为 Azure 创建服务连接(附图)

Mak*_*toE 2 azure azure-devops azure-pipelines

Azure Devops 中的“服务连接”这个东西非常令人困惑。我想创建一个服务连接,以便能够连接到 Azure 并执行诸如通过管道部署到我的应用服务之类的操作。

问题是,我的订阅未列在下拉菜单中,而且我收到了一些无用的错误,例如“无法获取 Json Web 令牌(JWT)”或“无法查询服务连接 API ... AuthorizationFailed”。为了创建服务连接,我需要采取哪些步骤?

Mak*_*toE 5

先决条件

  • Azure 订阅
  • 用于创建服务连接的应用服务或其他资源

创建应用注册并定义角色

您首先需要做的是创建应用程序注册。应用注册是您的管道将用于部署的基于角色的身份。

在 Azure 门户中,转到 Azure Active Directory | 应用程序注册(在侧边栏中)| 新注册。

应用注册页面

为应用注册命名。不要担心其他设置;让他们默认。单击注册。专业提示:使用您的项目名称(如<project name>-appregistration)作为相关资源和实体的前缀将有助于您以后快速找到它们。

我们需要授予您的应用注册权限以访问和部署到您的应用服务或您希望部署到的任何资源。

转到应用服务页面 | 访问控制 (IAM) | + 添加 | 添加角色分配。填写字段:

  • 角色:贡献者
  • 将访问权限分配给:Azure AD 用户、组或服务主体
  • 选择:搜索并选择您刚刚注册的应用程序

点击保存。您应该会看到应用注册被添加为贡献者。

访问控制

我们还需要为您的订阅授予读取权限。我不知道为什么它需要对订阅进行读取访问,但是如果您不这样做,连接就会失败。

与最后一步类似,转到您的订阅(您用于应用服务的订阅) | 访问控制 (IAM) | + 添加 | 添加角色分配。

  • 角色:读者
  • 将访问权限分配给:Azure AD 用户、组或服务主体
  • 选择:选择应用注册,然后保存。

创建服务连接

转到 Azure DevOps 中的项目,然后侧栏中的项目设置 | 服务连接 | 新的服务连接。连接类型是 Azure 资源管理器。

这是我之前迷路的地方,因为这个界面没有列出我的订阅。但如果它对你有用,它应该会自动为你获取正确的变量,我相信。如果它不起作用,请继续阅读。

Azure 资源管理器服务连接

单击“使用完整版的服务连接对话框”。以下是如何填写这个复杂的表格。

  • 连接名称:选择一个名称(我建议<project name>-serviceconnection
  • 环境:AzureCloud
  • 范围级别:订阅
  • 订阅 ID:从您的订阅资源中获取(见截图)
  • 订阅名称:从您的订阅资源中获取
  • 服务主体客户端 ID:应用注册的应用程序(客户端)ID
  • 服务主体密钥:在应用程序注册页面中,转到证书和机密。
    • 创建一个秘密并复制秘密值。Never 的到期日期很好。
    • 不要存储这个字符串;你总是可以创建一个新的。
  • Tenant ID:应用注册的目录(租户)ID
  • 允许所有管道使用此连接复选框:打开此连接进行测试;您可以稍后更改它。

订阅

应用注册

应用注册秘籍

单击“验证连接”。它应该以绿色显示“已验证”。如果连接失败并且您确定已按照所有步骤操作,请等待 10 分钟,然后重试。确认无误后点击确定即可。

已验证

要使用服务连接,请在管道任务的正确字段中引用您之前为其指定的连接名称。当您第一次尝试运行管道时,构建屏幕可能会显示一条消息,指出连接未经授权。

构建页面

点击“授权资源”。您可以在服务连接的安全页面中看到授权的管道。通过队列按钮手动运行构建。

现在您可以在管道中使用服务连接。这是一个关于部署 Node.js 项目的教程。

作为参考,这是有关服务连接的文档