forked from hashicorp/terraform
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
maint: Codify a Vagrant-based release process
* update Vagrantfile to modern Consul-style version * add `make release` for a one-shot command to get from fresh vagrant machine to a built release * add RELEASING.md to document details about the release process
- Loading branch information
Showing
3 changed files
with
106 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
# Releasing Terraform | ||
|
||
This document contains details about the Terraform release process. | ||
|
||
## Schedule | ||
|
||
Terraform currently has no fixed release schedule, the HashiCorp maintainers | ||
can usually give a feel for roughly when the next release is planned. | ||
|
||
## Versioning | ||
|
||
As a pre-1.0 project, we use the MINOR and PATCH versions as follows: | ||
|
||
* a `MINOR` version increment indicates a release that may contain backwards | ||
incompatible changes | ||
* a `PATCH` version increment indicates a release that may contain bugfixes as | ||
well as additive (backwards compatible) features and enhancements | ||
|
||
## Process | ||
|
||
For maintainer documentation purposes, here is the current release process: | ||
|
||
```sh | ||
# Verify tests pass | ||
make test | ||
|
||
# Prep release commit | ||
export VERSION="vX.Y.Z" | ||
# Edit CHANGELOG, adding current date to unreleased version header | ||
# Edit version.go, setting VersionPrelease to empty string | ||
|
||
# Snapshot dependency information | ||
godep save | ||
mv Godeps/Godeps.json deps/$(echo $VERSION | sed 's/\./-/g').json | ||
rm -rf Godeps | ||
|
||
# Make and tag release commit | ||
git commit -a -m "${VERSION}" | ||
git tag -m "${VERSION}" "${VERSION}" | ||
|
||
# Build release in Vagrant machine | ||
vagrant destroy -f; vagrant up # Build a fresh VM for a clean build | ||
vagrant ssh | ||
cd /opt/gopath/src/github.com/hashicorp/terraform/ | ||
make release | ||
|
||
# Zip and push release to bintray | ||
export BINTRAY_API_KEY="..." | ||
./scripts/dist "X.Y.Z" # no `v` prefix here | ||
|
||
# -- "Point of no return" -- | ||
# -- Process can be aborted safely at any point before this -- | ||
|
||
# Push the release commit and tag | ||
git push origin master | ||
git push origin vX.Y.Z | ||
|
||
# Click "publish" on the release from the Bintray Web UI | ||
|
||
# -- Release is complete! -- | ||
|
||
# Make a follow-on commit to master restoring VersionPrerelease to "dev" and | ||
setting up a new CHANGELOG section. | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters