diff --git a/RELEASING.md b/BUILDING.md similarity index 63% rename from RELEASING.md rename to BUILDING.md index 41a6b8059..874759983 100644 --- a/RELEASING.md +++ b/BUILDING.md @@ -1,11 +1,7 @@ -# Releasing Terraform +# Building 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. +This document contains details about the process for building binaries for +Terraform. ## Versioning @@ -18,13 +14,31 @@ As a pre-1.0 project, we use the MINOR and PATCH versions as follows: ## Process -For maintainer documentation purposes, here is the current release process: +If only need to build binaries for the platform you're running (Windows, Linux, +Mac OS X etc..), you can follow the instructions in the README for [Developing +Terraform][1]. + +The guide below outlines the steps HashiCorp takes to build the official release +binaries for Terraform. This process will generate a set of binaries for each supported +platform, using the [gox](https://github.com/mitchellh/gox) tool. + +A Vagrant virtual machine is used to provide a consistent envirornment with +the pre-requisite tools in place. The specifics of this VM are defined in the +[Vagrantfile](Vagrantfile). + ```sh +# clone the repository if needed +git clone https://github.com/hashicorp/terraform.git +cd terraform + # Spin up a fresh build VM vagrant destroy -f vagrant up vagrant ssh + +# The Vagrantfile installs Go and configures the $GOPATH at /opt/gopath +# The current "terraform" directory is then sync'd into the gopath cd /opt/gopath/src/github.com/hashicorp/terraform/ # Fetch dependencies @@ -33,6 +47,13 @@ make updatedeps # Verify unit tests pass make test +# Build the release +# This generates binaries for each platform and places them in the pkg folder +make release +``` + +After running these commands, you should have + # Prep release commit export VERSION="vX.Y.Z" # Edit CHANGELOG.md, adding current date to unreleased version header @@ -86,3 +107,6 @@ git checkout master git add -A git commit -m "release: clean up after ${VERSION}" ``` + + +[1]: https://github.com/hashicorp/terraform#developing-terraform