9.9. 构建和自动化
本节概述了在 Red Hat Quay 中管理自动构建的配置选项。这些设置控制如何触发、处理和存储 Dockerfile 构建,以及管理和访问构建日志的方式。
您可以使用这些字段来:
- 启用或禁用源存储库中的自动构建。
- 配置构建管理器的行为和资源管理。
- 控制对构建日志的访问,并保留构建日志,以满足审核或调试的目的。
这些选项可帮助您简化 CI/CD 管道,强制执行构建策略,并保持对 registry 中的构建历史记录的可见性。
其他资源
9.9.1. Dockerfile 构建触发器字段
本节介绍了用于从 Dockerfile 和源代码存储库中在 Red Hat Quay 中启用和管理自动构建的配置字段。这些字段允许您定义构建行为,启用或禁用 GitHub、GitLab 和 Bitbucket 触发器的支持,并为每个 SCM 提供程序提供 OAuth 凭证和端点。
字段 | 类型 | 描述 |
---|---|---|
FEATURE_BUILD_SUPPORT | 布尔值 |
是否支持 Dockerfile 构建。 |
SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD | Number |
如果没有设置 |
SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD | Number |
如果没有设置 |
Dockerfile 构建支持示例 YAML
# ... FEATURE_BUILD_SUPPORT: true SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD: 100 SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD: 5 # ...
# ...
FEATURE_BUILD_SUPPORT: true
SUCCESSIVE_TRIGGER_FAILURE_DISABLE_THRESHOLD: 100
SUCCESSIVE_TRIGGER_INTERNAL_ERROR_DISABLE_THRESHOLD: 5
# ...
字段 | 类型 | 描述 |
---|---|---|
FEATURE_GITHUB_BUILD | 布尔值 |
是否支持 GitHub 构建触发器。 |
GITHUB_TRIGGER_CONFIG | 对象 | 使用 GitHub Enterprise 进行构建触发器的配置。 |
.GITHUB_ENDPOINT | 字符串 |
GitHub Enterprise 的端点。 |
.API_ENDPOINT | 字符串 |
要使用的 GitHub Enterprise API 的端点。对于 |
.CLIENT_ID | 字符串 |
此 Red Hat Quay 实例的注册客户端 ID;这不能与 |
.CLIENT_SECRET | 字符串 | 此 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 # ...
# ...
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
# ...
字段 | 类型 | 描述 |
---|---|---|
FEATURE_BITBUCKET_BUILD | 布尔值 |
是否支持 Bitbucket 构建触发器。 |
BITBUCKET_TRIGGER_CONFIG | 对象 | 将 BitBucket 用于构建触发器的配置。 |
.CONSUMER_KEY | 字符串 | 此 Red Hat Quay 实例注册的消费者密钥(客户端 ID)。 |
.CONSUMER_SECRET | 字符串 | 此 Red Hat Quay 实例注册的消费者 secret (客户端 secret)。 |
Bitbucket 构建会触发 YAML 示例
# ... FEATURE_BITBUCKET_BUILD: true BITBUCKET_TRIGGER_CONFIG: CONSUMER_KEY: <your_consumer_key> CONSUMER_SECRET: <your-consumer-secret> # ...
# ...
FEATURE_BITBUCKET_BUILD: true
BITBUCKET_TRIGGER_CONFIG:
CONSUMER_KEY: <your_consumer_key>
CONSUMER_SECRET: <your-consumer-secret>
# ...
字段 | 类型 | 描述 |
---|---|---|
FEATURE_GITLAB_BUILD | 布尔值 |
是否支持 GitLab 构建触发器。 |
GITLAB_TRIGGER_CONFIG | 对象 | 使用 Gitlab 进行构建触发器的配置。 |
.GITLAB_ENDPOINT | 字符串 | 运行 Gitlab Enterprise 的端点。 |
.CLIENT_ID | 字符串 | 此 Red Hat Quay 实例的注册客户端 ID。 |
.CLIENT_SECRET | 字符串 | 此 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> # ...
# ...
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>
# ...
9.9.2. 构建管理器配置字段
以下配置字段控制 Red Hat Quay 的构建管理器组件如何编配和管理容器镜像构建。这包括 Redis coordination、executor 后端(如 Kubernetes 或 EC2、构建器镜像配置和高级调度和重试策略)的设置。
必须配置这些字段,以符合您的基础架构环境和工作负载要求。
字段 | 类型 | 描述 |
---|---|---|
ALLOWED_WORKER_COUNT | 字符串 |
定义每个 Red Hat Quay pod 实例化多少个 Build Workers。通常设置为 |
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 事件。为此,请将 |
EXECUTOR | 字符串 |
启动此类型的可执行文件的定义。有效值为 |
BUILDER_NAMESPACE | 字符串 | 将在其中进行 Red Hat Quay 构建的 Kubernetes 命名空间。 |
K8S_API_SERVER | 对象 | 构建将在其中进行的 OpenShift Container Platform 集群的 API 服务器的主机名。 |
K8S_API_TLS_CA | 对象 |
构建集群 CA 证书的 |
KUBERNETES_DISTRIBUTION | 字符串 |
指明正在使用的 Kubernetes 类型。有效值为 |
CONTAINER_* | 对象 |
定义每个构建 Pod 的资源请求和限值。 |
NODE_SELECTOR_* | 对象 |
定义应调度 |
CONTAINER_RUNTIME | 对象 |
指定 Builder 是否应该运行 |
SERVICE_ACCOUNT_NAME/SERVICE_ACCOUNT_TOKEN | 对象 |
定义 |
QUAY_USERNAME/QUAY_PASSWORD | 对象 |
定义拉取在 |
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. ( |
SETUP_TIME | 字符串 |
指定构建尚未通过 Build Manager 注册自己时超时的秒数。默认值为 |
MINIMUM_RETRY_THRESHOLD | 字符串 |
此设置用于多个可执行文件。它指示在选择其他可执行文件前尝试启动构建的次数。设置为 |
SSH_AUTHORIZED_KEYS | 对象 |
|
构建管理器配置字段
# ... 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 # ...
# ...
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
# ...
9.9.3. 构建日志配置字段
本节论述了在 Red Hat Quay 中管理构建日志的可用配置字段。这些设置决定了构建日志的存档、可以访问它们的位置,以及它们的存储方式。
字段 | 类型 | 描述 |
---|---|---|
FEATURE_READER_BUILD_LOGS | 布尔值 |
如果设置为 true,则构建日志可以被有权访问存储库的 |
LOG_ARCHIVE_LOCATION | 字符串 |
存储位置,在 |
LOG_ARCHIVE_PATH | 字符串 |
配置的存储引擎下的路径,其中将归档的构建日志放在 |
构建日志示例 YAML
# ... FEATURE_READER_BUILD_LOGS: true LOG_ARCHIVE_LOCATION: s3_us_east LOG_ARCHIVE_PATH: archives/buildlogs # ...
# ...
FEATURE_READER_BUILD_LOGS: true
LOG_ARCHIVE_LOCATION: s3_us_east
LOG_ARCHIVE_PATH: archives/buildlogs
# ...