ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

如何用Openship API+CI编写完整发布流程:自动化运维脚本实战指南

如何用Openship API+CI编写完整发布流程:自动化运维脚本实战指南 如何用Openship APICI编写完整发布流程自动化运维脚本实战指南【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openshipOpenship是一个开源的自托管部署平台Self-hosted deployment platform内置 CI/CD 能力指向一个代码仓库它就能自动构建、发布、路由并处理 TLS 证书。本文带你用Openship API CI编写一套完整的自动化发布流程从触发部署、轮询状态到失败自动回滚全部通过运维脚本实现适合新手快速上手自动化运维。一、快速了解 Openship一条命令启动部署平台Openship 支持三种运行方式本文的 CI 场景推荐自托管服务器模式团队 / 需要 push-to-deploy 时使用curl -fsSL https://get.openship.io | sh # 安装 CLI自带 API 仪表盘 openship up # 以后台服务方式安装并启动在 Linux Docker 环境下会自动进入Compose 模式一键拉起 Postgres、Redis、API、仪表盘和 OpenResty 边缘代理:80/:443并自动完成域名与 Lets Encrypt TLS。核心概念与安装细节可参考官方文档目录docs/installation.md。二、API 鉴权为 CI 脚本签发 TokenCI 脚本调用 API 的第一步是获得身份凭证。Openship 的 API 挂载在/api路径下每个路由都声明了权限标签并由安全路由器统一强制执行你可以直接阅读路由定义了解权限模型部署路由定义apps/api/src/modules/deployments/deployment.routes.tsToken 模块源码apps/api/src/modules/tokens/在 CI 中只需在仪表盘创建一枚Personal Access TokenPAT将其存入 CI 的加密变量如OPENSHIP_TOKEN脚本中通过Authorization: Bearer token头携带凭证。小贴士支持项目级作用域的 Token 更适合 CI——只授予目标项目的deployment:write权限即可权限最小化是自动化运维的安全底线。三、核心 API 端点清单发布流程的“动词”表编写发布脚本前先认识这几个关键端点前缀均为https://你的Openship地址/api用途方法 路径说明 触发部署POST /deployments传入projectId/branch/commitSha立即返回deployment_id 实时状态流GET /deployments/:id/streamSSE 推送构建进度与日志 查询构建状态GET /deployments/:id/build当前步骤、各服务状态、是否被阻塞等待决策⏸️ 处理阻塞项GET /deployments/:id/pending端口冲突等阻塞点会列出可执行动作如free_port 拉取日志GET /deployments/:id/logs构建/运行日志⏪ 回滚POST /deployments/:id/rollback回退到指定部署的镜像或提交️ 取消POST /deployments/:id/cancel取消进行中的部署 健康检查GET /api/health用于 CI 前置检查平台可用性这些端点的完整实现含 MCP 描述与权限标注见deployment.routes.ts。四、CI 发布脚本实战触发 → 轮询 → 回滚下面是一个最小但完整的生产发布脚本思路bash curl核心是三步状态机第 1 步触发部署curl -s -X POST $OPENSHIP_URL/api/deployments \ -H Authorization: Bearer $OPENSHIP_TOKEN \ -H Content-Type: application/json \ -d {projectId:项目ID,branch:main} # 响应 202{ data: { deployment_id: xxx, project_id: yyy } }第 2 步轮询直到终态每隔几秒调用GET /deployments/:id/build读取状态与pendingPrompt字段pendingPrompt非空 → 部署被阻塞如端口占用脚本可从actions[].id读出可选动作并自动应答避免人工值守状态变为成功 → 发布完成可继续执行冒烟测试状态变为失败 → 进入第 3 步。第 3 步失败自动回滚curl -s -X POST $OPENSHIP_URL/api/deployments/$GOOD_DEPLOY_ID/rollback \ -H Authorization: Bearer $OPENSHIP_TOKEN回滚会优先使用保留的历史镜像秒级生效否则从历史提交重建——这个策略可通过GET /:id/restore-plan提前查询回滚窗口实现。⚠️注意不要猜pendingPrompt的 action id务必从状态接口返回值中读取否则部署会在超时后自动放弃。CLI 也可以直接驱动同一套 API——openship api命令就像gh api一样提供任意路由的鉴权直连调试脚本时非常好用openship api /deployments -X POST -d {projectId:项目ID}实现见apps/cli/src/commands/api.ts。五、进阶让发布流程更聪明智能路由Smart Route只重建自上次部署以来发生变化的服务后端改动不会重启有状态的前端服务。CLI 侧对应--smart-route参数deploy.ts。预览环境触发部署时传environment: preview分支代码可发布到独立预览环境验证后再进生产。Webhook 通知结合 incoming-webhooks 模块部署完成后可自动推送通知到你的 IM / 邮件实现发布状态零人工查询。监控与告警发布脚本建议同时调用 health 模块 做发布前体检确认平台、边缘代理与数据库均在线再开始发布。六、总结你的第一条自动化发布流水线步骤关键动作对应能力1️⃣openship up启动自托管平台Compose 模式自动域名 TLS2️⃣仪表盘签发项目级 Token权限最小化3️⃣POST /api/deployments触发发布秒级返回部署 ID4️⃣轮询/:id/build 处理pendingPrompt无人值守自动决策5️⃣失败时POST /:id/rollback镜像秒级回滚6️⃣Webhook 推送发布结果状态同步到团队这套触发 → 观察 → 决策 → 回滚的闭环就是基于Openship API CI的完整发布流程。相比自建流水线你不需要自己维护构建机、镜像仓库和证书续期——把仓库指给它剩下的交给脚本。想深入了解架构细节可以阅读 docs/oblien-edge-routing-requirements.md 与监控指南 docs/monitoring.md。【免费下载链接】openshipSelf-hosted deployment platform项目地址: https://gitcode.com/GitHub_Trending/ope/openship创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表