8.5. 构建策略选项
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
8.5.1.2. 增量构建
S2I 可以执行增量构建,也就是能够重复利用过去构建的镜像中的工件。要创建增量构建,请创建 BuildConfig
并对策略定义进行以下修改:
strategy: sourceStrategy: from: kind: "ImageStreamTag" name: "incremental-image:latest" 1 incremental: true 2
有关如何创建支持增量构建的构建器镜像的信息,请参阅 S2I 要求 主题。
8.5.1.3. 覆盖构建器镜像脚本
您可以通过以下两种方式之一覆盖构建器镜像提供的 assemble、run 和 save-artifacts S2I 脚本。任一:
- 在应用程序源存储库的 .s2i/bin 目录中提供 assemble、run、和/或 save-artifacts 脚本,或者
- 提供包含脚本的目录的 URL,作为策略定义的一部分。例如:
strategy:
sourceStrategy:
from:
kind: "ImageStreamTag"
name: "builder-image:latest"
scripts: "http://somehost.com/scripts_directory" 1
- 1
- 此路径会将 run、assemble 和 save-artifacts 附加到其中。如果找到任何或所有脚本,将使用它们代替镜像中提供的同名脚本。
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
您可以在 BuildConfig
的 sourceStrategy
定义中添加环境变量。这里定义的环境变量可在 assemble 脚本执行期间看到,也会在输出镜像中定义,使它们能够供 run 脚本和应用程序代码使用。
例如,禁用 Rails 应用程序的资产编译:
sourceStrategy: ... env: - name: "DISABLE_ASSET_COMPILATION" value: "true"
构建环境部分提供了更多高级指导。
您还可以使用 oc set env
命令管理 BuildConfig
中定义的环境变量。
8.5.1.5. 通过 Web 控制台添加 Secret
在构建配置中添加 secret 使其能访问私有存储库:
- 创建一个新的 OpenShift Container Platform 项目。
- 创建一个包含用于访问私有源代码存储库的凭证的 secret。
- 创建 Source-to-Image(S2I)构建配置。
-
在构建配置编辑器页面上或在 Web 控制台的
create app from builder image
页面中,设置 Source Secret。 - 点 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 文档。