Semaphore v2.18 为基础设施自动化和 DevOps 团队引入了新功能和改进。本次发布着重于提升开发者体验并简化基础设施即代码工作流。

云密钥管理器集成

使用云平台的组织需要一种在运行时直接从云服务商的密钥管理服务中拉取密钥的方式,以避免凭据重复并利用现有的轮换策略。此功能新增了与 AWS Secrets Manager 和 Azure Key Vault 的原生集成,仅限 Enterprise 版本使用。

Enterprise

  • AWS Secrets Manager 集成 — 在运行时使用 IAM 角色、访问密钥或代入角色从 AWS Secrets Manager 拉取密钥。支持带字段提取的 JSON 结构化密钥以及自动轮换。(#2248)
  • Azure Key Vault 集成 — 在运行时使用托管身份或服务主体认证从 Azure Key Vault 拉取密钥。支持密钥、加密密钥和证书,并支持自动轮换。(#2248, #3170)

阅读更多…

从远程存储加载密钥

Semaphore 现在可以自动将 HashiCorp Vault、AWS Secrets Manager、Azure Key Vault 和 Devolutions Server 中的密钥导入到密钥库,并保持同步。

将密钥存储指向 HashiCorp Vault、AWS Secrets Manager、Azure Key Vault 或 Devolutions Server,然后定义一个或多个同步路径来控制导入:

  • 路径 — 从远程存储的哪个文件夹/子树导入。
  • 前缀 — 添加到每个生成的键名前面的字符串,便于对导入内容进行命名空间划分(例如 prod-)。
  • 分隔符 — 如何将嵌套的密钥位置扁平化为单个可读的键名(会按提供商应用合理的默认值)。

Semaphore 会自动检测正确的密钥类型(SSH 密钥、登录名/密码或密钥字符串)。导入可通过 立即同步 按需运行,也可以按你设置的以分钟为单位的后台计划运行。每次同步都会完整地协调镜像 —— 添加、更新和删除密钥以匹配来源 —— 同时不会影响你手动创建的密钥。在高可用部署中,计划同步只在单个节点上运行,以避免重复导入。

同步路径既可以在 密钥库 级别(共享的项目密钥)使用,也可以在 变量组 级别(环境变量)使用。

每个模板支持多个变量组

Semaphore 现在支持为每个任务模板附加多个变量组(环境)。此前只能附加一个变量组,当多个模板共享通用设置时,用户不得不在各个组之间重复变量,或者构建包含所有内容的庞大变量组。现在模板可以组合多个变量组,并且本次发布修复了变量处理中的大量 bug —— 序列化、优先级、传播以及调查变量的生命周期。

跳过 galaxy 安装

在运行 playbook 之前,Semaphore 会执行 ansible-galaxy install 步骤,以下载 requirements.yml 中声明的角色和集合。在许多环境中这一步是不必要的:依赖已经内置在 runner 镜像中、随仓库一起提交,或由内部镜像源提供。每个任务都运行它只会增加延迟 —— 而在没有互联网访问的隔离环境中,它会直接失败。

本次发布在任务模板设置中新增了 跳过 galaxy 安装 选项。启用后,Semaphore 会绕过 ansible-galaxy install 准备步骤,直接开始运行 playbook。这加快了任务启动速度,并消除了执行时对 Ansible Galaxy 和 Git 访问的硬性依赖,对于离线和预置好的 runner 尤其有用。