terraform/BUILDING.md

1.7 KiB

Building Terraform

This document contains details about the process for building binaries for Terraform.

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

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.

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 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.

# 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
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 binaries for all supported platforms in the pkg folder.