octopus deploy 本身不支持 cron 表达式,定时部署需通过两种方式实现:一是使用 octo cli 配合系统 crontab 调用部署命令;二是 v2021.3+ 版本内置 scheduled trigger(可视化配置,非 cron 语法)。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Octopus Deploy(注意:你提到的“Octopv0.9.20”应为笔误,实际是 Octopus Deploy v0.9.20 ——但需特别说明:Octopus Deploy 官方从未发布过 v0.9.20 版本。其首个公开稳定版为 v2.x,当前最新稳定版已超 v2023.x。v0.9.x 属于极早期未正式发布的实验性原型,无公开文档、不支持 Cron 表达式,也不具备定时触发能力。)
因此,更可能的情况是:
- 你实际使用的是 Octopus Deploy 较新版本(如 v2022.x 或 v2023.x+),想配置定时触发部署(例如:每天凌晨自动部署到预发环境);
- 或混淆了工具——把 Jenkins、GitHub Actions、Quartz、Spring Scheduler、或扣子(Coze)工作流 的 Cron 功能误记为 Octopus;
- 又或指的是 Octopus Server 配合外部调度器(如 Linux cron + octo CLI) 实现定时触发。
下面按最常见、实用且符合现状的场景说明:
Octopus Deploy 如何实现定时部署(基于 Cron)
Octopus Deploy 本身不内置 Cron 触发器,但它支持通过两种标准方式与 Cron 协同工作:
-
用 octo CLI + 系统 crontab 调用部署:在服务器上写 shell 脚本调用
octo deploy-release,再用crontab -e设置定时执行。 - 用 Octopus 内置的“Scheduled Triggers”(v2021.3+ 支持):这是官方推荐方式,无需外部 cron,界面配置即可,底层自动转换为时间调度逻辑(非 Cron 表达式,但功能等效)。
方式一:系统级 Cron + octo CLI(兼容所有版本)
适用于任何 Octopus 版本,尤其适合运维人员手动控制。步骤如下:
- 安装 octo CLI(确保版本 ≥ 8.0)
- 准备部署脚本,例如
/opt/octo/deploy-nightly.sh:
#!/bin/bash export OCTOPUS_URL="https://your-octopus.example" export OCTOPUS_API_KEY="API-YOURKEY..." /opt/octo/octo deploy-release \ --project="My Web App" \ --environment="Staging" \ --releaseNumber="latest" \ --server="$OCTOPUS_URL" \ --apiKey="$OCTOPUS_API_KEY" \ --waitfordeployment
- 赋予执行权限:
chmod +x /opt/octo/deploy-nightly.sh - 编辑 crontab:
crontab -e,添加一行(例如:每天凌晨 2:30 执行):
30 2 * * * /opt/octo/deploy-nightly.sh >> /var/log/octo-nightly.log 2>&1
方式二:Octopus 内置 Scheduled Trigger(v2021.3+ 推荐)
登录 Octopus Web Portal → 进入项目 → Triggers → Add Trigger → Scheduled Trigger。这里不填 Cron 表达式,而是用可视化表单选择:
- 执行频率:Daily / Weekly / Monthly / Custom interval
- 具体时间:选小时、分钟(支持多时段)
- 生效日期范围:可设开始/结束时间
- 关联 Release 和 Environment
→ 系统自动将其转化为可靠的时间调度任务,比手写 Cron 更安全(自动处理时区、失败重试、日志追踪)。
常见误区提醒
-
Octopus 没有“Cron 表达式输入框”:无论哪个版本,UI 或 API 均不接受
0 30 2 * * ?这类字符串作为触发配置。 -
v0.9.20 不存在:如果你看到该版本号,可能是本地构建、镜像误标,或混淆了其他工具(如 OctoPrint、OctoPi)。请运行
octopus.server --version或查看 Web 界面底部确认真实版本。 - 别在 Windows Task Scheduler 里硬套 Cron 语法:Windows 用的是“触发器→每日/每周”,不是 Cron;若需跨平台统一,坚持用 octo CLI + Linux crontab 最稳妥。











