CLI 命令

命令说明

--interactive:布尔类型,指定 CLI 是否采用交互式,默认值为 true

--remote:字符串类型,指定 CLI 用于获取 Erda 代码仓库的 Remote 名称,默认值为 origin。在未指定 Erda 地址的情况下,若 CLI 的工作目录为 Erda 应用的代码仓库,则将根据 Remote 名称获取 Git 地址并解析出组织(Org)、项目(Project)和应用(Application)信息。

--host:字符串类型,指定 CLI 访问的 Erda 地址。CLI 本质为访问 Erda 的 OpenAPI 地址,因此若设置为 https://erda.cloud,CLI 将转换为访问 https://openapi.erda.cloud

--username:用户名,指定 CLI 访问 Erda 平台的登陆用户。

--password:密码,指定 CLI 访问 Erda 平台的登陆密码。

全部参数示意如下:

  1. Global Flags:
  2. --host string Erda host to visit (e.g. https://erda.cloud)
  3. --interactive if true, interactive with user (default true)
  4. -p, --password string Erda password to authenticate
  5. -r, --remote string the remote for Erda repo (default "origin")
  6. -u, --username string Erda username to authenticate
  7. -V, --verbose if true, enable verbose mode

erda-cli version

  1. $ erda-cli version
  2. Version: 1.4
  3. BuildTime: 2021-11-17 01:01:59
  4. GoVersion: go version go1.15.15 linux/amd64
  5. CommitID: 02583bd49fc57841bdcb05b02486e27dd868cf00
  6. DockerImage:

erda-cli clone

您可以通过 clone 命令克隆 Erda 平台上的项目。

  1. $ erda-cli clone https://erda.cloud/trial/dop/projects/599
  2. Application 'echo-service' cloning ...
  3. Application 'echo-service' cloned.
  4. Application 'echo-web' cloning ...
  5. Application 'echo-web' cloned.
  6. Project 'bestpractice' and your applications cloned.

参数说明如下:

  1. Args:
  2. url project url
  3. Flags:
  4. --cloneApps if false, don't clone applications in the project (default true)

erda-cli issue

您可以通过 issue 命令列出项目协同中的待办事项。

  1. // 进入项目空间
  2. $ cd bestpractice
  3. $ erda-cli issue
  4. ISSUEID FINISHDATE STATE ISSUENAME
  5. 298064 2022-03-31 待处理 实现公司统一单点登录
  6. 298068 2022-03-30 待处理 移动端登陆认证
  7. 298067 2022-03-28 待处理 用户身份统一认证

参数说明如下:

  1. Flags:
  2. --bug if true, list bugs
  3. --no-headers if true, don't print headers (default print headers)
  4. --page-size int the number of page size (default 10)
  5. --requirement if true, list requirements
  6. --task if true, list tasks

您可以通过 --bug 指定事项类型为缺陷,通过 --requirement 指定事项类型为需求,通过 --task 指定事项类型为任务。

erda-cli issue fix

您可以通过 issue fix 命令创建代码分支以处理项目协同中的待办事项。

  1. $ erda-cli issue fix 298067 --application echo-service --branch feature/auth
  2. [INFO] No base branch set, use branch 'master'.
  3. [INFO] Switched to a new branch 'feature/auth'
  4. [INFO] [feature/auth f7add11] init branch 'feature/auth'
  5. [INFO] remote:
  6. remote: Create a pipeline request for 'feature/auth' on Erda by visiting:
  7. remote: https://erda.cloud/trial/dop/projects/599/pipelines/list
  8. remote:
  9. To https://erda.cloud/trial/dop/bestpractice/echo-service
  10. * [new branch] feature/auth -> feature/auth
  11. Branch 'feature/auth' set up to track remote branch 'feature/auth' from 'origin'.
  12. [INFO] Branch 'feature/auth' created in application 'echo-service' to fix issue '298067'.

该命令将在应用的 echo-service 目录下创建 Git 分支 feature/auth 并提交至 Erda 代码仓库,同时在事项 298067 中添加评论,关联代码分支便于跟踪。

参数说明如下:

  1. Args:
  2. issue-id id of issue to fix
  3. Flags:
  4. --application string name of the application
  5. --base-branch string branch as base to create from
  6. --branch string branch to create and checkout

您可以通过 --application 指定创建代码分支的应用(若当前工作目录已是应用目录,可忽略),通过 --branch 指定代码分支名称,通过 --base-branch 指定基础分支(默认为 Master 分支)。

erda-cli issue open

您可以通过 issue open 命令在浏览器中打开具体事项的页面。

  1. $ erda-cli issue open 298067
  2. Open issue '298067' in browser.

参数说明如下:

  1. Args:
  2. issue-id id of issue to open

erda-cli issue close

您可以通过 issue close 命令关闭事项。

  1. $ erda-cli issue close 298067 --man-hour=2h
  2. Issue '298067' closed.

参数说明如下:

  1. Flags:
  2. --man-hour string time for work, in format of 2m/2h/2d/2w

您可以通过 --man-hour 指定使用的工时。

erda-cli mr create

您可以通过 mr create 命令创建合并请求。

  1. $ erda-cli mr create --from=feature/auth --to=master --title='auth service' --description='all auth handle by the same service'
  2. [INFO] source branch feature/auth, target branch master
  3. [INFO] Merge request created.
  4. [INFO] To https://erda.cloud/trial/dop/projects/599/apps/7097/repo/mr/open/1

参数说明如下:

  1. Flags:
  2. --application string name of the application
  3. --description string desc of merge request
  4. --from string branch contains source code
  5. --issue-id uint relate issue id
  6. --open if true, open merge request page in browser
  7. --remove if true, remove merge source branch (default true)
  8. --title string title of merge request
  9. --to string branch contains base code

您可以通过 --title 指定合并请求的标题,通过 --description 描述合并请求的内容,通过 --from 指定合并请求的源代码分支,通过 --to 指定目标代码分支,通过 --application 指定应用(若当前工作空间为应用目录,则无需指定)。

erda-cli push

您可以通过 push 命令将应用推送至 Erda 平台。

  1. $ erda-cli push https://erda.cloud/trial/dop/projects/599 --application new-app
  2. Application 'new-app' pushed.
  3. Project 'bestpractice' pushed to server https://openapi.erda.cloud.

参数说明如下:

  1. Args:
  2. url project url
  3. Flags:
  4. --all if true, push all applications
  5. --application strings applications to push
  6. --configfile string config file contains applications
  7. --force if true, git push with --force flag
  8. -h, --help help for push

erda-cli create

您可以通过 create 命令在 Erda 上创建项目。

  1. $ erda-cli create --host https://erda.cloud --org erda -n demo-project -d 'demo project' --init-package project_package_20220310194452.zip
  2. Enter your erda username: <Your Username>
  3. Enter your erda password: <Your Password>
  4. Devops project demo-project creating...
  5. Devops project demo-project created.
  6. Msp tenant demo-project creating...
  7. Msp tenant demo-project created.
  8. Project package importing...
  9. Project package importing...
  10. Project package imported.
  11. Project 'demo-project' created.

参数说明如下:

  1. Flags:
  2. -d, --description string description of the project
  3. --init-package string package for init the project
  4. -n, --name string the name of the project
  5. --org string the name of an organization
  6. --wait-import int minutes wait for package to be import (default 1)

erda-cli build

您可以通过 build 命令构建 Erda 上的应用。

  1. $ erda-cli build <path-to/pipeline.yml> --host=https://erda.cloud -u 'YourName' -p 'YourPassword'
  2. building for branch: feature/echo-web, pipelineID: 12639533, you can view building status via `erda-cli status -i <pipelineID>`

参数说明如下:

  1. Flags:
  2. --branch string branch to create pipeline, default is current branch
  3. -h, --help help for build
  4. -w, --watch watch the status

--watch 可持续观察应用的构建过程。

erda-cli view

您可以通过 view 命令构建 Erda 上的应用。

  1. $ erda-cli view -i 12639533
  2. Stage 0
  3. Success task: git-checkout
  4. Stage 1
  5. Success task: java
  6. Stage 2
  7. Success task: release
  8. Stage 3
  9. Run task: dice
  10. Success task: dice
  11. build succ, time elapsed: 00:02:15
  12. Pipeline progress (current/total): 4/4
  13. PIPELINEID TASKID TASKNAME TASKSTATUS STARTEDAT
  14. 12918029 10940839 git-checkout Success 2021-12-20 15:46:09
  15. 12918029 10940840 java Success 2021-12-20 15:46:35
  16. 12918029 10940854 release Success 2021-12-20 15:46:53
  17. 12918029 10940877 dice Success 2021-12-20 15:46:58

参数说明如下:

  1. Flags:
  2. -b, --branch string specify branch to show pipeline status, default is current branch
  3. -h, --help help for view
  4. -i, --pipelineID uint specify pipeline id to show pipeline status
  5. -w, --watch watch the status

erda-cli ext

您可以通过 ext 命令罗列 Erda 上所有的 Extension。

  1. erda-cli ext --host=https://erda.cloud -u 'YourName' -p 'YourPassword'
  2. ID TYPE CATEGORY PUBLIC UPDATED_AT
  3. canal addon database true 2021-11-18 01:12:56
  4. consul addon distributed_cooperation true 2021-11-18 01:12:56
  5. terminus-elasticsearch addon search true 2021-11-18 01:13:17
  6. kafka addon message true 2021-11-18 01:12:57

erda-cli ext pull

您可以通过 ext pull 命令获取 Erda 上的 Extension。

  1. $ erda-cli ext pull --host=https://erda.cloud -u 'YourName' -p 'YourPassword' git-checkout@1.0 -o git-checkout
  2. extension pull success

参数说明如下:

  1. Flags:
  2. -o, --output string which directory to export to

erda-cli ext push

您可以通过 ext push 命令更新 Erda 上的 Extension。该操作需由平台管理员执行。

  1. $ erda-cli ext push --host=https://erda.cloud -u 'YourName' -p 'YourPassword' -d git-checkout
  2. extension git-checkout push success

参数说明如下:

  1. Flags:
  2. -a, --all override exist extension and version,must with -f
  3. -d, --dir string extension dir
  4. -f, --force override exist version
  5. -r, --registry string new registry

erda-cli migrate

您可以通过 migrate 命令管理 MySQL 数据库中的数据变更。

  1. $ erda-cli migrate -h
  2. erda-cli migrate --mysql-host localhost --mysql-username root --mysql-password my_password --database erda
  3. Usage:
  4. erda-cli migrate [flags]
  5. erda-cli migrate [command]
  6. Examples:
  7. $ erda-cli migrate --mysql-host localhost --mysql-username root --mysql-password my_password --database erda
  8. Available Commands:
  9. lint Erda MySQL Migration lint
  10. mkpy make a python migration script pattern
  11. record manually insert the migration record
  12. Flags:
  13. --database string [MySQL] database to use. env: ERDA_MYSQL_DATABASE
  14. --debug-sql [Migrate] print SQLs
  15. -h, --help help for migrate
  16. --lint-config string [Lint] Erda MySQL Lint config file
  17. --modules strings [Lint] the modules for migrating
  18. --mysql-host string [MySQL] connect to host. env: ERDA_MYSQL_HOST
  19. --mysql-password string [MySQL] password to use then connecting to server. env: ERDA_MYSQL_PASSWORD
  20. --mysql-port int [MySQL] port number to use for connection. env: ERDA_MYSQL_PORT (default 3306)
  21. --mysql-username string [MySQl] user for login. env: ERDA_MYSQL_USERNAME
  22. --output string [Migrate] the directory for collecting SQLs
  23. --sandbox-port int [Sandbox] sandbox expose port. env: ERDA_SANDBOX_PORT (default 3306)
  24. --skip-lint [Lint] don't do Erda MySQL Lint
  25. --skip-mig [Migrate] skip doing pre-migration and real migration
  26. --skip-pre-mig [Migrate] skip doing pre-migration
  27. --skip-sandbox [Migrate] skip doing migration in sandbox
  28. Global Flags:
  29. --host string Erda host to visit (e.g. https://erda.cloud)
  30. --interactive if true, interactive with user (default true)
  31. -p, --password string Erda password to authenticate
  32. --remote string the remote for Erda repo (default "origin")
  33. -u, --username string Erda username to authenticate
  34. -V, --verbose if true, enable verbose mode
  35. Use "erda-cli migrate [command] --help" for more information about a command.

erda-cli config

您可以通过 config 命令在 Erda 上为指定组织下的指定项目设置、更新、查询或删除指定 Workspace 支持的功能,包括开启 ECI,后续还将支持更多的功能,例如自动扩缩容 HPA/VPA 等。

  1. $ erda-cli config --help
  2. Config Project workspace configurations operation,including set, get, update, delete
  3. Usage:
  4. erda-cli config [command]
  5. Examples:
  6. erda-cli config
  7. Available Commands:
  8. delete delete project workspace config
  9. get get project workspace config
  10. set set project workspace config
  11. update update project workspace config

erda-cli config set

您可以通过 set 命令设置指定组织下指定项目的指定 Workspace 支持的功能,例如开启 ECI。

  1. $ erda-cli config set --help
  2. set project workspace config
  3. Usage:
  4. erda-cli config set <feature> [flags]
  5. Examples:
  6. $ erda-cli config set HPA=enable --org xxx --project yyy --workspace DEV

其中,feature 为 key=value 的格式设置,若同时设置多个,请用逗号隔开,例如 key1=value1,key2=value2

如需为 erda-demo 组织下 testeci 项目的 DEV Workspace 设置功能 ECI 为 enable,则命令如下:

  1. $ erda-cli config set ECI=enable --host=https://erda.cloud -u 'YourName' -p 'YourPassword' --org erda-demo --project testeci --workspace DEV
  2. config set success

erda-cli config get

您可以通过 get 命令获取指定组织下指定项目的指定 Workspace 支持的功能信息。

  1. $ erda-cli config get --help
  2. get project workspace config
  3. Usage:
  4. erda-cli config get [flags]
  5. Examples:
  6. $ erda-cli config get --org xxx --project yyy --workspace DEV

如需获取 erda-demo 组织下 testeci 项目的 DEV Workspace 当前的功能详情,则命令如下:

  1. $ erda-cli config get --host --host=https://erda.cloud -u 'YourName' -p 'YourPassword' --org erda-demo --project testeci --workspace DEV
  2. [INFO] Configs get result: {"ECI":"enable"}
  3. config get success

erda-cli config update

您可以通过 update 命令更新指定组织下指定项目的指定 Workspace 支持的功能,例如关闭 ECI。

  1. $ erda-cli config update --help
  2. update project workspace config
  3. Usage:
  4. erda-cli config update <feature> [flags]
  5. Examples:
  6. $ erda-cli config update ECI=disable --org xxx --project yyy --workspace DEV

其中, feature 为 key=value 的格式设置,若同时设置多个,请用逗号隔开,例如 key1=value1,key2=value2

如需为 erda-demo 组织下 testeci 项目的 DEV Workspace 更新功能 ECI 为 disable,则命令如下:

  1. $ erda-cli config update ECI=disable --host=https://erda.cloud -u 'YourName' -p 'YourPassword' --org erda-demo --project testeci --workspace DEV
  2. config set success

erda-cli config delete

您可以通过 delete 命令删除指定组织下指定项目的指定 Workspace 支持的所有功能。若未指定 Workspace,则表示删除指定组织下指定项目的所有 Workspace 已设置的信息。

delete 命令不支持删除功能列表中的具体项,例如功能列表支持 ECI 和 HPA,则无法仅删除 HPA 而保留 ECI。此类情况下请使用 update 命令,将需删除的 HPA 设置为 disable 即可。

  1. $ erda-cli config delete --help
  2. delete project workspace config
  3. Usage:
  4. erda-cli config delete [flags]
  5. Examples:
  6. $ erda-cli config delete --org xxx --project yyy --workspace DEV
  7. $ erda-cli config delete --org xxx --project yyy

如需删除 erda-demo 组织下 testeci 项目的 DEV Workspace 的所有功能,则命令如下:

  1. $ erda-cli config delete --host=https://erda.cloud -u 'YourName' -p 'YourPassword' --org erda-demo --project testeci --workspace DEV
  2. config delete success

erda-cli project-deployment

您可以通过 project-deployment 命令在 Erda 上对指定组织下指定项目的指定 Workspace 下已部署的所有应用实例(及其 Addon 组件)进行停止或启动操作。

  • 停止:表示将已部署的所有应用实例(及其 Addon 组件)的副本数(Pod 数量)设置为 0,删除对应 Pod,但保留 Pod 所属的控制器如 StatefulSet、Deployment、CRD 等,仅设置副本数为 0。
  • 启动:表示将已部署且已停止的所有应用实例(及其 Addon 组件)的副本数(Pod 数量)由 0 恢复至停止前的状态。

通过 project-deployment stop 命令可快速释放集群资源,通过 project-deployment start 命令可快速恢复部署实例及其 Addon 至停止前的状态。

  1. $ erda-cli project-deployment --help
  2. Project workspace deployment operation, including stop, start
  3. Usage:
  4. erda-cli project-deployment [command]
  5. Examples:
  6. dice project-deployment
  7. Available Commands:
  8. start start project's runtimes and addons
  9. stop stop project's runtimes and addons

erda-cli project-deployment stop

您可以通过 stop 命令停止指定组织下指定项目的指定 Workspace 下已部署的所有应用实例(及其 Addon 组件)的副本数(Pod 数量)设置为 0,删除对应 Pod,但保留 Pod 所属的控制器如 StatefulSet、Deployment、CRD 等,仅设置副本数为 0。

  1. $ erda-cli project-deployment stop --help
  2. stop project's runtimes and addons
  3. Usage:
  4. erda-cli project-deployment stop [flags]
  5. Examples:
  6. $ erda-cli project-deployment stop --org xxx --project yyy --workspace DEV

如需停止 erda-demo 组织下 testeci 项目的 DEV Workspace 的所有应用实例及其 Addon,则命令如下:

  1. $ erda-cli project-deployment stop --host=https://erda.cloud -u 'YourName' -p 'YourPassword' --org erda-demo --project testeci --workspace DEV
  2. [INFO] Project's applications IDs to stop is:[6 5]
  3. [INFO] Begin to stop project's runtimes for runtime IDs:[186]
  4. [INFO] Waitting 1 minutes for project's runtimes to Terminating
  5. ✔ project-deployment stop project's runtimes success
  6. [INFO] No addons found for project to stop
  7. project-deployment stop project's addons success

tip 提示

  • Addon 和 Runtime 的停止有顺序依赖,优先停止 Runtime,并等待一分钟确保 Runtime 对应的 Pod 均已删除,随后停止 Addon。该执行过程可在命令执行输出中查看处理顺序。
  • 目前不支持停止 6.8.9 和 6.8.22 版本以上的 Elasticsearch 的 Addon。

erda-cli project-deployment start

您可以通过 start 命令重新启动指定组织下指定项目的指定 Workspace 下已部署的所有应用实例(及其 Addon 组件),对应的所有应用实例(及其 Addon 组件)的副本数(Pod 数量)由 0 恢复至停止前的状态。

  1. $ erda-cli project-deployment start --help
  2. start project's runtimes and addons
  3. Usage:
  4. erda-cli project-deployment start [flags]
  5. Examples:
  6. $ erda-cli project-deployment start --org xxx --project yyy --workspace DEV

如需启动 erda-demo 组织下 testeci 项目的 DEV Workspace 的所有应用实例及其 Addon,则命令如下:

  1. $ erda-cli project-deployment start --host=https://erda.cloud -u 'YourName' -p 'YourPassword' --org erda-demo --project testeci --workspace DEV
  2. [INFO] Project's applications IDs to start is:[6 5]
  3. [INFO] Begin to start project's addons for addon IDs:[o35a6a94a48b749f59b0258de68825727 s3746b6adfbce415ab4ca74c0b0f28fbe]
  4. [INFO] Successed to start all addons: [o35a6a94a48b749f59b0258de68825727 s3746b6adfbce415ab4ca74c0b0f28fbe]
  5. [INFO] Waitting 3 minutes for project's addons to Running
  6. ✔ project-deployment start project's addons success
  7. [INFO] Begin to start project's runtimes for runtime IDs:[186]
  8. ✔ project-deployment start project's runtimes success

tip 提示

  • Addon 和 Runtime 的停止有顺序依赖,优先停止 Runtime,并等待一分钟确保 Runtime 对应的 Pod 均已删除,随后停止 Addon。该执行过程可在命令执行输出中查看处理顺序。
  • 目前不支持启动 6.8.9 和 6.8.22 版本以上的 Elasticsearch 的 Addon。