9.9. 构建和自动化


本节概述了在 Red Hat Quay 中管理自动构建的配置选项。这些设置控制如何触发、处理和存储 Dockerfile 构建,以及管理和访问构建日志的方式。

您可以使用这些字段来:

  • 启用或禁用源存储库中的自动构建。
  • 配置构建管理器的行为和资源管理。
  • 控制对构建日志的访问,并保留构建日志,以满足审核或调试的目的。

这些选项可帮助您简化 CI/CD 管道,强制执行构建策略,并保持对 registry 中的构建历史记录的可见性。

其他资源

9.9.1. Dockerfile 构建触发器字段

本节介绍了用于从 Dockerfile 和源代码存储库中在 Red Hat Quay 中启用和管理自动构建的配置字段。这些字段允许您定义构建行为,启用或禁用 GitHub、GitLab 和 Bitbucket 触发器的支持,并为每个 SCM 提供程序提供 OAuth 凭证和端点。

表 9.32. Dockerfile 构建支持
字段类型描述

FEATURE_BUILD_SUPPORT

布尔值

是否支持 Dockerfile 构建。

Default: False

SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD

Number

如果没有设置 None,则自动禁用构建触发器前可能会出现的连续失败数量。

默认 :100

SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD

Number

如果没有设置 None,则会自动禁用构建触发器前出现的连续内部错误数量

默认: 5

Dockerfile 构建支持示例 YAML

# ...
FEATURE_BUILD_SUPPORT: true
SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD: 100
SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD: 5
# ...
Copy to Clipboard

表 9.33. GitHub 构建触发器
字段类型描述

FEATURE_GITHUB_BUILD

布尔值

是否支持 GitHub 构建触发器。

默认: False

GITHUB_TRIGGER_CONFIG

对象

使用 GitHub Enterprise 进行构建触发器的配置。

   .GITHUB_ENDPOINT
(Required)

字符串

GitHub Enterprise 的端点。

示例: https://github.com/

   .API_ENDPOINT

字符串

要使用的 GitHub Enterprise API 的端点。对于 github.com 必须被覆盖。

,例如:https://api.github.com/

   .CLIENT_ID
   (Required)

字符串

此 Red Hat Quay 实例的注册客户端 ID;这不能与 GITHUB_LOGIN_CONFIG 共享。

   .CLIENT_SECRET
(Required)

字符串

此 Red Hat Quay 实例的注册客户端 secret。

GitHub 构建触发器 YAML 示例

# ...
FEATURE_GITHUB_BUILD: true
GITHUB_TRIGGER_CONFIG:
  GITHUB_ENDPOINT: https://github.com/
  API_ENDPOINT: https://api.github.com/
  CLIENT_ID: your-client-id
  CLIENT_SECRET: your-client-secret
# ...
Copy to Clipboard

表 9.34. Bitbucket 构建触发器
字段类型描述

FEATURE_BITBUCKET_BUILD

布尔值

是否支持 Bitbucket 构建触发器。

默认: False

BITBUCKET_TRIGGER_CONFIG

对象

将 BitBucket 用于构建触发器的配置。

   .CONSUMER_KEY
(Required)

字符串

此 Red Hat Quay 实例注册的消费者密钥(客户端 ID)。

   .CONSUMER_SECRET
   (Required)

字符串

此 Red Hat Quay 实例注册的消费者 secret (客户端 secret)。

Bitbucket 构建会触发 YAML 示例

# ...
FEATURE_BITBUCKET_BUILD: true
BITBUCKET_TRIGGER_CONFIG:
  CONSUMER_KEY: <your_consumer_key>
  CONSUMER_SECRET: <your-consumer-secret>
# ...
Copy to Clipboard

表 9.35. GitLab 构建触发器
字段类型描述

FEATURE_GITLAB_BUILD

布尔值

是否支持 GitLab 构建触发器。

默认: False

GITLAB_TRIGGER_CONFIG

对象

使用 Gitlab 进行构建触发器的配置。

   .GITLAB_ENDPOINT
(Required)

字符串

运行 Gitlab Enterprise 的端点。

   .CLIENT_ID
   (Required)

字符串

此 Red Hat Quay 实例的注册客户端 ID。

   .CLIENT_SECRET
(Required)

字符串

此 Red Hat Quay 实例的注册客户端 secret。

GitLab 构建会触发 YAML 示例

# ...
FEATURE_GITLAB_BUILD: true
GITLAB_TRIGGER_CONFIG:
  GITLAB_ENDPOINT: https://gitlab.example.com/
  CLIENT_ID: <your_gitlab_client_id>
  CLIENT_SECRET: <your_gitlab_client_secret>
# ...
Copy to Clipboard

9.9.2. 构建管理器配置字段

以下配置字段控制 Red Hat Quay 的构建管理器组件如何编配和管理容器镜像构建。这包括 Redis coordination、executor 后端(如 Kubernetes 或 EC2、构建器镜像配置和高级调度和重试策略)的设置。

必须配置这些字段,以符合您的基础架构环境和工作负载要求。

表 9.36. 构建管理器配置字段
字段类型描述

ALLOWED_WORKER_COUNT

字符串

定义每个 Red Hat Quay pod 实例化多少个 Build Workers。通常设置为 1

ORCHESTRATOR_PREFIX

字符串

定义要添加到所有 Redis 密钥的唯一前缀。这可用于将 Orchestrator 值与其他 Redis 键隔离。

REDIS_HOST

对象

Redis 服务的主机名。

REDIS_PASSWORD

字符串

要在 Redis 服务中进行身份验证的密码。

REDIS_SSL

布尔值

定义 Redis 连接是否使用 SSL/TLS。

REDIS_SKIP_KEYSPACE_EVENT_SETUP

布尔值

默认情况下,Red Hat Quay 不会在运行时设置密钥事件所需的 keyspace 事件。为此,请将 REDIS_SKIP_KEYSPACE_EVENT_SETUP 设置为 false

EXECUTOR

字符串

启动此类型的可执行文件的定义。有效值为 kubernetesec2

BUILDER_NAMESPACE

字符串

将在其中进行 Red Hat Quay 构建的 Kubernetes 命名空间。

K8S_API_SERVER

对象

构建将在其中进行的 OpenShift Container Platform 集群的 API 服务器的主机名。

K8S_API_TLS_CA

对象

构建集群 CA 证书的 Quay 容器中文件路径,供 Quay 应用在发出 API 调用时信任。

KUBERNETES_DISTRIBUTION

字符串

指明正在使用的 Kubernetes 类型。有效值为 openshiftk8s

CONTAINER_*

对象

定义每个构建 Pod 的资源请求和限值。

NODE_SELECTOR_*

对象

定义应调度 构建 Pod 的节点选择器标签 name-value 对。

CONTAINER_RUNTIME

对象

指定 Builder 是否应该运行 dockerpodman。使用红帽 quay-builder 镜像的客户应将其设置为 podman

SERVICE_ACCOUNT_NAME/SERVICE_ACCOUNT_TOKEN

对象

定义 构建 Pod 将使用的服务帐户名称或令牌。

QUAY_USERNAME/QUAY_PASSWORD

对象

定义拉取在 WORKER_IMAGE 字段中指定的 Red Hat Quay 构建 worker 镜像所需的 registry 凭证。客户应提供一个 Red Hat Service Account 凭证,如 https://access.redhat.com/RegistryAuthentication 文章中的针对 registry.redhat.io 的"创建 Registry 服务账户"部分。

WORKER_IMAGE

对象

Red Hat Quay Builder 镜像的镜像引用。registry.redhat.io/quay/quay-builder

WORKER_TAG

对象

Builder 镜像标签。最新版本为 3.14。

BUILDER_VM_CONTAINER_IMAGE

对象

