如何在 CircleCI Go 图像中使用 Terraform

我已经为我的 Terraform 代码进行了基于 Go 的自动化测试,我想让它们在 CircleCI 中运行。为此,我为 CircleCI 提供了以下 config.yml:


version: 2


jobs:

  build:

    docker:

      - image: circleci/golang:1.12

      - image: hashicorp/terraform:light


    working_directory: /go/src/bitbucket.org/teapigsteam/findmytea-terraform

    steps:

      - checkout


      - run: go get -v -t -d ./...

      - run: go test -v ./...

但由于某种原因,Go 找不到 Terraform 可执行文件:


#!/bin/bash -eo pipefail

go test -v ./...

=== RUN   TestFindMyTeaApp

TestFindMyTeaApp 2020-03-21T12:20:26Z retry.go:72: terraform [init -upgrade=false]

TestFindMyTeaApp 2020-03-21T12:20:26Z command.go:87: Running command terraform with args [init -upgrade=false]

TestFindMyTeaApp 2020-03-21T12:20:26Z retry.go:80: Returning due to fatal error: FatalError{Underlying: exec: "terraform": executable file not found in $PATH}

TestFindMyTeaApp 2020-03-21T12:20:26Z retry.go:72: terraform [destroy -auto-approve -input=false -var app_name=findmytea-terraform-tdd -lock=false]

TestFindMyTeaApp 2020-03-21T12:20:26Z command.go:87: Running command terraform with args [destroy -auto-approve -input=false -var app_name=findmytea-terraform-tdd -lock=false]

TestFindMyTeaApp 2020-03-21T12:20:26Z retry.go:80: Returning due to fatal error: FatalError{Underlying: exec: "terraform": executable file not found in $PATH}

--- FAIL: TestFindMyTeaApp (0.00s)

    apply.go:13: 

            Error Trace:    apply.go:13

                                        findmyteaui_test.go:19

            Error:          Received unexpected error:

                            FatalError{Underlying: exec: "terraform": executable file not found in $PATH}

            Test:           TestFindMyTeaApp


谁能告诉我我做错了什么?或者这可能是不可能的?


隔江千里
浏览 86回答 1
1回答

UYOU

与其尝试使用两个 Docker 映像,不如尝试使用hashicorp/terraform:full?我相信您会看到此错误,因为您的代码在 Golang 容器中执行,该容器无法访问 Terraform 轻容器中的可执行文件。您可以创建一个自定义 Docker 映像来运行它,并手动安装 Terraform。但是,hashicorp/terraform:full无论如何,该图像都是建立在 Golang 图像之上的,因此理论上应该让您更接近您的目标。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go