初次使用

登录

CLI 有少数命令无需登录即可执行,例如 migrate 相关命令。但多数子命令需在登陆后执行,登录相关参数如下:

  1. --host 指定需登录的 Erda 平台地址。
  2. -u--username 指定登录用户名。
  3. -p--password 指定登录密码。

tip 提示 当前目录为代码目录,CLI 将通过 git remote get-url <remote-name> 尝试获取平台地址、企业名称、项目 ID、应用 ID,其中 remote-name 可通过 --remote 指定,默认为 origin

若您未通过登录参数指定登录信息,则需通过交互方式填写。

  1. $ erda-cli clone https://erda.cloud/trial/dop/projects/599
  2. Enter your erda username: <YourName>
  3. Enter your erda password: <YourPassword>
  4. ORGID NAME DESCRIPTION
  5. 100060 erda Erda 开源组织
  6. 100046 trial Trial 企业

tip 提示 登录成功后将保存 Session。Session 过期后需重新登录。

本地研发

项目准备

warning 警告

请先在 Erda 的 Web 界面完成项目和应用创建,并提交代码。

本文假设创建的组织名称为 trial,项目名称为 bestpractice,应用名称为 echo-service。

克隆项目至本地:

  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.
  7. # 进入项目工作空间
  8. $ cd bestpractice

事项处理

列出待完成的需求:

  1. $ erda-cli issue --requirement
  2. ISSUEID FINISHDATE STATE ISSUENAME
  3. 298064 2022-03-31 待处理 实现公司统一单点登录

列出待完成的任务:

  1. $ erda-cli issue --task
  2. ISSUEID FINISHDATE STATE ISSUENAME
  3. 298068 2022-03-30 待处理 移动端登陆认证
  4. 298067 2022-03-28 待处理 用户身份统一认证

创建代码分支处理事项:

  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 中创建分支 feature/auth 用于处理任务 298067。随后需在新特性分支中进行代码编写。

应用构建

执行流水线并查看构建状态。

  1. $ cd echo-service
  2. $ erda-cli build pipeline.yml
  3. run pipeline: pipeline.yml for branch: master, pipelineID: 14174832, you can view building status via `erda-cli view -i 14174832`
  4. $ erda-cli view -i 14174832
  5. Pipeline progress (current/total): 1/4
  6. PIPELINEID TASKID TASKNAME TASKSTATUS STARTEDAT
  7. 14174832 14411986 git-checkout Success 2022-03-11 15:38:27
  8. 14174832 14411988 java-build Running 2022-03-11 15:38:36
  9. 14174832 0 release Analyzed 0001-01-01 00:00:00
  10. 14174832 0 dice Analyzed 0001-01-01 00:00:00

分支合并

完成编码和构建后提交合并请求:

  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. version: "1.1"
    2. stages:
    3. - stage:
    4. - project-package:
    5. alias: project-package
    6. description: 用于 Erda 平台制作项目工程包
    7. version: "1.0"
    8. params:
    9. artifacts:
    10. - name: gaia-oms
    11. type: project
    12. version: "1.0"

​ 其中 artifacts 描述工程包关联的制品。运行流水线完成工程包制作,随后通过下载链接获取。

  • 工程包的结构如下:

    1. .
    2. ├── artifacts
    3. └── gaia-oms_1.0.zip
    4. ├── environments
    5. ├── DEV-env.yml
    6. ├── PROD-env.yml
    7. ├── STAGING-env.yml
    8. └── TEST-env.yml
    9. ├── metadata.yml
    10. ├── project.yml
    11. ├── repos
    12. ├── gaia-oms-go-demo-release-1.0.zip
    13. └── gaia-oms-rust-demo-release-1.0.zip
    14. ├── values.yml

    工程包包含:

    1. 应用列表
    2. 应用代码
    3. 项目制品
    4. 环境配置,包括 Custom Addon、集群及配额
  • 填写配置。

    请在工程包的 values.yml 文件中填写新项目所需的具体配置:

    1. values.DEV.addons.oss.config.OSS_ACCESS_KEY_ID: ""
    2. values.DEV.addons.oss.config.OSS_ACCESS_KEY_SECRET: ""
    3. values.DEV.addons.oss.config.OSS_BUCKET: ""
    4. values.DEV.addons.oss.config.OSS_ENDPOINT: ""
    5. values.DEV.addons.oss.config.OSS_HOST: ""
    6. values.DEV.addons.oss.config.OSS_PROVIDER: ""
    7. values.DEV.addons.oss.config.OSS_REGION: ""
    8. values.DEV.addons.oss.config.OSS_STORE_DIR: ""
    9. values.DEV.addons.test.config.abc: ""
    10. values.DEV.cluster.name: ""
    11. values.DEV.cluster.quota.cpuQuota: 0
    12. values.DEV.cluster.quota.memoryQuota: 0
    13. ...
    14. values.PROD.cluster.name: ""
    15. values.PROD.cluster.quota.cpuQuota: 0
    16. values.PROD.cluster.quota.memoryQuota: 0
  • 使用工程包初始化项目。

    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.

    其中 project_package_20220310194452.zip 为项目工程包。

    初始化过程将完成以下内容:

    1. 项目创建
    2. 监控租户创建
    3. 工程包导入,包括创建应用、推送代码、创建 Custom Addon、导入制品

项目工程

项目克隆

通过 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.

默认 --cloneApps 选项为 true,将项目中各个应用及代码同样克隆至本地。

完成克隆后,将在本地以项目名称创建目录,项目目录即为项目空间,其下有隐藏文件记录项目信息。

  1. $ cd bestpractice/
  2. $ cat .erda.d/config
  3. version: v0.0.1
  4. server: https://openapi.erda.cloud
  5. org: trial
  6. org_id: 100046
  7. project: bestpractice
  8. project_id: 599
  9. applications:
  10. - name: echo-service
  11. id: 7097
  12. mode: SERVICE
  13. desc: "web server supplies services"
  14. - name: echo-web
  15. id: 7083
  16. mode: SERVICE
  17. desc: "web server supplies apis"

在项目空间中执行 CLI 命令,默认将加载项目及应用的信息。

项目推送

您可将本地项目空间中的应用及代码推送至 Erda 平台上的任一项目中,便于快速部署和二次开发。

  1. $ erda-cli push https://one.gts.terminus.io/trial/dop/projects/127 --application echo-web --application echo-service
  2. Application 'echo-web' pushed.
  3. Project 'bestpractice' pushed to server https://openapi.erda.cloud.