本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

这是尚未发布的文档。 Admission Controller 1.34-dev.

与 GitHub Actions 集成

自动化

本节描述了如何使用 GitHub Actions 来自动化任务。

项目脚手架已经包含了您所需的所有 GitHub Actions。 您可以在 .github/workflows/test.yml.github/workflows/release.yml 文件中找到这些 Actions。

您可以调整这些原则以使用不同的 CI 系统。

测试

单元测试和端到端测试的自动化功能开箱即用。 它使用在 .github/workflows/test.yml 中定义的作业。

发布

项目脚手架在 .github/workflows/release.yml 中有一个 release 作业。

该作业执行以下步骤:

  • 检出代码

  • 构建 WebAssembly 策略

  • 将策略推送到开放容器倡议 (OCI) 注册表

  • 创建新的 GitHub 发布

要启用该作业,请调整在 release.yml 文件中调用的可重用工作流 (reusable-release-policy-go.yml) 的 oci-target Action 输入。

该作业的行为根据触发其执行的提交而有所不同。

常规提交会导致创建一个名为 <policy-name>:latest 的 OCI 工件。 这些提交不会创建 GitHub 发布。

创建一个匹配 v* 模式的标签会导致:

  • 创建一个名为 <policy-name>:<tag> 的 OCI 工件。

  • 创建一个名为 Release <full tag name> 的 GitHub 发布。 该发布包括资产、策略的源代码和 WebAssembly 二进制文件。

示例

假设有一个名为 safe-labels 的策略,并且需要将其发布为 ghcr.io/kubewarden/policies/safe-labels

jobs.push-to-oci-registry.envci.yml 部分的内容应如下所示:

jobs:
  push-to-oci-registry:
    runs-on: ubuntu-latest
    env:
      WASM_BINARY_NAME: policy.wasm
      OCI_TARGET: ghcr.io/kubewarden/policies/safe-labels

推送一个名为 v0.1.0 的标签会导致创建和发布名为 ghcr.io/kubewarden/policies/safe-labels:v0.1.0 的 OCI 工件。

它会创建一个名为 Release v0.1.0 的 GitHub 发布。 该发布包括以下资产:

  • 压缩为 ziptar.gz 的源代码

  • 一个名为 policy.wasm 的文件;这是实际的 WebAssembly 策略