里面包含了版本命名的规范,以及changlog 的编写,对于实际的开发具有很大的价值

Given the breadth of available Terraform plugins, ensuring a consistent experience across them requires a standard guideline for compatibility promises. These guidelines are enforced for plugins released by HashiCorp and are recommended for all community plugins.

»Versioning Specification

Observing that Terraform plugins are in many ways analogous to shared libraries in a programming language, we adopted a version numbering scheme that follows the guidelines of Semantic Versioning. In summary, this means that with a version number of the form MAJOR.MINOR.PATCH, the following meanings apply:

  • Increasing only the patch number suggests that the release includes only bug fixes, and is intended to be functionally equivalent.
  • Increasing the minor number suggests that new features have been added but that existing functionality remains broadly compatible.
  • Increasing the major number indicates that significant breaking changes have been made, and thus extra care or attention is required during an upgrade.

Version numbers above 1.0.0 signify stronger compatibility guarantees, based on the rules above. Each increasing level can also contain changes of the lower level (e.g. MINOR can contain PATCH changes).

»Example Major Number Increments

Increasing the MAJOR number is intended to signify potentially breaking changes.

Within Terraform provider development, some examples include:

  • Removing a resource or data source
  • Removing an attribute
  • Renaming a resource or data source
  • Renaming an attribute
  • Changing fundamental provider behaviors (e.g. authentication or configuration precedence)
  • Changing resource import ID format
  • Changing resource ID format
  • Changing attribute type where the new type is functionally incompatible (e.g. TypeSet to TypeList)
  • Changing attribute format (e.g. changing a timestamp from epoch time to a string)

»Example Minor Number Increments

MINOR increments are intended to signify the availability of new functionality or deprecations of existing functionality without breaking changes to the previous version.

Within Terraform provider development, some examples include:

  • Marking a resource or data source as deprecated
  • Marking an attribute as deprecated
  • Adding a new resource or data source
  • Aliasing an existing resource or data source
  • Implementing new attributes within the provider configuration or an existing resource or data source
  • Implementing new validation within an existing resource or data source
  • Changing attribute type where the new type is functionally compatible (e.g. TypeList to TypeSet)

»Example Patch Number Increments

Increasing the PATCH number is intended to signify mainly bug fixes and to be functionally equivalent with the previous version.

Within Terraform provider development, some examples include:

  • Fixing an interaction with the remote API or Terraform state drift detection (e.g. broken create, read, update, or delete functionality)
  • Fixing attributes to match behavior with resource code (e.g. removing Optional when an attribute can not be configured in the remote API)
  • Fixing attributes to match behavior with the remote API (e.g. changing Required to Optional, fixing validation)

»Changelog Specification

For better operator experience, we provide a standardized format so development information is available across all providers consistently. The changelog should live in a top level file in the project, named CHANGELOG or CHANGELOG.md. We generally recommend that the changelog is updated outside of pull requests unless a clear process is setup for handling merge conflicts.

»Version Headers

The upcoming release version number is always at the top of the file and is marked specifically as (Unreleased), with other previously released versions below.

NOTE: For HashiCorp released providers, the release process will replace the "Unreleased" header with the current date. This line must be present with the target release version to successfully release that version.

## X.Y.Z (Unreleased)

...

## A.B.C (Month Day, Year)

...

»Categorization

Information in the changelog should broken down as follows:

  • BACKWARDS INCOMPATIBILITIES or BREAKING CHANGES: This section documents in brief any incompatible changes and how to handle them. This should only be present in major version upgrades.
  • NOTES: Additional information for potentially unexpected upgrade behavior, upcoming deprecations, or to highlight very important crash fixes (e.g. due to upstream API changes)
  • FEATURES: These are major new improvements that deserve a special highlight, such as a new resource or data source.
  • IMPROVEMENTS or ENHANCEMENTS: Smaller features added to the project such as a new attribute for a resource.
  • BUG FIXES: Any bugs that were fixed.

These should be displayed as left aligned text with new lines above and below:


CATEGORY:

»Entry Format

Each entry under a category should use the following format:

* subsystem: Descriptive message [GH-1234]

For provider development typically the "subsystem" is the resource or data source affected e.g. resource/load_balancer, or provider if the change affects whole provider (e.g. authentication logic). Each bullet also references the corresponding pull request number that contained the code changes, in the format of [GH-####] (for HashiCorp released plugins, this will be automatically updated on release).

»Entry Ordering

To order entries, these basic rules should be followed:

  1. If large cross-cutting changes are present, list them first (e.g. provider)
  2. Order other entries lexicographically based on subsystem (e.g. resource/load_balancer then resource/subnet)

»Example Changelog

## 1.0.0 (Unreleased)

BREAKING CHANGES:

* Resource `network_port` has been removed [GH-1]

FEATURES:

* **New Resource:** `cluster` [GH-43]

IMPROVEMENTS:

* resource/load_balancer: Add `ATTRIBUTE` argument (support X new functionality) [GH-12]
* resource/subnet: Now better [GH-22, GH-32] ## 0.2.0 (Month Day, Year) FEATURES: ...
 
 
 
 

terraform plugin 版本以及changlog 规范的更多相关文章

  1. Android Gradle插件(plugin)版本(version)与Gradle、SDK Build Tools版本关系

    具体关系如下图: 比如,Android Studio 2.0发布,其中有个新功能“Instant Run”,需要Android Gradle Plugin版本2.0.0以上,那么我们项目的.gradl ...

  2. git commit 、CHANGELOG 和版本发布的标准自动化

    一直以来,因为团队项目迭代节奏很快,每次发布的更新日志和版本更新都是通过人肉来完成的.有时候实在忙的团团转,对于手动的写这些更新信息就显得力不从心了.对于团队新来的小伙伴,有时候遇到些紧急情况,就更显 ...

  3. 转:HAR(HTTP Archive)规范

    HAR(HTTP Archive),是一个用来储存HTTP请求/响应信息的通用文件格式,基于JSON.这个格式的出现可以使HTTP监测工具以一种通用的格式导出所收集的数据,这些数据可以被其他支持HAR ...

  4. [Cordova] Plugin开发入门

    [Cordova] Plugin开发入门 Overview Cordova的设计概念,是在APP上透过Web控件来呈现Web页面,让Web开发人员可以操作熟悉的语言.工具来开发APP.使用Web页面来 ...

  5. 教新手一步步解决:Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_OVERRIDE environment variable to和更新gradle问题

    android studio出现问题:Plugin is too old, please update to a more recent version, or set ANDROID_DAILY_O ...

  6. DBA应用技巧:如何升级InnoDB Plugin

    DBA应用技巧:如何升级InnoDB Plugin 2011-03-23 10:09 康凯 ITPUB 字号:T | T 本文中,我们将向读者详细介绍如何升级动态InnoDB Plugin和升级静态编 ...

  7. Android Studio, gradle plugin is too old or set ANDROID_DAILY_OVERRIDE

    早上打开Android Studio,忽然报了个错,说gradle plugin版本过低,让更新或者设置ANDROID_DAILY_OVERRIDE环境变量: 日志如下: INFO - ls.idea ...

  8. FastCGI中文规范

    http://fuzhong1983.blog.163.com/blog/static/1684705201051002951763/ . 介绍 FastCGI是对CGI的开放的扩展,它为所有因特网应 ...

  9. GWT(Google Web Tookit) Eclipse Plugin的zip下载地址(同时提供GWT Designer下载地址)

    按照Eclipse Help->Install new software->....(这里是官方安装文档:http://code.google.com/intl/zh-CN/eclipse ...

随机推荐

  1. 每天CSS学习之line-height

    line-height是CSS的一个属性,其作用是设置行高.其有以下几种值: 1.normal:自动设置合理的行间距.该值是默认值.如下示例: p{ line-height:normal; } 结果: ...

  2. Jmeter响应中中文乱码怎么解决

    在jmeter的bin目录下有一个jmeter.properties的文件,打开它,搜索sampleresult.default.encoding,把它的注释打开,也就是把最前面的#去掉,改成samp ...

  3. SQLServer查询当前数据库所有索引及统计,并使用游标批量删除

    --查询现有所有数据库表的索引情况 Select indexs.Tab_Name As [表名],indexs.Index_Name As [索引名] ,indexs.[Co_Names] As [索 ...

  4. 循环神经网络-LSTM

    LSTM(Long Short-Term Memory)是长短期记忆网络,是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要事件. LSTM能够很大程度上缓解长期依赖的问题. ...

  5. L304 What Is Death?

    How should we define the death of a person? Philosophers and physicians have long pondered this ques ...

  6. FreeSWITCH视频会议命令

    列出所有会议 conference list 列出会议的所有成员 conference <conference_name> list 而<conference_name>就是会 ...

  7. 【Python】多进程-队列

    #练习:队列 from multiprocessing import Process, Queue def offer(queue): # 入队列 queue.put("Hello Worl ...

  8. 设计精美Power BI报告的五大秘诀

    众所周知,Power BI可以帮助您创建交互式且信息丰富的报告,但使用Power BI 制作精美而实用的报告对我们这群IT人员而言,却是一个巨大的痛苦:但个人觉得不能就此止步,通过不断实践练习,小悦采 ...

  9. [转] Haproxy、Keepalived双主高可用负载均衡

    http://blog.chinaunix.net/uid-25266990-id-3989321.html 在测试了Nginx+Keepalived的负载均衡后,也对Haproxy+Keepaliv ...

  10. 【转载】 996,谁的ICU?

    原文地址: https://baijiahao.baidu.com/s?id=1629803937354992525&wfr=spider&for=pc --------------- ...