summaryrefslogtreecommitdiff
path: root/support/go_build.rb
blob: 1ef2e173876edb843d07ae7294a9d67403e75962 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# Helper functions to build go code in gitlab-shell

require 'fileutils'

# This will set the ROOT_PATH variable
require_relative '../lib/gitlab_init'

module GoBuild
  GO_DIR = 'go'.freeze
  BUILD_DIR = File.join(ROOT_PATH, 'go_build')

  GO_ENV = {
    # $GOBIN controls where 'go install' puts binaries. Prior to go mod,
    # this was $GOPATH/bin.
    'GOBIN' => File.join(BUILD_DIR, 'bin'),
    # Force the use of go mod, even if $GOPATH is set.
    'GO111MODULE' => 'on',
    # Downloading dependencies via proxy.golang.org is faster and more
    # reliable than downloading from canonical sources. We need this
    # environment variable because as of Go 1.12, the default is still to
    # download from canonical sources.
    'GOPROXY' => 'https://proxy.golang.org'
  }.freeze

  def ensure_build_dir_exists
    FileUtils.mkdir_p(BUILD_DIR)
  end

  def run!(env, cmd, options = {})
    raise "env must be a hash" unless env.is_a?(Hash)
    raise "cmd must be an array" unless cmd.is_a?(Array)

    unless system(env, *cmd, options)
      abort "command failed: #{env.inspect} #{cmd.join(' ')}"
    end
  end
end