|
| 1 | +# Terraform Enterprise quarterly releases |
| 2 | + |
| 3 | +This page describes the process for publishing Terraform Enterprise documentation. Terraform Enterprise adheres to the following semantic versioning scheme: |
| 4 | + |
| 5 | +`MILESTONE.MAJOR.PATCH` |
| 6 | + |
| 7 | +The team releases a milestone or major version once a quarter and releases patches as they become available. |
| 8 | + |
| 9 | +## Get the release date |
| 10 | + |
| 11 | +Check the `#proj-tfe-releases` channel for a message from the team manager about important dates. For example: |
| 12 | + |
| 13 | +``` |
| 14 | +TFE v1.1.0 -Feature release is planned on the week of Nov 9th |
| 15 | +More details - |
| 16 | +-> Application Code Deadline: October 20 |
| 17 | +-> Backport Deadline: October 25 |
| 18 | +-> GA Release Publish: week of November 9 |
| 19 | +``` |
| 20 | + |
| 21 | +Ask for the dates in the channel if it has been more than six weeks since the last milestone or major version and the manager hasn't posted the dates yet. You should also verify that the dates haven't changed closer to the standing date. |
| 22 | + |
| 23 | +**Application Code Deadline**: Also called **app deadline**, this is the Terraform Enterprise code freeze and occurs 1.5 to 2 weeks before the release date. App deadline is also when the release engineer runs a GitHub workflow in the `web-unified-docs-internal` repository that creates the following artifacts: |
| 24 | + |
| 25 | +- A branch named `tfe-release/<milestone>.<major>.x` for assembling the release notes and documentation updates. This is the branch that you merge into `main` to publish the docs. |
| 26 | +- A branch named `HCPTF-diff/<milestone>.<major>.x` that contains a diff of all of the new content from HCP TF slated for the next Terraform Enterprise release. |
| 27 | +- A PR named `HCP TF changes for TFE release <milestone>.<major>.x` for merging content updates into the release notes into the assembly branch. Review this PR and merge into the assembly branch. |
| 28 | +- A PR named `TFE Release <milestone>.<major>.x` for merging the release notes into the assembly branch. |
| 29 | + |
| 30 | +Refer to the [TFE Release 1.0.0](https://github.com/hashicorp/web-unified-docs-internal/pull/299) to see examples of the app deadline artifacts. |
| 31 | + |
| 32 | +**Backport Deadline**: This is an engineering deadline and isn't actionable for IPG team members. |
| 33 | + |
| 34 | +**GA Release Publish**: On this date, merge the assembly branch into `main` to publish the documentation. |
| 35 | + |
| 36 | +## Before app deadline |
| 37 | + |
| 38 | +Make sure to merge any PRs against the `terraform-docs-common` folder that should be included in the upcoming Terraform Enterprise release. |
| 39 | + |
| 40 | +Apply any exclusion tags to prevent HCP Terraform-specifc content from publishing to the enterprise docs. Refer to [Exclusion tag syntax](#exclusion-tag-syntax) for details. |
| 41 | + |
| 42 | +## Before GA release |
| 43 | + |
| 44 | +Review and merge the `HCP TF changes for TFE release <milestone>.<major>.x` PR into the `tfe-release/<milestone>.<major>.x` branch. During your review, verify that all of the changes are appropriate for Terraform Enterprise. If you’re unsure about an item, you can also ask in `#proj-tfe-releases`. |
| 45 | + |
| 46 | +If you need to update any existing documentation or apply exclusion tags, you must also apply the changes to the corresponding files in the `terraform-docs-common` so that the next synchronization doesn't overwrite your changes. It's rare, but if you edit a file in the `terraform-docs-common` folder as part of your review, someone may edit and merge the same file in the public repository, resulting in collisions when merging to `main`. You may need to track down the author or reach out to one of the development teams to resolve merge conflicts that emerge in this scenario. |
| 47 | + |
| 48 | +Review and merge any other PRs opened against the release branch. |
| 49 | + |
| 50 | +Review the `TFE Release <milestone>.<major>.x` release notes PR. The release engineer is responsible for merging the PR. The release engineer also prepares the release notes section of the docs. Refer to [Release notes guidance](#release-notes-guidance) for assistance. |
| 51 | + |
| 52 | +## On the day of the release |
| 53 | + |
| 54 | +The release engineer merges `tfe-release/<milestone>.<major>.x` release branch into `main`. The merge triggers an automation that synchronizes the `web-unified-docs` and `web-unified-docs-interal` repositories, which publishes the docs to production. |
| 55 | + |
| 56 | +Verify that the new version and related changes appear on the website. |
| 57 | +--- |
| 58 | + |
| 59 | +## Appendix |
| 60 | + |
| 61 | +This section contains supplementary information for publishing Terraform Enterprise docs. |
| 62 | + |
| 63 | +### Manually create docs artifacts for the release |
| 64 | + |
| 65 | +The [Create TFE Release Notes](https://github.com/hashicorp/web-unified-docs-internal/actions/workflows/create-tfe-release-notes.yml) action creates the release notes PR and triggers the [Copy Cloud Docs For TFE](https://github.com/hashicorp/web-unified-docs-internal/actions/workflows/copy-cloud-docs-for-tfe.yml) action. These actions create the branches and PRs necessary for publishing a new version of the Terraform Enterprise documenation. Complete the following steps to manually run the actions: |
| 66 | + |
| 67 | +1. Log into GitHub and navigate to the `web-unified-docs-internal` repository. |
| 68 | +1. Click **Actions**, then choose **Create TFE Release Notes** from the **Actions** sidebar. |
| 69 | +1. Open the **Run workflow** dropdown and choose the branch to use to run the workflow. This is `main` in almost all cases. |
| 70 | +1. Specify the following values: |
| 71 | + - Enter the upcoming version of the TFE release. |
| 72 | + - Enter the release branch for the upcoming release. Omit the suffix. You must specify an existing release branch. |
| 73 | + - Enter the tag of the most recent TFE release. The workflow uses this version to generate the change log. |
| 74 | + |
| 75 | +### Exclusion tag syntax |
| 76 | + |
| 77 | +Most content in the Terraform Enterprise documentation is sourced from the `terraform-docs-common` folder shared with HCP Terraform, but some features, such as operating HCP Terraform in Europe and tiered pricing, are specific to the SaaS offering. There is also sometimes a lag between when a feature releases in HCP Terraform and lands in Terraform Enterprise. For this reason, you will need to mark content in the `terraform-docs-common` folder as HCP Terraform-only to exclude it from the Terraform Enterprise documentation. Conversely, you can apply an exclusion tag to prevent information that should only appear in Terraform Enterprise. |
| 78 | + |
| 79 | +You can exclude page-level content as well as entire MDX files. |
| 80 | + |
| 81 | +#### Exclude content on a page |
| 82 | + |
| 83 | +Use HTML comment tags and add the `BEGIN: TFC:only` and `END: TFC:only` exclusion directives to exclude content from displaying in the Terraform Enterprise docs: |
| 84 | + |
| 85 | +```mdx |
| 86 | +<!-- BEGIN: TFC:only name:<feature-name> --> |
| 87 | + |
| 88 | +Content to exclude from Terraform Enterprise. |
| 89 | + |
| 90 | +<!-- END: TFC:only name:<feature-name> --> |
| 91 | +``` |
| 92 | + |
| 93 | +Conversely, you can exclude content from displaying on the HCP Terraform docs using `BEGIN: TFEnterprise:only` and `END: TFEnterprise:only` exclusion directives: |
| 94 | + |
| 95 | +```mdx |
| 96 | +<!-- BEGIN: TFEnterprise:only name:<feature-name> --> |
| 97 | + |
| 98 | +Content to exclude from HCP Terraform. |
| 99 | + |
| 100 | +<!-- END: TFEnterprise:only name:<feature-name> --> |
| 101 | +``` |
| 102 | + |
| 103 | +Except for the `BEGIN:` and `END:` directives, the content of each tag must be identical, otherwise the platform recognizes them as different directives and returns an error. The `name` attribute is optional, but it is especially helpful for staying organized when the page contains several exclusions. |
| 104 | + |
| 105 | +You can exclude MDX components, such as callouts, but there must be a line break between the components and the exclusion directives: |
| 106 | + |
| 107 | +```mdx |
| 108 | +<!-- BEGIN: TFC:only name:<feature-name> --> |
| 109 | + |
| 110 | +<Note> |
| 111 | + |
| 112 | +Message here. |
| 113 | + |
| 114 | +</Note> |
| 115 | + |
| 116 | +<!-- END: TFC:only name:<feature-name> --> |
| 117 | +``` |
| 118 | + |
| 119 | +You can also exclude content mid-sentence, but pay extra attention to your spacing and punctuation: |
| 120 | + |
| 121 | +```mdx |
| 122 | +Project-level permissions apply to all workspaces<!-- BEGIN: TFC:only name:stacks-tfe --> and Stacks<!-- END: TFC:only name:stacks-tfe --> within a specific project. |
| 123 | +``` |
| 124 | + |
| 125 | +#### Exclude an entire MDX file |
| 126 | + |
| 127 | +To exclude an entire file from Terraform Enterprise, add `tfc_only: true` to the page's front matter. For example: |
| 128 | + |
| 129 | +``` |
| 130 | +--- |
| 131 | +page_title: HCP Terraform in Europe |
| 132 | +description: >- |
| 133 | + HCP Terraform is available in HCP Europe, letting you manage Terraform resources in Europe with familiar workflows while adhering to additional data and privacy regulations |
| 134 | +tfc_only: true |
| 135 | +--- |
| 136 | +``` |
| 137 | + |
| 138 | +### Release notes guidance |
| 139 | + |
| 140 | +Releasen notes should help readers understand what has changed, why, and what actions they need to take as a result. It's rarely ever appropriate to include a changelog entry without any edits in the release notes. |
| 141 | + |
| 142 | +#### Include important and impactful updates |
| 143 | + |
| 144 | +The release notes are an opportunity to explain and advertise changes that significantly impact the user experience. Our changelog records every single change, but the release notes should only contain updates that do the following: |
| 145 | + |
| 146 | +- Address a salient user concern, such as security fixes |
| 147 | +- Let users do something new |
| 148 | +- Significantly improve the user experience, such as major UI updates and performance improvements |
| 149 | +- Require or recommend that users take action, such as deprecated functionality and recommended upgrades |
| 150 | + |
| 151 | +Omit minor UI changes and internal changes that don't directly affect the experience. |
| 152 | + |
| 153 | +#### Focus on features |
| 154 | + |
| 155 | +Start the update with a complete sentence that describes what part of the system has been changed. Don’t start with "Added", "Fixed", or "Changed", which is implied by the section title. |
| 156 | + |
| 157 | +**Needs work**: |
| 158 | + |
| 159 | +``` |
| 160 | +Added Prometheus format for usage metrics. |
| 161 | +``` |
| 162 | + |
| 163 | +**Better**: |
| 164 | + |
| 165 | +``` |
| 166 | +Usage metrics are available in Prometheus format. |
| 167 | +``` |
| 168 | + |
| 169 | +#### Explain what and why |
| 170 | + |
| 171 | +Practitioners may not understand new Terraform-specific feature names or internal jargon. Newer users may also need help understanding the impact of a new feature. Explain new features and their value in plain language. If you must include Terraform-specific jargon, explain the terminology. |
| 172 | + |
| 173 | +For bug fixes, you may need to compare the fix to pain points in the previous version. Where possible, link to related documentation or tutorials. |
| 174 | + |
| 175 | +**Needs work**: |
| 176 | + |
| 177 | +```mdx |
| 178 | +Added support for cloud integration when using the CLI. |
| 179 | +``` |
| 180 | + |
| 181 | +**Better**: |
| 182 | + |
| 183 | +``` |
| 184 | +You can now use the [Terraform CLI integration](/terraform/cli/cloud) to run Terraform Enterprise from the command line. We recommend using this native integration for Terraform versions 1.1 or later because it provides an improved user experience and various enhancements. |
| 185 | +``` |
| 186 | + |
| 187 | + |
| 188 | +**Needs Work**: |
| 189 | + |
| 190 | +``` |
| 191 | +Added variable sets. |
| 192 | +``` |
| 193 | + |
| 194 | +**Better**: |
| 195 | + |
| 196 | +``` |
| 197 | +You can now define sets of variables and reuse them across multiple workspaces. For example, you could define a set of variables that contain provider credentials and automatically apply it to all of the workspaces that use the provider. Refer to [Variable sets](/terraform/cloud-docs/workspaces/variables) for more information. |
| 198 | +``` |
| 199 | + |
| 200 | + |
| 201 | +#### Group related updates |
| 202 | + |
| 203 | +When applicable, combine content about the same part of the system into a single entry. Chunking related updates makes it easier for users to understand everything that has changed in components they care about. |
| 204 | + |
| 205 | +**Needs work**: |
| 206 | + |
| 207 | +``` |
| 208 | +Added warning to notify users of older provider documentation. |
| 209 | +Added an outline to the public provider documentation page. |
| 210 | +``` |
| 211 | + |
| 212 | +**Better**: |
| 213 | + |
| 214 | +``` |
| 215 | +The private registry UI now displays a warning message for old versions of provider documentation with a link to the latest version. The UI includes an outline for provider documentation that lets you navigate more quickly between sections. |
| 216 | +``` |
| 217 | + |
| 218 | +#### Refer to the reader as "you" |
| 219 | + |
| 220 | +Per the style guide, [address the reader as "you"](../../style-guide/general/point-of-view.md#address-the-reader-as-you). |
| 221 | + |
| 222 | +#### Format single updates as a paragraph |
| 223 | + |
| 224 | +A list with one item isn’t a list. If there is only one update in a section, format it as a paragraph. |
0 commit comments