Solum/FeatureBlueprints/NewCLI
目录
新的 CLI
https://blueprints.launchpad.net/solum/+spec/new-cli
问题描述
Solum 当前的 CLI 实现不够用户友好或直观——例如,它使用 CAMP 术语,如 Assembly、Plan 等,这可能会让不熟悉这些术语的 Solum 用户感到困惑。 本规范提出了一种新的 CLI 接口设计,旨在优化直观、简单、用户体验。
提议的变更
本规范的范围是 CLI 接口重新设计的 FIRST 步将实现的内容,并非旨在成为全面的 CLI 规范。 接下来还需要一组额外的 CLI 命令和选项,本规范不涵盖所有这些。
登录
作为一名应用开发者,我希望使用我的 OpenStack 凭据从 CLI 控制台验证到 Solum。
solum login [-u USERNAME -p PASSWORD] | [-a API_KEY]
需要指定 UserName/Password 或 API_KEY 中的一个。 如果未指定其中任何一个,则 CLI 将首先尝试从环境变量中读取它们。 否则,CLI 将以交互模式提示输入 UserName/Password。 当用户在交互模式下输入密码时,控制台上的字符将被隐藏
注册应用
作为已经过 Solum 身份验证的应用开发者,我希望使用单个 CLI 命令注册我的应用。
solum app create [app_template_filename]
solum app create <--langpack <langpack>> <--giturl <url>> <--runcmd <cmd>> [--name <name>] [--services <service[,service,...]>] [--desc <name>] [--settrigger <build|deploy>] [-- custom_var_filename <filename>]
通过存储应用元数据/生成应用 URL/生成 git 触发器 URL 以及任何其他一次性应用设置操作来注册应用
先决条件:可以在登录后立即调用
当所有参数都在命令行中提供时的示例命令
solum app create --langpack JavaTomcat7 --giturl "代码仓库的 URL", --runcmd "启动应用的命令" --name MyJavaApp --services Trove --desc “我的第一个 java 应用” -testcmd "文件名路径或内联命令文本" --setgittrigger build (或 deploy) -- custom_var_filename myvars.yaml 参数可以指定在命令行上,也可以在应用模板文件中。 应用模板文件将是一个 yaml 文件,文件名+路径在命令行上明确指定。
强制参数:CLI 将交互式地提示未在初始应用创建命令中提供的强制参数。 如果未指定语言包,则交互式地显示一个可用语言包名称/ID/简短描述列表供用户选择。
可选参数:对命令行上未指定的可选参数使用默认值。
- name: *生成唯一的应用名称* - services: *默认无服务* - desc: *默认空字符串* - testcmd: *默认无* - setgittrigger: *默认“不自动设置 git 触发器”*
三种工作流(CI+Build),(CI+Build+Deploy)和(仅部署)可以在注册为应用创建命令的一部分的同一应用上触发。 这意味着工作流选择不会发生在应用注册期间,而是在响应特定的 CLI 命令时发生
- “App Build”命令触发 CI+Build 工作流 - “App Deploy”触发 CI+Build+Deploy 工作流 - “App Deploy --buildno=7865 触发仅部署工作流
app create 命令的输出:app create 返回以下输出 -
- 应用 URL:[Web 应用 URL] - 在此时,应用尚未部署,URL 尚未生效。 - (CI+build) 工作流的 Git 触发器 URL - (CI+build+deploy) 工作流的 Git 触发器 URL
用户可以选择手动使用所选触发器 URL 更新他们的 git 仓库。
构建应用
作为一名应用开发者,我希望发布单个 CLI 命令来执行集成然后构建我的应用的过程。
- solum app build <app_name>*
执行“CI+Build”工作流
从源代码开始,并生成 DU:拉取源代码、单元测试、可选地使用临时部署进行功能测试、持久化 DU
部署应用
作为一名应用开发者,我希望发布单个 CLI 命令来部署我的已注册应用并生成正在运行的应用。
- solum app deploy <appname>*
executes CI+build+deploy workflow
deploy 命令也可以用于部署预构建的工件
- solum app deploy MyJavaApp --buildno=972*
executes the "deploy only" workflow, to deploy the specified build
显示应用状态
作为一名应用开发者,我希望发布单个 CLI 命令来查看我的应用的详细信息。
- solum app show <app_name>*
Displays the current state of the app (run state + build state)
- 运行状态:running/not running [已部署构建编号=970(如果正在运行)] - 上次构建状态:success/failed/in progress [构建编号=972] - 应用 URL:[Web 应用 URL] - GitTriggerURL - 应用注册信息
列出应用
作为一名应用开发者,我希望发布单个 CLI 命令来查看所有已注册的应用及其当前状态的索引。
- solum apps list*
Outputs a list of apps for current user: for each app, show App Name, App status (running, stopped), and App URL
删除应用
作为一名应用开发者,我希望发布单个 CLI 命令来销毁与我的已注册应用相关的所有资源和工件。
- solum app delete <app_name>*
The command will delete all app registration as well as release history It will also delete all the logs associated with the app.
该命令可以选择使用 *--preservelogs* 选项调用。
创建语言包
作为一名应用开发者,我希望发布单个 CLI 命令来创建我自己的语言包并将其注册到 Solum,以便它只能被我所属的客户租户访问。
作为 Solum 的操作员,我希望发布单个 CLI 命令来创建和注册语言包,并使其可供所有客户租户使用。
- solum langpack create --name "MyTomcatLangPack" --path "语言包文件的位置" --desc "我的 tomcat 自定义语言包"*
语言包文件由一个 docker 文件和一组关联的脚本(*build.sh、test.sh、run.sh*)组成——这些文件具有众所周知的名称。 这些文件可以位于本地/网络驱动器或 URL 上。
列出语言包
作为一名应用开发者,我希望发布单个 CLI 命令来查看可供我的客户租户访问的所有语言包,包括由操作员提供的语言包以及由其他应用开发者创建并向我开放的语言包。
- solum langpacks list*
Lists all available language packs: operator defined standard packs as well as developer defined custom packs that are within the scope of the customer tenant Id
Git 体验
作为一名应用开发者,我希望查看可供我的应用使用的所有可能的触发器 URL,以便我可以手动配置我的代码仓库以响应我的代码库中的事件来触发我的代码上的特定工作流。
作为一名应用开发者,我希望 CLI 提供一个选项,以便在我将应用注册到 Solum 时设置这样的触发器,向我请求最少的凭据来访问仓库。
作为一名应用开发者,我希望 CLI 提供一个选项,以便在我的应用注册后设置这样的触发器,可能作为“solum app update”命令的一部分。
设置 git 触发器是可选的。
有两种方法可以设置基于 git 的触发器
- **手动**读取“app create”或“app show”命令报告的 Git 触发器 URL,并在我的 git 仓库中配置它们 - **指定 -settrigger** 参数到“app create”CLI 命令以自动配置它。 此参数可以取两个可能的值之一:Build 或 Deploy。 Build 将触发 (CI+Build) 工作流,Deploy 将触发 (CI+Build+CD) 工作流
帮助
作为一名应用开发者,我希望 CLI 为任何命令或部分命令发布帮助消息,包括用法示例和可用命令的摘要描述。
- solum help [command]*
- *solum help* - 将列出所有命令,以及每个命令的一行描述 - *solum help <command_name>* - 将显示命令的用法详细信息,包括示例用法