跳到主要内容

核心概念

Semaphore 只有一个核心思想:任务模板汇集了一次运行所需的一切, 运行它则产生一个任务。学会这"一切"中的每个部分在哪里配置, 基本上就学会了这个产品。

对象模型

项目承载一切

项目是隔离的单位。仓库、密钥、清单、变量组、模板和任务历史 都只属于某一个项目,团队成员关系也是如此。两个项目之间除了服务器及其用户之外不共享任何东西, 正因如此,项目才是团队、环境或客户之间恰当的边界。

资源描述输入

存在四类资源,使得同一个值可以被多个模板复用,并且只需在一个地方修改:

  • 仓库是 playbook 或脚本所在的位置。
  • 密钥库保存用于访问仓库和目标主机的 SSH 密钥、登录信息和令牌。
  • 清单列出一次运行的目标主机以及如何连接它们。
  • 变量组把变量和密钥带入运行的环境中。

模板定义运行内容

任务模板选择一种应用(Ansible、Terraform、脚本)、 一个仓库、仓库内的 playbook 或入口点,以及要使用的清单、变量组和密钥。 它还决定启动任务的人可以修改什么:调查变量 把模板变成一张表单,而提示让用户可以覆盖分支、 清单或额外参数。

任务就是运行本身

启动一个模板会创建一个任务。任务拥有自己的日志、 状态、时长以及启动者的名字,这条记录在运行结束后依然保留。任务可以从 UI、 从定时计划、从 集成 Webhook、从 API,或者从工作流中的另一个模板启动。

词汇表

术语含义
访问密钥密钥库中的一条记录:一个 SSH 密钥、一组登录名和密码,或一个令牌。它的密文部分在数据库中是加密的。
告警任务达到某种状态时发送的通知。渠道在服务器上配置,然后按项目和按模板启用。
应用模板运行的工具:Ansible、Terraform、OpenTofu、Terragrunt、Bash、PowerShell 或 Python。
构建模板一种模板类型,产生带版本的产物;每次运行都会递增版本号。
部署模板一种与构建模板关联的模板类型;启动它时会询问要发布哪个构建版本。
执行器运行器启动作业的方式:作为本地进程、在 Docker 容器中,或在 Kubernetes Pod 中。
集成一个入站 Webhook,当外部系统调用它时启动某个模板。
清单任务的目标主机,形式可以是静态文本、仓库中的文件,或动态清单脚本。
密钥库每个项目各自的访问密钥集合。
项目顶层容器:资源、模板、任务历史和团队成员关系。
角色成员在项目内可以做什么。内置角色为 Owner、Manager、Task Runner 和 Guest。
运行器一个独立的进程,代替服务器为其执行任务。
定时计划一个 cron 表达式,无需人工即可启动模板。
密钥存储诸如 HashiCorp Vault 这样的外部系统,用来保存密文值,而不是存放在 Semaphore 数据库中。
调查变量由模板定义、由用户在启动任务时填写的字段;它会成为本次运行的一个变量。
任务模板的一次执行,带有日志、状态和发起人。
任务模板关于运行什么、用什么运行的可复用定义。通常简称为"模板"。
变量组传入运行过程的一组具名变量和密钥。在旧版本和 API 中称为 Environment
视图模板列表中的一个标签页,用于对项目中的部分模板进行分组。
工作流由多个模板按顺序运行组成的图,支持分支、审批和延迟。属于 Pro 功能。

下一步

  • 快速上手 —— 按顺序把这些概念用起来。
  • 用户指南 —— 每个概念一页,涵盖所有字段。
  • 架构 —— 服务器、数据库和运行器如何组合在一起。