This project is mirrored from https://:*****@github.com/hashicorp/terraform.git. Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
  1. 23 May, 2022 3 commits
    • Martin Atkins's avatar
      build: Accept version numbers with prereleases containing dashes · 284a38a0
      Martin Atkins authored
      Previously we'd discard everything after the second dash.
      284a38a0
    • Martin Atkins's avatar
      build: Write the detected version number into the generated executable · 096f0dc0
      Martin Atkins authored
      This also sets an additional variable if it detects that this is an alpha
      or development build, which currently does nothing but might eventually
      turn on the ability to use experimental features, if we make that
      something available only in prereleases.
      096f0dc0
    • Martin Atkins's avatar
      build: Fetch all tags before deciding which version we're building · 7dd3cdfa
      Martin Atkins authored
      The actions/checkout workflow does some heroics to try to fetch exactly
      the commit being built and nothing else, even if asked to fetch the
      history leading up to that commit. That means we don't end up having
      enough information to get an accurate answer from "git describe".
      
      Since we're intentionally relying on the git history here, we'll fetch
      all of the tags explicitly after initial checkout. Although that does add
      some delay to this step, we're intentionally doing this version
      calculation only once as a separate workflow job so that all of the other
      jobs can still benefit from this action's quicker checkout behavior.
      7dd3cdfa
  2. 22 Apr, 2022 1 commit
  3. 04 Apr, 2022 1 commit
    • Martin Atkins's avatar
      build: "Quick Checks" no longer uses goenv · 95f26b34
      Martin Atkins authored
      goenv was making things more complicated than needed since it's really
      designed to help with interactive use in a shell more than automated use
      like this.
      
      Instead, we'll follow the same strategy that our build.yml was doing of
      just reading the .go-version file directly and then using the official
      actions/setup-go action to do the actual installation. The key advantage
      here is that Go ends up installed in a way where just running "go" will
      do the right thing, and we no longer need to fuss with shims and
      version-based path prefixes.
      
      Rather than duplicating the logic from build.yml, instead it's factored
      out into a separate composite action which both build.yml and checks.yml
      will now share, in case we want to change the Go version selection
      methodology in the future.
      95f26b34
  4. 20 Jan, 2022 1 commit
  5. 06 Jan, 2022 1 commit
    • Martin Atkins's avatar
      build: CGO_ENABLED when building for macOS · 4ec1feaa
      Martin Atkins authored
      Normally when we cross-compile we do so without CGo, because we don't have
      suitable C headers available for systems other than the host.
      
      However, building for macOS on macOS is special because there are
      sufficient headers available on darwin_amd64 to build for both
      darwin_amd64 _and_ darwin_arm64. Also, we _must_ use CGo on macOS because
      the system resolver is only available via darwin's libc, and so building
      without CGo produces executables that don't resolve hostnames correctly.
      
      This is a conditional in bash to avoid having to duplicate the entire
      step. Perhaps later we'll find a more general version of this which can
      avoid the special case, but this is sufficient for the moment.
      4ec1feaa
  6. 05 Jan, 2022 6 commits
    • Martin Atkins's avatar
      build: Separate Linux distro package builds into separate job · 28a6036c
      Martin Atkins authored
      In our build workflow we'll treat Linux distribution packaging (currently
      .deb and .rpm packages) as a separate job, instead of embedding it into
      the "build" job, so that this step can happen concurrently with the other
      derived actions like the docker image build, and the e2etest runs.
      28a6036c
    • Martin Atkins's avatar
      build: Constrain permissions for the "build" workflow steps · c1699ea8
      Martin Atkins authored
      This workflow only generates artifacts and doesn't need to modify anything
      about the repository.
      c1699ea8
    • Martin Atkins's avatar
      build: Consolidate build-darwin job into just "build" · 3bf758ea
      Martin Atkins authored
      We can use an extra matrix dimension to select which execution environment
      we'll use for each GOOS/GOARCH pair, and thus avoid duplicating the
      job definition for darwin just to set runs-on: macos-latest for it.
      
      This is not really an intended use of a matrix dimension because it's
      directly related to the existing "goos" one, rather than being an
      independent third dimension, but it doesn't matter in practice because
      we're using the "include" option to specify exact combinations, and thus
      we're not relying on the built-in functionality to generate all possible
      matrix combinations.
      3bf758ea
    • Martin Atkins's avatar
      build: Build docs source package as part of the release pipeline · 218e55b2
      Martin Atkins authored
      This should eventually grow to be a step that actually verifies the
      validity of the docs source prior to publishing the artifact that a
      downstream publishing pipeline can consume, but for the moment it's really
      just a placeholder since we have no such validation step and no downstream
      pipeline consuming this artifact.
      
      The general idea here is that the artifacts from this workflow should be
      sufficient for all downstream release steps to occur without any direct
      access to the Terraform CLI repository, and so this is intended to
      eventually meet that ideal but as of this commit the website docs
      publishing step _does_ still depend on direct access to this repository.
      218e55b2
    • Martin Atkins's avatar
      build: Build and run e2etest as part of the release build pipeline · b802db75
      Martin Atkins authored
      This uses the decoupled build and run strategy to run the e2etests so that
      we can arrange to run the tests against the real release packages produced
      elsewhere in this workflow, rather than ones generated just in time by
      the test harness.
      
      The modifications to make-archive.sh here make it more consistent with its
      originally-intended purpose of producing a harness for testing "real"
      release executables. Our earlier compromise of making it include its own
      terraform executable came from a desire to use that script as part of
      manual cross-platform testing when we weren't yet set up to support
      automation of those tests as we're doing here. That does mean, however,
      that the terraform-e2etest package content must be combined with content
      from a terraform release package in order to produce a valid contest for
      running the tests.
      
      We use a single job to cross-compile the test harness for all of the
      supported platforms, because that build is relatively fast and so not
      worth the overhead of matrix build, but then use a matrix build to
      actually run the tests so that we can run them in a worker matching the
      target platform.
      
      We currently have access only to amd64 (x64) runners in GitHub Actions
      and so for the moment this process is limited only to the subset of our
      supported platforms which use that architecture.
      b802db75
    • Martin Atkins's avatar
      Initial work on a new package build process · 6704f8c7
      Martin Atkins authored
      For the moment this is just an experimental additional sidecar package
      build process, separate from the one we really use for releases, so that
      we can get some experience building in the GitHub Actions environment
      before hopefully eventually switching to using the artifacts from this
      process as the packages we'll release through the official release
      channels.
      
      It will react to any push to one of our release branches or to a release
      tag by building official-release-like .zip, .deb, and .rpm packages, along
      with Docker images, based on the content of the corresponding commit.
      
      For the moment this doesn't actually produce _shippable_ packages because
      in particular it doesn't know how to update our version/version.go file
      to hard-code the correct version number. Once Go 1.18 is release and we've
      upgraded to it we'll switch to using debug.ReadBuildInfo to determine
      our version number at runtime and so no longer need to directly update
      a source file for each release, but that functionality isn't yet available
      in our current Go 1.17 release.
      6704f8c7