Semaphore v2.17 为基础设施自动化与 DevOps 团队带来全新功能与改进。本次发布重点提升开发者体验,并简化基础设施即代码(IaC)工作流。
主要功能概览
-
TOTP 应用中的自定义发行者名称
现在在将 Semaphore 注册到 TOTP(基于时间的一次性密码)验证器应用时,可以指定自定义的发行者名称。这能让在验证器应用中更清楚地识别 Semaphore 帐号,提升可用性——尤其适合同时管理多个 2FA 令牌的用户。
了解更多 » -
从环境变量读取密钥
现在可以将一个密钥关联到环境变量。
了解更多 » -
一次性计划任务
现在可以为特定的日期和时间安排任务(而不仅限于 cron 计划)。该任务只会运行一次。
了解更多 » -
可自定义视图
现在可以更灵活地自定义模板视图。
了解更多 » -
停止所有任务
Stop all 按钮允许你一次性停止某个模板下所有正在运行的任务。对于需要快速中止发布或取消误启动作业的场景非常有用。
了解更多 » -
Syslog 服务器支持
Semaphore 现在可以将日志发送到外部 syslog 服务器,便于集中收集日志并与现有的监控和告警流程集成。
了解更多 » -
回滚数据库迁移
现在可以回滚数据库迁移,使在必要时安全降级 Semaphore 更加容易。
了解更多 » -
对调查变量、CLI 参数等支持拖放排序
现在可以通过拖放对调查变量、CLI 参数及其它列表项进行重新排序。
了解更多 » -
通过 CLI 导出和导入项目
通过命令行导出和导入项目,以简化备份、迁移以及在不同环境间重复配置。
了解更多 » -
用于从 BoltDB 迁移到 SQLite/MySQL/Postgres 的 CLI 工具
新的 CLI 迁移工具可帮助将 Semaphore 数据从 BoltDB 迁移到 SQLite、MySQL 或 Postgres。BoltDB 正在弃用并将在 v3.0 中移除。
了解更多 » -
Devolutions Server 支持(企业版)
企业版安装现在可以将 Devolutions Server 作为密钥后端进行集成,类似于 HashiCorp Vault。
了解更多 » -
自定义角色与扩展 RBAC(企业版)
定义具备定制权限的自定义角色,以匹配组织的访问模型。
了解更多 » -
Active-active 高可用(企业版)
在负载均衡器后运行多个同时活跃的 Semaphore 实例(无主备),提升可用性。
了解更多 » -
改进的日志记录
日志现在包含更多的上下文信息。
了解更多 » -
通过环境变量提供订阅密钥(PRO)
PRO 订阅密钥现在可以通过环境变量提供,便于容器化和自动化部署。
了解更多 »
功能
TOTP 应用中的自定义发行者名称
Semaphore v2.17 引入了一个新选项,允许自定义在 TOTP(基于时间的一次性密码)验证器应用中显示的发行者名称。
目的:
发行者名称帮助用户在验证器应用中识别哪个帐户属于 Semaphore,尤其在管理来自多个组织或环境的帐户时非常有用。
配置方法:
你可以通过两种方式设置发行者名称:
-
环境变量
在启动 Semaphore 时,将环境变量
SEMAPHORE_TOTP_ISSUER设置为你希望的发行者名称。示例(Docker Compose):
environment: - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore示例(独立运行):
SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server -
配置文件
在你的
config.json文件中,在auth部分设置如下选项:{ "auth": { "totp": { "issuer": "MyCompany Semaphore" } } }
优先级:
如果同时设置了环境变量和配置文件中的选项,以环境变量(SEMAPHORE_TOTP_ISSUER)为准。
默认值:
如果未设置,默认的发行者名称为 Semaphore。
结果:
当用户将他们的 Semaphore TOTP 帐户添加到验证器应用时,将显示所选的发行者名称,从而更容易区分多个帐户。
有关所有可用环境变量的完整说明,请参阅 安装环境变量文档。
一次性计划任务
Semaphore 现在支持除 cron 计划之外的一次性计划。当你需要在特定的日期和时间运行某个任务且只执行一次时使用此功能。
使用场景:
- 在经过审批的变更窗口中运行维护任务
- 启动一次性的发布或回填作业
可自定义视图
模板视图现在更可定制,允许你根据工作流更好地调整展示内容和组织方式。
-
现在你可以将 All 标签移动到栏中的任意位置。
-
你可以将 All 标签对普通项目用户完全隐藏。
-
你可以为某个视图更改默认的模板排序方式。
典型改进包括:
- 更好地组织与模板相关的信息
- 更灵活地安排视图内容布局
停止所有任务
现在你可以通过单一操作停止某个模板下所有正在运行的任务。这有助于快速中止发布或取消误启动的作业。
Syslog 服务器支持
Semaphore 现在可以将日志转发到外部 syslog 服务器,便于集中收集日志并与现有的监控和告警流水线集成。
config.json:
{
"syslog": {
"enabled": true,
"network": "udp",
"address": "localhost:514",
"tag": "semaphore"
}
}
环境变量:
export SEMAPHORE_SYSLOG_ENABLED=True
export SEMAPHORE_SYSLOG_NETWORK=udp
export SEMAPHORE_SYSLOG_ADDRESS=localhost:514
export SEMAPHORE_SYSLOG_TAG=semaphore
回滚数据库迁移
数据库迁移现在可以回滚。这使得在升级出现问题时更安全地恢复,并在必要时简化降级流程。
semaphore migrate --undo-to 2.16
对调查变量、CLI 参数等支持拖放排序
你现在可以通过拖放对调查变量、CLI 参数以及其他列表项进行重新排序,从而使模板更易维护和审阅。
通过 CLI 导出和导入项目
Semaphore 现在支持自动导入项目。
Docker 容器接受环境变量 SEMAPHORE_IMPORT_PROJECT_FILE 和 SEMAPHORE_IMPORT_PROJECT_NAME 来实现这一点。
如果你需要通过 CLI 导入项目,可以使用以下命令:
semaphore project import --file /path/to/the/backup.json --project-name "Demo project"
如果未提供项目名称,将使用备份元数据中的项目名称。
要从目录导入所有项目,请使用以下命令:
semaphore project import --dir /path/to/the/dir
要导出项目,可以使用以下命令:
semaphore project export --project-name "Demo project" --file /path/to/the/backup.json
如果要将所有项目导出到目录:
semaphore project export --dir /path/to/the/dir
将该命令与 cron 结合使用,你可以实现自动项目备份。
用于从 BoltDB 迁移到 SQLite/MySQL/Postgres 的 CLI 工具
新的 CLI 迁移工具可帮助你将 Semaphore 数据从 BoltDB 迁移到 SQLite、MySQL 或 Postgres。BoltDB 正在弃用并将在 v3.0 中移除。
semaphore migrate --from-boltdb /path/to/boltdb/file
Devolutions Server 支持(企业版)
企业版安装现在可以将 Devolutions Server 集成为密钥后端,类似于 HashiCorp Vault。
自定义角色与扩展 RBAC(企业版)
Semaphore UI 现在支持自定义项目级与全局角色,为任务与模板提供更细粒度的访问控制。RBAC 已扩展为在 Semaphore 资源上提供更细粒度的控制,帮助团队更精确地落实最小权限原则。
企业版用户可以定义具备定制权限的自定义角色,以匹配组织的访问需求。
项目所有者与管理者可以将这些角色分配给特定模板,并授予其运行、查看或管理任务的定向权限。
Active-active 高可用(企业版)
在标准的单节点部署中,一个 Semaphore 进程负责一切:提供 Web UI、运行计划任务、执行任务,并向浏览器推送实时更新。一旦该进程宕机,一切都会停止。
在 active-active 高可用模式下,你会在负载均衡器后运行多个完全相同的 Semaphore 实例。它们同时完全活跃——没有 “primary” 或 “standby”。任一节点都能处理任意请求、运行任意任务或触发任意调度。它们通过共享的 Redis 实例进行协作,避免相互冲突。
所有实例都连接到同一套两种后端:
- 数据库(Postgres 或 MySQL) — 所有持久化数据的唯一事实来源:项目、模板、调度、任务历史、用户等。
- Redis — 协调层。Redis 有三个用途:
- 分布式锁 — 防止两个节点运行同一件事
- Pub/Sub 消息 — 在节点之间转发实时事件
- 共享的任务队列状态 — 让所有节点看到同一队列状态
{
"ha": {
"enabled": true,
"node_id": "node1",
"redis": {
"addr": "localhost:6379"
}
}
}
改进的日志记录
日志记录已增强,提供更多上下文和清晰度,帮助你排查失败原因并理解运行过程中发生了什么。
通过环境变量提供订阅密钥(PRO)
PRO 订阅密钥现在可以通过环境变量提供,这对容器化部署和 CI/CD 驱动的发布非常有用。