使用 Travis CI 在 IBM Power Systems 上构建开源项目

自 2019 年 11 月 13 日起,我们的 Travis CI 已经从测试版本转为生产版本!我们会继续与社区合作,将作业从当前的 travis-ci.org 站点转移到更新后的 travis-ci.com 前端,该前端现在包含对 Linux on Power (ppc64le – Little Endian) 持续集成的支持。仅支持托管在 GitHub (github.com) 上的开源项目。IBM 通过 IBM Cloud 为在 github.com 上托管的开源项目提供免费的 Power 服务器后端支持。

在本教程中,我们将介绍通过以下两种方式添加项目以在 IBM® Power Systems™ 服务器上自动构建:

  • 现有 Intel® 构建的扩展
  • 向 Travis CI 中添加一个新项目以支持 IBM Power® 构建

前提条件

要完成这些任务,我假设您已经基本熟悉 Travis CI,并且已经配置了 .travis.yml 文件。 如果您还不熟悉,可能需要先学习下面的教程: https://docs.travis-ci.com/user/tutorial/

为 Travis CI 上的现有 Intel 构建增加 Power 支持

这非常简单。首先,在项目的 .travis.yml 文件中,找到 os: linux 行。这一行会指示 Travis CI 执行 Linux® 构建。目前,默认情况下,Linux 表示 Linux on Intel。在这一行后面,添加:

arch: ppc64le

这会指示 Travis CI 将您的构建添加到 Power 构建队列。在理想情况下,这是唯一需要做的更改。注意,您也可以添加

arch: s390x

arch: amd64

以便从相同的 .travis.yml 文件中获取 Linux on IBM Z®或 Linux on AMD 构建。

向 Travis CI 添加新项目以支持 Power 构建

如果尚未使用 Travis CI,请执行以下步骤:

  1. 向 Travis CI 添加一个新项目。具体操作如下:
    1. 使用您的 GitHub 凭证 (github.com) 登录到 Travis CI 仪表板 (https://travis-ci.com)。
    2. 登录后,单击 Accounts(用户名下的下拉列表选项),然后将 GitHub 代码库与 Travis 仪表板同步。
  2. 同步完成后,注意,结果将列出已登录用户的所有 GitHub 项目。
  3. 使用左侧的切换按钮启用要进行构建的项目。项目启用后,每次完成提交都会自动触发构建。
  4. 更新针对 Power 构建的 .travis.yml 文件。 我前面已经提到过,运行构建的平台(Intel 或 Power)是由 Travis CI 上的 os 控制。

    • oslinux: 请求 Intel 构建
    • archppc64le:请求 Power 构建

这些步骤应该足以让您的作业在 Travis CI Power 服务器上运行。

如果构建失败该怎么办?

您可能会发现,您的构建环境的某些依赖项在某些方面适用于 Intel,但不适用于 Power。 如果是这样,您可能需要根据遇到的错误来确定应用程序的依赖项。

如果对 Intel 上的编译器(而非标准编译器)编码,则应用程序中可能出现类型不匹配的情况;某些类型不匹配的情况碰巧会产生好的结果,但从技术上来讲不正确。 如果是这种情况,Power 软件开发包 (SDK) 中的 Migration Advisor 可能会提供帮助。 您可以在以下位置找到有关 SDK 的信息:https://developer.ibm.com/articles/intro-to-sdk-for-lop/

在某些情况下,您的应用程序可能依赖于具有基于 Intel 的二进制文件的软件包,这些二进制文件是您从发行版或某些外部 Web 站点下载获得。 如果适用于 Intel 的发行版中包含这些软件包,那么适用于 Power 的同一发行版中也可能包含这些软件包,但您可能尚未将其下载到您的 Travis 环境中。 您可以使用名为 OSPAT 的工具来查找这些软件包。 如果发行版中包含这些软件包,该工具将向您告知。Source and other links 字段中将显示 Distribution,在这种情况下,您可以使用 apt-get installyum install 来安装软件包。

您可能会发现所需的软件包不在发行版中。 如果已将其移植到 Power 发行版中,但二进制文件不可用,则可能有容器或构建指令可用,或两者都可用。OSPAT 将在输出中指向这些说明(在 Source and other links 字段中)。 您将需要使用 wget 或等效工具来下载源代码和构建脚本,或根据需要安装容器。

在其他情况下,您可能会发现您的构建由于无法解析的符号(通常来自系统上不提供的库)而中断。 对于这种情况,您可以尝试使用新的 Library Finder 工具,该工具将无法解析的符号作为输入,然后提供库名、位置和包含库的软件包作为输出。 然后,只需在构建环境中安装该库,并在应用程序的配置文件中对其进行配置即可。

以上这些相对简单的步骤可以解决大多数错误。但是,您经常会发现您的源代码树包含的 Intel 汇编指令无法轻松迁移到 Power 上。 其中很多优化的实现也具有能够在 Power 上编译和构建的通用版本。Power 编译器(即 gcc)将在正常编译过程中应用许多优化。 这应该会让您的应用程序顺利完成构建并正常运行。即使这样,您仍可能会发现优化是应用程序中的重要组成部分,这就要求您将指令移植到 Power。 以下位置提供了 Power 指令集以供参考:https://openpowerfoundation.org/?resource_lib=power-isa-version-3-0

如果需要帮助,可尝试在 Travis CI 论坛上发帖。

通常,让项目在 Travis CI 上运行相当简单。 在 IBM 的 Travis CI 内部实例上,我们使用 Travis CI on Power 构建了 200 多个下一代项目。 我们还与社区积极合作,使他们能够在 Power(很快将在 IBM Systemz® 上)上构建项目并取得巨大成功。

本文翻译自:Build your open source projects on IBM Power Systems with Travis CI(2020-07-28)