跳到主要内容

任务模板

任务模板(Task Template)定义要运行什么以及如何运行:应用、仓库和要执行的文件、清单、变量组、凭据,以及用户在启动任务时可以更改的选项。每个任务都是从模板创建的。

模板支持以下应用:

管理员可以启用或禁用应用(App)并添加自己的应用,参见应用。

模板列表​

Task Templates 区域列出项目(Project)的所有模板。

模板列表

列内容
Name模板名称及应用图标。play 按钮启动新任务。
Version对于构建和部署模板,显示最新的构建版本;否则显示最后一个任务的结果图标。
Status最后一个任务的状态徽章,或 Not launched。
Last Task最后一个任务的编号及启动者。
Playbook模板运行的文件。
Inventory、Variable Groups、Repository附加到模板的资源。

列表上方的选项卡是视图:即命名的模板分组。右上角的齿轮图标让你选择显示哪些列。点击行左侧的箭头可展开该模板的最新任务。

展开的模板行

模板页面​

点击模板名称可打开其页面。右上角的按钮用于启动任务(根据类型显示为 Run、Build 或 Deploy),Stop all 会停止该模板所有正在运行或排队中的任务。

选项卡内容
Tasks此模板的任务,每行都有一个 rerun 按钮。
Detailsplaybook、类型、清单(Inventory)、变量组(Variable Groups)和仓库(Repository),以及任务状态图表,其筛选条件与统计相同。
Workspaces仅限 Terraform、OpenTofu 和 Terragrunt 模板:工作区列表,参见工作区。

模板详情

模板类型​

类型用途
Task普通运行。默认类型。
Build生成制品并为其分配自动递增的版本号。
Deploy部署由构建模板生成的某个版本。

构建和部署模板以及它们传递给 playbook 的 semaphore_vars 在构建与部署模板中介绍。

模板表单​

拥有 Manager 或更高角色的用户可以通过 New Template 和铅笔图标创建和编辑模板。表单按以下分组组织。标有应用名称的字段仅对该应用显示。

通用字段​

字段说明
Name必填。模板名称。
Description可选文本,显示在名称下方。
App要运行的应用。
Repository包含 playbook 或脚本的仓库,参见仓库。
Branch要检出的 Git 分支。留空表示使用仓库中配置的分支。对 monorepo 仓库禁用,该仓库只为所有模板检出一次。
Playbook / Script filename文件相对于仓库根目录的路径。对于 Terraform 应用:包含配置的子目录。
Different working directory从仓库的另一个目录运行工具。
InventoryAnsible 清单,对于 Terraform 应用则为工作区。
Variable Groups一个或多个变量组,其变量和密钥会注入到任务中,参见变量组。
Vault password(Ansible)用于解锁 Ansible Vault 的密钥,参见多个 vault 密码。
View在哪个视图选项卡中显示该模板。
CLI args以 JSON 数组形式提供的额外命令行参数,例如 ["-vvv"]。

类型专用字段​

字段类型说明
Start VersionBuild要分配的第一个版本号,例如 1.0.0。
Build TemplateDeploy此模板所部署制品对应的构建模板。
AutorunDeploy每次构建成功后自动启动部署。

高级选项​

字段说明
Allow parallel tasks允许此模板的多个任务同时运行,参见并行任务。
Alerts、Send on success、Send on error是否为此模板的任务发送通知,以及在哪些结果下发送。通知还需要在项目设置中启用 Allow alerts for this project。
Runner tag(Pro)仅在带有此标签的运行器(Runner)上运行任务,参见项目运行器。
Executor image用于 Docker 和 Kubernetes 运行器的容器镜像,参见执行器镜像。
Issue JWT to task runner、JWT audience、JWT TTL为任务提供签名令牌,参见任务 JWT。
Auto-run task if new git commit have been found按给定的时间间隔轮询仓库,并在分支有新提交时启动任务。
Survey variables用户在启动任务时填写的输入项,参见调查变量。

提示​

提示(Prompts)是一组复选框,允许用户在 New Task 对话框中更改内置选项:分支、清单、CLI 参数,以及对于 Ansible 的 limit、tags、skip tags、调试级别和 Galaxy 安装。参见提示。

对于 monorepo 仓库,Branch 提示被禁用:此类仓库的每个模板都在同一个共享检出中运行,因此任务无法将其切换到另一个分支或提交。将鼠标悬停在被禁用的字段上可查看原因。

monorepo 仓库上的模板表单:Branch 字段和 Branch 提示均被禁用

应用选项​

  • Ansible:limit、tags、skip tags 和 Galaxy 安装选项,参见 Ansible。
  • Terraform/OpenTofu/Terragrunt:自动批准和后端覆盖,参见 Terraform/OpenTofu 和 HTTP 后端。

并行任务​

默认情况下,同一模板的任务按顺序执行。要允许同一模板并发运行,请在模板设置中启用 "Allow parallel tasks" 选项。

执行器镜像(Docker 和 Kubernetes 运行器)​

当项目运行器使用 Docker(Pro)或 Kubernetes(Enterprise)执行器时,每个任务通常在运行器上配置的默认作业镜像(例如 semaphoreui/job:latest)中运行。你可以按模板覆盖该镜像。

  1. 打开模板设置
  2. 将 Executor image 设置为容器镜像引用(例如 my-registry/ansible:2.16 或 semaphoreui/job:latest)
  3. 保存模板

行为:

  • 只有 Docker 和 Kubernetes 运行器执行器会遵循此字段;本地执行器会忽略它
  • 将字段留空则使用运行器的默认镜像,即 runner.executor.docker.image 或 runner.executor.k8s.image
  • 在 UI 中清空该字段即可移除覆盖

使用场景:

  • 需要不同工具链的模板(旧版本 Ansible、特定版本的 Terraform、内置于自定义镜像中的额外操作系统软件包)
  • 为安全敏感的模板使用隔离镜像,而无需更改运行器范围的默认值

默认镜像设置参见运行器配置,执行器设置参见项目运行器。