对包含运行每个 Red Hat Quay Build. (registry.redhat.io/quay/quay-builder-qemu-rhcos:3.14)所需的内部虚拟机的完整引用。

SETUP_TIME

字符串

指定构建尚未通过 Build Manager 注册自己时超时的秒数。默认值为 500 秒。尝试重启三次的构建。如果构建在三次尝试失败后没有注册自己,则被视为失败。

MINIMUM_RETRY_THRESHOLD

字符串

此设置用于多个可执行文件。它指示在选择其他可执行文件前尝试启动构建的次数。设置为 0 表示构建作业需要有多少个尝试。这个值应该被有意保持小(三个或更少),以确保在基础架构故障期间快速发生故障切换。您必须为此设置指定一个值。例如,Kubernetes 设置为第一个 executor,EC2 设为第二个 executor。如果您希望最后一次尝试运行作业在 EC2 上,而不是 Kubernetes,您可以将 Kubernetes executor 的 MINIMUM_RETRY_THRESHOLD 设置为 1,EC2 的 MINIMUM_RETRY_THRESHOLD 设置为 0 (如果没有设置,则默认为 0 )。在这种情况下,Kubernetes 的 MINIMUM_RETRY_THRESHOLD retries_remaining (1) 将评估为 False,因此回退到配置的第二个 executor。

SSH_AUTHORIZED_KEYS

对象

ignition 配置中 bootstrap 的 SSH 密钥列表。这允许使用其他密钥 SSH 到 EC2 实例或 QEMU 虚拟机(VM)。

构建管理器配置字段

# ...
ALLOWED_WORKER_COUNT: "1"
ORCHESTRATOR_PREFIX: "quaybuild:"
REDIS_HOST: redis.example.com
REDIS_PASSWORD: examplepassword
REDIS_SSL: true
REDIS_SKIP_KEYSPACE_EVENT_SETUP: false
EXECUTOR: kubernetes
BUILDER_NAMESPACE: quay-builder
K8S_API_SERVER: https://api.openshift.example.com:6443
K8S_API_TLS_CA: /etc/ssl/certs/ca.crt
KUBERNETES_DISTRIBUTION: openshift
CONTAINER_RUNTIME: podman
CONTAINER_MEMORY_LIMITS: 2Gi
NODE_SELECTOR_ROLE: quay-build-node
SERVICE_ACCOUNT_NAME: quay-builder-sa
QUAY_USERNAME: quayuser
QUAY_PASSWORD: quaypassword
WORKER_IMAGE: quay.io/quay/quay-builder
WORKER_TAG: latest
BUILDER_VM_CONTAINER_IMAGE: quay.io/quay/vm-builder:latest
SETUP_TIME: "500"
MINIMUM_RETRY_THRESHOLD: "1"
SSH_AUTHORIZED_KEYS:
  - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAsomekey user@example.com
  - ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnotherkey user2@example.com
# ...
Copy to Clipboard

9.9.3. 构建日志配置字段

本节论述了在 Red Hat Quay 中管理构建日志的可用配置字段。这些设置决定了构建日志的存档、可以访问它们的位置,以及它们的存储方式。

表 9.37. 构建日志配置字段
字段类型描述

FEATURE_READER_BUILD_LOGS

布尔值

如果设置为 true,则构建日志可以被有权访问存储库的 用户读取,而不只是 写入访问权限admin 访问权限。

默认: False

LOG_ARCHIVE_LOCATION

字符串

存储位置,在 DISTRIBUTED_STORAGE_CONFIG 中定义的,用于放置归档的构建日志。

示例: s3_us_east

LOG_ARCHIVE_PATH

字符串

配置的存储引擎下的路径,其中将归档的构建日志放在 .JSON 格式。

示例: archive /buildlogs

构建日志示例 YAML

# ...
FEATURE_READER_BUILD_LOGS: true
LOG_ARCHIVE_LOCATION: s3_us_east
LOG_ARCHIVE_PATH: archives/buildlogs
# ...
Copy to Clipboard

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat