TeamCity On-Premises 2024.03 Help

如何为 JetBrains Space 配置 CI/CD

JetBrains Space 是一个供软件开发团队使用的全周期协作解决方案。 这份指南解释了如何通过将 JetBrains Space 项目与 TeamCity 集成,以实现持续的集成和交付。

将 TeamCity 集成进 JetBrains Space 可为用户带来以下优势:

  • 在同一环境中编译、测试和部署项目。

  • 构建合并请求的源代码,并在成功构建后自动合并它们。

  • 详细的构建概览:差异和构件,实时详细测试报告,代码覆盖率,检查,以及各种其他指标。 构建状态和代码审查的状态在系统间进行交叉共享,以便更容易监控。

  • 灵活的管道,其中的构建彼此依赖并共享设置和结果。

  • 配置构建为代码的能力,在 Kotlin DSL 中。

  • 在两个系统中使用单一帐户进行身份验证:VCS(JetBrains Space)和 CI/CD(TeamCity)。

这份指南包含了集成每个组件所需的常见 预设设置 和可选流程。

前提条件

要执行本指南中描述的所有步骤,您需要具备:

  • 项目管理权限 在您的组织的 JetBrains Space 实例中。

  • 项目管理权限在您的组织的TeamCity Cloud 实例TeamCity On-Premises 服务器中的任何一个上。

  • 要在 TeamCity 中通过 JetBrains Space 启用身份验证,需要在 TeamCity 中具有 系统管理员权限

初步设置

您可以使用两种不同的技术将 TeamCity 连接到 JetBrains Space。 传统的方法包括两个步骤:

  1. 在您的 Space 实例中为 TeamCity 认证创建一个服务应用程序;

  2. 创建到 Space 的连接预设。

从2023.11版本开始,您可以利用半自动的 Space 连接,跳过手动设置 Space 应用程序的步骤。 反之,您应指定组织 URL(适用于 Space On-Premises)或选择所需的 Cloud 实例(适用于 Space Cloud),TeamCity 将自动创建并安装具有所有必需权限的 Space 应用程序。

这个教程解释了如何手动设置 TeamCity-Space 集成。 有关如何使用较新的半自动方法实现 Space 集成的详细说明,请参阅以下章节:配置连接,JetBrains Space

步骤1:在 JetBrains Space 中创建应用程序

