tencent cloud

文档反馈

开发注意事项

最后更新时间:2022-07-22 10:22:18

    官方仓库

    访问 官方仓库

    开发步骤

    1. 准备好 golang 开发环境。
      golang 需要用最新的版本,目前是 1.14.x。

    2. 注册 github 账号。

    3. 完成开户 github 二步认证

    4. fork 官方仓库。
      fork 官方仓库的 master 到自己的账号下。

    5. git clone 自己账号下的仓库到本地。
      执行以下命令,进行 clone。

      git clone https://github.com/your-github-name/terraform-provider-tencentcloud
      
    6. 完成例行检查。
      执行以下命令,完成 commit 前的例行检查。

      make hooks
      
    7. 检出分支。
      检查分支格式是否为 类型/模块-关键字 。例如,feat/tke-support-addon 即 TKE 模块新增功能 addon。

    8. 修改代码。
      参考 代码风格,与现有风格保持一致。

    9. 修改测试用例。
      若有修改,则需确保测试用例是准确的并且全部通过。

    10. 实现文档自动生成。
      执行以下命令,实现文档自动生成。您的编码需符合一定规则,详情请参见 Terraform docs generator

      make doc
      
    11. 提交代码。
      执行以下命令,提交代码。commit 的 message 尽量写清楚并且规范。

      git commit  
      
    12. 推送代码。
      执行以下命令,将代码推到自己账号下的仓库。

      git push
      
    13. 提交 pull request。
      不允许将代码直接合到官方仓库,需要通过 PR + code review。

    14. 通知其他人进行 code review。
      至少需要一个 approve 代码才可以合并,自己提交的代码不允许自己合并。

    15. 定期出版本。
      出版本后,插件才会更新,功能才会生效。

    代码风格

    参考 Google Golang 代码规范 ,对代码风格做如下约束:

    • 变量/函数名遵循驼峰命名法,首字母根据访问控制决定使用大写或小写。
    • 单行代码建议不要超过120个字符。
    • 运算符和操作数之间要留空格,如 num := a + b。作为输入参数或者数组下标时除外,紧凑展示。
    • 应该使用完整的路径引入 package,不要使用相对路径。
    • 函数 error 返回值顺序必须放在最后一个。
    • 当出错或判空需要返回时尽早返回,if 语句返回后,不要跟 else。
    • 调用函数的错误返回必须独立 return ,不与其他条件组合判断。
    • 魔法变量不能重复出现2次,如地域 ID 9(代表新加坡),需要使用常量代替,如 const AP_SINGAPORE = 9
    注意

    可结合 make fmt 命令实现代码格式化。开发步骤中提到 make hooks 包含了格式化步骤,开发前务必执行。

    版本/TAG 规则

    版本名称遵循 semver 原则且以 v 为前缀,例如 v1.2.3

    CHANGELOG.md 规则

    每次有修改必须更新 CHANGELOG.mdCHANGELOG.md 的版本规则如下:

    • FEATURES:新增 datasource 或 resource。
    • ENHANCEMENTS:更新 datasource 或 resource。
    • BUG FIXES:bug 修复。
    • DEPRECATED:废弃 data source 或废弃 resource 或废弃 field。

    结合上文 Semver 主/次/补丁规则:出现 FEATURES、DEPRECATED 发次版本 1.X.0 ,出现 ENHANCEMENTS、BUG FIXES 发补丁 1.0.X。

    动态输入限制

    当云产品接入过程中,会遇到较多需要限制输入参数内容的要求。例如,购买 PostgreSQL 数据库时要限制选择的数据库的版本。由于数据库支持的版本列表会不定期更新,若没有及时完成更新则会引起用户无法选择最新版本,造成使用上的困难。在此场景下,代码中切勿直接指定将数据库支持的版本列表,应每次调用接口拉取,实现动态的限制。

    类似的场景包含 PostgreSQL 支持的版本、内存。Redis 支持的版本、内存。SCF 支持的语言、版本等。

    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持