CircleCI で tarball から Golang をインストールする方法

結論

以下のような config.yml を書きます。

version: 2
jobs:
  build:
    docker:
      - image: circleci/ruby:2.6.5
    working_directory: ~/repo
    steps:
(省略)
      - run:
          name: Download Golang 1.13.4
          command: |
            wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
      - run:
          name: Extract Golang 1.13.4 tarball
          command: |
            sudo tar -C /usr/local -xzf go1.13.4.linux-amd64.tar.gz
      - run:
          name: Set environment variables
          command: |
            echo 'export GOROOT=/usr/local/go' >> $BASH_ENV
            echo 'export PATH=$PATH:$GOROOT/bin' >> $BASH_ENV
            source $BASH_ENV
      - run:
          name: Check whether Golang has been installed or not
          command: |
            which go
            go version

上記によるコンソールの出力

上記のコマンド群が実行されると以下のようにコンソールに出力されます。ローカルの CLI で CircleCI を走らせた場合です。

====>> Download Golang 1.13.4
  #!/bin/bash -eo pipefail
wget https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz

--2019-11-21 05:53:14--  https://dl.google.com/go/go1.13.4.linux-amd64.tar.gz
Resolving dl.google.com (dl.google.com)... 172.217.25.238, 2404:6800:4004:808::200e
Connecting to dl.google.com (dl.google.com)|172.217.25.238|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 120054682 (114M) [application/octet-stream]
Saving to: ‘go1.13.4.linux-amd64.tar.gz’

go1.13.4.linux-amd6 100%[===================>] 114.49M  25.4MB/s    in 4.6s

2019-11-21 05:53:19 (25.1 MB/s) - ‘go1.13.4.linux-amd64.tar.gz’ saved [120054682/120054682]

====>> Extract Golang 1.13.4 Archive
  #!/bin/bash -eo pipefail
sudo tar -C /usr/local -xzf go1.13.4.linux-amd64.tar.gz

====>> Set environment variables
  #!/bin/bash -eo pipefail
echo 'export GOROOT=/usr/local/go' >> $BASH_ENV
echo 'export PATH=$PATH:$GOROOT/bin' >> $BASH_ENV
echo 'export PATH=$PATH:/usr/local/go/bin' >> $BASH_ENV
source $BASH_ENV

====>> Check whether Golang has been installed or not
  #!/bin/bash -eo pipefail
which go
go version

/usr/local/go/bin/go
go version go1.13.4 linux/amd64
Success!

補足

  • source $BASH_ENV がポイントです
  • GOROOT の場所は、tarball の展開場所と一致していてパスが通っていれば(パスを通せば)どこでもよいです
Powered by はてなブログ