在您的 JetBrains Space 实例中:

  1. 在导航栏上,点击 Extensions 并选择 Installed to organization

  2. 点击 新建应用程序

  3. 输入一个便于记忆的名称(例如, Space-to-TeamCity ),保存应用,并点击进入应用设置

  4. 配置 In-context Authorization

    1. 授权 标签页,点击 在新上下文中授权

    2. 输入您即将从 TeamCity 访问的 Space 项目的名称,然后点击 授权

    1. 可选)如果您希望 TeamCity 能够发布提交状态到 Space,您需要添加相应的权限。
      点击 配置 并启用 Git 仓库 | 报告外部检查状态。 此请求必须由项目管理员接受。

  5. 配置 全局授权

    1. Authorization 标签页上,点击 Configure

    2. 要在 TeamCity 中建立对 Space 的一般访问权限,请启用 成员 | 查看成员简介 权限,并点击 保存。 此请求必须由服务器管理员接受。

  6. 配置 Authentication Mode

    1. 返回应用程序的 概览 并打开 身份验证 标签。

    2. 启用 Client Credentials Flow

    3. 为了能够通过 Space 在 TeamCity 中进行身份验证或者/以及从 Space 仓库创建项目/配置,请同时启用 Authorization Code Flow。 输入您的 TeamCity 服务器的重定向 URI ( https://<server>:<port>/oauth/space/accessToken.html)。

    4. 复制应用程序的 Client IDClient secret。 您将需要它们来进行 TeamCity 端的配置。

现在,您可以返回到 TeamCity 并添加一个到 JetBrains Space 的连接。

步骤2:建立与 JetBrains Space 的连接

要创建与您的 JetBrains Space 实例的连接:

  1. 前往 Project Settings | Connections,然后点击 Add Сonnection

  2. 选择 JetBrains Space 连接类型。

    创建到 Space 的连接
  3. 按照以下设置进行输入:

    • Space URL:您的 Space 实例的 URL ( <company_name>.jetbrains.space)。

    • Client ID:从 Space 应用的 Authentication 标签页复制的客户端 ID 值。

    • 客户端密钥:从 Space 应用的认证标签页复制的客户端密钥值。

  4. 保存连接。

在这个阶段,您可以根据需要从当前项目或其任何子项目中访问您的 JetBrains Space 实例。

将 TeamCity 项目与 JetBrains Space 项目连接

有三种方法可以将 VCS 仓库与 TeamCity 集成:

  • 基于仓库创建一个 TeamCity 项目

  • 在现有的 TeamCity 项目中,基于仓库创建一个 构建配置

  • 在现有的 TeamCity 项目中,基于一个仓库创建一个 VCS root

我们将描述第一种方法,因为它最受欢迎且自给自足。 然而,您总是可以在现有项目中添加一个更多的 Space rootbuild configuration—— 此过程相似。

让我们创建一个子项目,即您在进行 初步设置 期间添加了 Space 连接的项目的子项目。 如果是 Root project,请转到 Administration | Projects,然后点击 Create project

您会注意到新的按钮:From JetBrains Space。 它的名称取决于您给连接的 显示名称,但您总是可以通过 Space 徽标来区分 Space 连接和其他连接。 创建新的项目:

  1. 点击 From JetBrains Space

  2. 由于这是您首次将此服务器连接到您的 Space 实例,您必须通过您的用户资料在 Space 中进行身份验证。 点击 登录 Space 并接受访问请求。 下次,除非您退出登录或更改密码,否则无需再次确认。

    从 Space 仓库中创建一个项目

  3. 项目创建向导将显示您的用户可以访问的所有 Space 项目的列表。 选择一个仓库,等待 TeamCity 验证连接设置。

  4. 现在是时候配置新项目的主要设置和它的 VCS root 了。 您随时都可以进行调整。

    • 项目名称以及其首个构建配置的名称。

    • VCS 根:(只读)与您在步骤 3 中选择的存储库的 URL 匹配。

    • 默认分支refs/heads/main ,或者您选择的其他分支。 请记住保留 refs/heads ,只更改分支名称。

    • 分支规范:如果您想要在默认分支之外的其他分支上运行构建,此设置允许扩大 VCS 根的监控范围以覆盖这些分支。 TeamCity 使用一种 特殊格式或分支规格规则 进行此操作。 要监控整个存储库,请使用 refs/heads/* 规则。

      配置项目设置
  5. 点击 Proceed

TeamCity 将尝试在您的项目中 自动检测构建步骤。 您可以确认或拒绝建议的步骤,并进一步探索项目设置。

如果您像我们刚才所做的那样自动从仓库创建一个项目,TeamCity 会自动添加一个 VCS 触发器。 这个触发器将监视您的 Space 仓库,并在每个新的提交上运行构建。 您可以编辑其设置或添加其他类型的触发器

TeamCity 在 概览 标签页上显示了进入构建的提交。 点击位于提交对面的 Space 图标以在 JetBrains Space 中打开其详细信息:

创建到 Space 的连接

如果提交中提到了 Space 代码审查标签(例如, JETBRAINS-DEMO-CR-3 )或 Space 合并请求标签,您可以点击该标签,直接跳转到 Space 中相应的代码审查或合并请求。 特别的是,来自 Space 的合并提交始终会附带一个链接,返回到相应的合并请求。

在进行了这些基本设置之后,您可以按照下面的指示进一步开展 Space 集成,或者学习如何创建更复杂的构建配置并充分利用 TeamCity 的强大功能。

从合并请求中构建源代码

构建的检出范围通常包括以下项目:默认分支的 VCS 根 + 项目的 分支规格 + 构建配置的 检出规则。 通过在此构建配置中添加 Pull Request 构建功能,您可以在这个公式中添加一个项目——合并请求的分支。 这将允许 TeamCity 监控合并请求中的更改,并在其上运行构建。 这种最常见的使用情况是,在功能分支合并到默认分支之前,预先构建和预先测试源代码。

要添加此功能:

  1. 前往 Build Configuration Settings | Build Features

  2. 点击 添加构建功能 并选择 Pull Requests

  3. 选择最近创建的 VCS 根。

  4. 选择 JetBrains Space 作为 VCS 托管类型,并按照以下方式指定设置:

    • 连接:选择与 Space 的连接

    • 按目标分支:定义分支过滤器,仅在符合指定条件的分支上监控合并请求。 如果留空,将不适用任何过滤器。

  5. 保存设置。

现在,TeamCity 将会监控您仓库源分支提交的合并请求。 如果在合并请求上运行构建,TeamCity 将显示请求的详细信息,并向 Space 中的代码审查报告构建状态:

向 Space 报告构建状态

阅读更多关于 Pull Requests 构建功能的内容,请参见 此文章

如果构建成功,则自动合并请求

如果相应的构建成功完成,TeamCity 可以自动将请求合并到目标分支中。 为了实现这一点:

  1. 前往 Build Configuration Settings | Build Features

  2. 点击 添加构建功能 并选择 自动合并

  3. 指定要监控和合并的分支。

  4. 选择一个合并策略。 您可以在此处 这里 找到有关此功能高级设置的更多信息。

  5. 保存设置。

每当构建满足所选合并策略的条件时,TeamCity 将把它合并到指定的目标分支。

向 JetBrains Space 报告构建状态

TeamCity 可以将构建的状态报告到 JetBrains Space。 为了实现这一点:

  1. 前往 Build Configuration Settings | Build Features

  2. 点击 添加构建功能 并选择 提交状态发布者

  3. 选择 JetBrains Space 出版商和 连接到 Space

  4. 指定将在 Space 中为此服务显示的名称。

  5. 保存设置。

现在,每当您在此配置中运行构建时,TeamCity 将会向 JetBrains Space 报告构建状态。

在 JetBrains Space 中显示构建状态

使用 JetBrains Space 帐户在 TeamCity 中进行身份验证

您的 JetBrains Space 实例的用户可以使用他们的 Space 帐户在 TeamCity 中进行身份验证。 请注意,此功能需要在根项目级别添加 JetBrains Space connection

要进行配置:

  1. 前往 Administration | Authentication

  2. 点击 添加模块 并选择 JetBrains Space 类型。

    添加一个 JetBrains Space 认证模块
  3. 选择是否允许在首次登录时创建新用户,如果他们的电子邮件未被 TeamCity 识别。 如果您使用的是公开可用的 TeamCity 服务器并希望限制对其的访问,那么禁用此选项可能会有所帮助。

  4. 保存该模块。

要登录 TeamCity,点击 TeamCity 登录表单上方的 JetBrains Space 图标,然后在重定向后,批准 TeamCity 的请求。

使用 JetBrains Space 帐户登录 TeamCity
最后修改日期: 16日 7月 2024年