Semaphore v2.17 为基础设施自动化与 DevOps 团队带来全新功能与改进。本次发布重点提升开发者体验,并简化基础设施即代码(IaC)工作流。

主要功能概览

功能

TOTP 应用中的自定义发行者名称

Semaphore v2.17 引入了一个新选项,允许自定义在 TOTP(基于时间的一次性密码)验证器应用中显示的发行者名称。

目的:
发行者名称帮助用户在验证器应用中识别哪个帐户属于 Semaphore,尤其在管理来自多个组织或环境的帐户时非常有用。

配置方法:

你可以通过两种方式设置发行者名称:

  1. 环境变量

    在启动 Semaphore 时,将环境变量 SEMAPHORE_TOTP_ISSUER 设置为你希望的发行者名称。

    示例(Docker Compose):

    environment:
      - SEMAPHORE_TOTP_ISSUER=MyCompany Semaphore
    

    示例(独立运行):

    SEMAPHORE_TOTP_ISSUER="MyCompany Semaphore" ./semaphore server
    
  2. 配置文件

    在你的 config.json 文件中,在 auth 部分设置如下选项:

    {
      "auth": {
        "totp": {
          "issuer": "MyCompany Semaphore"
        }
      }
    }
    

优先级:
如果同时设置了环境变量和配置文件中的选项,以环境变量(SEMAPHORE_TOTP_ISSUER)为准。

默认值:
如果未设置,默认的发行者名称为 Semaphore

结果:
当用户将他们的 Semaphore TOTP 帐户添加到验证器应用时,将显示所选的发行者名称,从而更容易区分多个帐户。

有关所有可用环境变量的完整说明,请参阅 安装环境变量文档

一次性计划任务

Semaphore 现在支持除 cron 计划之外的一次性计划。当你需要在特定的日期和时间运行某个任务且只执行一次时使用此功能。

使用场景:

可自定义视图

模板视图现在更可定制,允许你根据工作流更好地调整展示内容和组织方式。

  1. 现在你可以将 All 标签移动到栏中的任意位置。

  2. 你可以将 All 标签对普通项目用户完全隐藏。

  3. 你可以为某个视图更改默认的模板排序方式。

典型改进包括:

停止所有任务

现在你可以通过单一操作停止某个模板下所有正在运行的任务。这有助于快速中止发布或取消误启动的作业。

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_FILESEMAPHORE_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 实例进行协作,避免相互冲突。

所有实例都连接到同一套两种后端:

{
  "ha": {
    "enabled": true,
    "node_id": "node1",
    "redis": {
      "addr": "localhost:6379"
    }
  }
}

改进的日志记录

日志记录已增强,提供更多上下文和清晰度,帮助你排查失败原因并理解运行过程中发生了什么。

通过环境变量提供订阅密钥(PRO)

PRO 订阅密钥现在可以通过环境变量提供,这对容器化部署和 CI/CD 驱动的发布非常有用。