github.com/econnell/terraform@v0.5.4-0.20150722160631-78eb236786a4/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 # Spin up a fresh build VM 25 vagrant destroy -f 26 vagrant up 27 vagrant ssh 28 cd /opt/gopath/src/github.com/hashicorp/terraform/ 29 30 # Fetch dependencies 31 make updatedeps 32 33 # Verify unit tests pass 34 make test 35 36 # Prep release commit 37 export VERSION="vX.Y.Z" 38 # Edit CHANGELOG.md, adding current date to unreleased version header 39 # Edit version.go, setting VersionPrelease to empty string 40 41 # Snapshot dependency information 42 go get github.com/tools/godep 43 godep save ./... 44 cp Godeps/Godeps.json deps/$(echo $VERSION | sed 's/\./-/g').json 45 46 # Make and tag release commit (skipping Godeps dir) 47 git add CHANGELOG.md terraform/version.go deps/ 48 git commit -a -m "${VERSION}" 49 git tag -m "${VERSION}" "${VERSION}" 50 51 # Build the release 52 make release 53 54 # Make an archive with vendored dependencies 55 stashName=$(git stash) 56 git archive -o terraform-$VERSION-src.tar.gz $stashName 57 58 # Zip and push release to bintray 59 export BINTRAY_API_KEY="..." 60 ./scripts/dist "X.Y.Z" # no `v` prefix here 61 62 # -- "Point of no return" -- 63 # -- Process can be aborted safely at any point before this -- 64 65 # Push the release commit and tag 66 git push origin master 67 git push origin vX.Y.Z 68 69 # Click "publish" on the release from the Bintray Web UI 70 # Upload terraform-$VERSION-src.tar.gz as a file to the GitHub release. 71 72 # -- Release is complete! -- 73 74 # Start release branch (to be used for reproducible builds and docs updates) 75 git checkout -b release/$VERSION 76 git push origin release/$VERSION 77 78 # Clean up master 79 git checkout master 80 # Set VersionPrerelease to "dev" 81 # Add new CHANGELOG section for next release 82 git add -A 83 git commit -m "release: clean up after ${VERSION}" 84 ```