搜索

8.5. 构建策略选项

download PDF

8.5.1. Source-to-Image 策略选项

以下选项特定于 S2I 构建策略

8.5.1.1. 强制 Pull

默认情况下,如果构建配置中指定的构建器镜像在节点上本地可用,则将使用该镜像。但是,要覆盖本地镜像并从镜像流指向的 registry 中刷新它,请创建一个 BuildConfig,将 forcePull 标志设为 true

strategy:
  sourceStrategy:
    from:
      kind: "ImageStreamTag"
      name: "builder-image:latest" 1
    forcePull: true 2
1
使用的构建器镜像,其中节点上的本地版本可能不与镜像流指向的 registry 中的版本保持同步。
2
此标志会导致本地构建器镜像被忽略,并从镜像流指向的 registry 中拉取新版本。将 forcePull 设置为 false 将导致默认行为是遵守本地存储的镜像。

8.5.1.2. 增量构建

S2I 可以执行增量构建,也就是能够重复利用过去构建的镜像中的工件。要创建增量构建,请创建 BuildConfig 并对策略定义进行以下修改:

strategy:
  sourceStrategy:
    from:
      kind: "ImageStreamTag"
      name: "incremental-image:latest" 1
    incremental: true 2
1
指定支持增量构建的镜像。请参考构建器镜像的文档,以确定它是否支持此行为。
2
此标志(flag)控制是否尝试增量构建。如果构建器镜像不支持增量构建,则构建仍将成功,但您会收到一条日志消息,指出增量构建因为缺少 save-artifacts 脚本而未能成功。
注意

有关如何创建支持增量构建的构建器镜像的信息,请参阅 S2I 要求 主题。

8.5.1.3. 覆盖构建器镜像脚本

您可以通过以下两种方式之一覆盖构建器镜像提供的 assemblerunsave-artifacts S2I 脚本。任一:

  1. 在应用程序源存储库的 .s2i/bin 目录中提供 assemblerun、和/或 save-artifacts 脚本,或者
  2. 提供包含脚本的目录的 URL,作为策略定义的一部分。例如:
strategy:
  sourceStrategy:
    from:
      kind: "ImageStreamTag"
      name: "builder-image:latest"
    scripts: "http://somehost.com/scripts_directory" 1
1
此路径会将 runassemblesave-artifacts 附加到其中。如果找到任何或所有脚本,将使用它们代替镜像中提供的同名脚本。
注意

位于 scripts URL 的文件优先于源存储库的 .s2i/bin 中的文件。有关如何使用 S2I 脚本的信息,请参阅 S2I 要求主题和 S2I 文档

8.5.1.4. 环境变量

可以通过两种方式将环境变量提供给源构建过程和生成的镜像。环境文件BuildConfig 环境 值。提供的变量将存在于构建过程和输出镜像中。

8.5.1.4.1. 环境文件

利用源代码构建,您可以在应用程序内设置环境值(每行一个),方法是在源存储库中的 .s2i/environment 文件中指定它们。此文件中指定的环境变量存在于构建过程和输出镜像。各个镜像的文档中有完整的支持环境变量列表。

如果在源存储库中提供 .s2i/environment 文件,则 S2I 会在构建期间读取此文件。这允许自定义构建行为,因为 assembe 脚本可能会使用这些变量。

例如,如果要禁用 Rails 应用程序的资产编译,您可以在 .s2i/environment 文件中添加 DISABLE_ASSET_COMPILATION=true,这样就可以在构建期间跳过资产编译。

除了构建之外,指定的环境变量也可以在运行的应用程序本身中使用。例如,您可以在 .s2i/environment 文件中添加 RAILS_ENV=development,使 Rails 应用程序以 开发模式 而非 生产 模式启动。

8.5.1.4.2. BuildConfig Environment

您可以在 BuildConfigsourceStrategy 定义中添加环境变量。这里定义的环境变量可在 assemble 脚本执行期间看到,也会在输出镜像中定义,使它们能够供 run 脚本和应用程序代码使用。

例如,禁用 Rails 应用程序的资产编译:

sourceStrategy:
...
  env:
    - name: "DISABLE_ASSET_COMPILATION"
      value: "true"

构建环境部分提供了更多高级指导。

您还可以使用 oc set env 命令管理 BuildConfig 中定义的环境变量。

8.5.1.5. 通过 Web 控制台添加 Secret

在构建配置中添加 secret 使其能访问私有存储库:

  1. 创建一个新的 OpenShift Container Platform 项目。
  2. 创建一个包含用于访问私有源代码存储库的凭证的 secret
  3. 创建 Source-to-Image(S2I)构建配置
  4. 在构建配置编辑器页面上或在 Web 控制台create app from builder image 页面中,设置 Source Secret
  5. Save 按钮。
8.5.1.5.1. 启用拉取和推送

通过在构建配置中设置 Pull Secret 来启用拉取到私有 registry,并通过设置 Push Secret 来启用推送。

8.5.1.6. 忽略源文件

Source-to-Image 支持 .s2iignore 文件,该文件包含了需要被忽略的文件列表。构建工作目录中的文件(由各种 输入源 提供)与 .s2iignore 文件中提供的模式匹配,将不会提供给 assemble 脚本使用。

如需有关 .s2iignore 文件格式的更多详细信息,请参阅 Source-to-image 文档

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.