github.com/hobbeswalsh/terraform@v0.3.7-0.20150619183303-ad17cf55a0fa/RELEASING.md (about)

     1  # Releasing Terraform
     2  
     3  This document contains details about the Terraform release process.
     4  
     5  ## Schedule
     6  
     7  Terraform currently has no fixed release schedule, the HashiCorp maintainers
     8  can usually give a feel for roughly when the next release is planned.
     9  
    10  ## Versioning
    11  
    12  As a pre-1.0 project, we use the MINOR and PATCH versions as follows:
    13  
    14   * a `MINOR` version increment indicates a release that may contain backwards
    15     incompatible changes
    16   * a `PATCH` version increment indicates a release that may contain bugfixes as
    17     well as additive (backwards compatible) features and enhancements
    18  
    19  ## Process
    20  
    21  For maintainer documentation purposes, here is the current release process:
    22  
    23  ```sh
    24  # Verify tests pass
    25  make test
    26  
    27  # Prep release commit
    28  export VERSION="vX.Y.Z"
    29  # Edit CHANGELOG, adding current date to unreleased version header
    30  # Edit version.go, setting VersionPrelease to empty string
    31  
    32  # Snapshot dependency information
    33  godep save ./...
    34  mv Godeps/Godeps.json deps/$(echo $VERSION | sed 's/\./-/g').json
    35  rm -rf Godeps
    36  
    37  # Make and tag release commit
    38  git commit -a -m "${VERSION}"
    39  git tag -m "${VERSION}" "${VERSION}"
    40  
    41  # Build release in Vagrant machine
    42  vagrant destroy -f; vagrant up # Build a fresh VM for a clean build
    43  vagrant ssh
    44  cd /opt/gopath/src/github.com/hashicorp/terraform/
    45  make release
    46  
    47  # Zip and push release to bintray
    48  export BINTRAY_API_KEY="..."
    49  ./scripts/dist "X.Y.Z" # no `v` prefix here
    50  
    51  # -- "Point of no return" --
    52  # -- Process can be aborted safely at any point before this --
    53  
    54  # Push the release commit and tag
    55  git push origin master
    56  git push origin vX.Y.Z
    57  
    58  # Click "publish" on the release from the Bintray Web UI
    59  
    60  # -- Release is complete! --
    61  
    62  # Make a follow-on commit to master restoring VersionPrerelease to "dev" and
    63  setting up a new CHANGELOG section.
    64  ```