Flashduty CLI 支持将 Atlassian Statuspage 的组件、分组、历史事件和邮件订阅者 迁移到 Flashduty 状态页。迁移分为两个独立步骤:
迁移结构与历史 — 组件、分组、历史事件(含维护记录)和通知模板
迁移邮件订阅者 — 订阅者列表及其订阅偏好
两步分离设计的原因:迁移结构时不会 向订阅者发送任何通知,您可以先检查导入的内容是否正确,再决定导入订阅者。导入的订阅者会直接变为活跃状态,无需邮件验证。
准备工作
安装 Flashduty CLI
macOS / Linux
Windows (PowerShell)
手动下载
curl -sSL https://raw.githubusercontent.com/flashcatcloud/flashduty-cli/main/install.sh | sh
irm https: // raw.githubusercontent.com / flashcatcloud / flashduty - cli / main / install.ps1 | iex
访问 GitHub Releases 下载对应平台的二进制包,解压后放入 PATH 即可。
更多安装方式请参考 CLI 文档 。
登录 Flashduty
按提示输入 APP Key。获取方式:登录 Flashduty 控制台 ,进入 个人中心 > 个人信息 ,复制 APP Key。
获取 Atlassian Statuspage API Key
登录 Atlassian Statuspage 管理面板
进入 User icon > API info ,复制 API Key
设置环境变量:
export ATLASSIAN_STATUSPAGE_API_KEY = "your_api_key_here"
获取 Atlassian Statuspage Page ID
在 Atlassian Statuspage 管理面板中,Page ID 显示在页面 URL 或页面设置中。格式类似 0db0rq26tg1l。
第一步:迁移结构与历史
此步骤会将组件、分组、历史事件(含维护记录)和通知模板迁移到 Flashduty,并自动创建一个新的 Flashduty 状态页。
flashduty statuspage migrate structure \
--from atlassian \
--source-page-id < your_atlassian_page_i d > \
--api-key " $ATLASSIAN_STATUSPAGE_API_KEY "
参数 必填 说明 --from是 迁移来源,目前仅支持 atlassian --source-page-id是 Atlassian Statuspage 的 Page ID --api-key是 Atlassian Statuspage 的 API Key --url-name否 新创建的 Flashduty 公开状态页的 URL 名称,详见下方约束说明
--url-name 仅在本次迁移创建新的目标状态页 时生效。如果同一个 --source-page-id 已经在历史迁移中映射到一个已存在的目标状态页:
省略 --url-name,或传入与已存在目标状态页完全一致 的值,迁移会复用该目标页继续执行。
传入与已存在目标页不同 的值,迁移会在预检阶段同步失败,错误信息形如 url_name only applies when creating a new target page; source page <src> is already mapped to target page <id> with url_name "<existing>", but requested "<new>"。如需更改 URL 名称,请在 Flashduty 控制台直接编辑目标状态页。
--url-name 的格式与唯一性要求:
经 MakeSlug 规范化:转换为小写、用连字符连接、长度不超过 255 个字符;纯符号或规范化后为空的输入会被拒绝,错误信息为 url_name must not be empty after normalization。
在账号下的公开状态页范围内全局唯一 ,重复时会以 url_name must be unique 拒绝。
迁移任务为异步执行,命令会立即返回一个 Job ID 。
查询迁移进度
flashduty statuspage migrate status --job-id < job_i d >
迁移按以下阶段依次执行:
任务完成后,输出中会包含新创建的 Flashduty 状态页 ID (target-page-id),请记录此 ID,后续迁移订阅者时需要用到。
验证导入结果
在进行下一步之前,建议检查导入的内容:
# 查看新状态页信息
flashduty statuspage list --id < target_page_i d >
# 查看导入的事件
flashduty statuspage changes --page-id < target_page_i d > --type incident
您也可以登录 Flashduty 控制台 在状态页管理界面中检查组件、分组和历史事件是否完整。
结构迁移可以多次执行,但不建议重复执行过多次。如果需要取消正在运行的迁移任务: flashduty statuspage migrate cancel --job-id < job_i d >
第二步:迁移邮件订阅者
确认结构和历史导入正确后,执行订阅者迁移:
flashduty statuspage migrate email-subscribers \
--from atlassian \
--source-page-id < your_atlassian_page_i d > \
--target-page-id < flashduty_page_i d > \
--api-key " $ATLASSIAN_STATUSPAGE_API_KEY "
参数 必填 说明 --from是 迁移来源,atlassian --source-page-id是 Atlassian Statuspage 的 Page ID --target-page-id是 第一步中创建的 Flashduty 状态页 ID --api-key是 Atlassian Statuspage 的 API Key
同样使用 migrate status 查询进度:
flashduty statuspage migrate status --job-id < job_i d >
导入的订阅者会直接变为活跃状态 ,无需邮件验证,导入后即可接收状态更新通知。已在 Atlassian 端被标记为隔离(quarantined)的邮箱地址会被自动跳过。
订阅者迁移可以安全地多次执行——已存在的订阅者不会被重复导入。
迁移完成后,完成最后的切换:
如果您的 Atlassian Statuspage 使用了自定义域名,将 CNAME 记录指向 Flashduty 提供的域名即可完成切换。具体配置请参考 创建与管理状态页 。
完整迁移示例
# 设置 Atlassian API Key
export ATLASSIAN_STATUSPAGE_API_KEY = "your_api_key_here"
# 1. 迁移结构与历史
flashduty statuspage migrate structure \
--from atlassian \
--source-page-id 0db0rq26tg1l \
--api-key " $ATLASSIAN_STATUSPAGE_API_KEY "
# 输出: Job ID: str_abc
# 2. 查询进度,等待完成
flashduty statuspage migrate status --job-id str_abc
# 重复执行直到 Status: completed
# 记录输出中的 target-page-id
# 3. 验证导入结果
flashduty statuspage list --id < target_page_i d >
# 4. 迁移邮件订阅者
flashduty statuspage migrate email-subscribers \
--from atlassian \
--source-page-id 0db0rq26tg1l \
--target-page-id < target_page_i d > \
--api-key " $ATLASSIAN_STATUSPAGE_API_KEY "
# 输出: Job ID: sub_xyz
# 5. 查询进度,等待完成
flashduty statuspage migrate status --job-id sub_xyz