我的Gitlab CI Auto DevOps作业失败,原因是
Status: Downloaded newer image for gliderlabs/herokuish:latest -----> Unable to select a buildpack ERROR: Job failed: exit code 1
我经历了
而且仍然不确定我应该把buildpack放在哪里。
我的应该是heroku-buildpack-go,我已经不知道该从哪里得到它了。
heroku-buildpack-go
我的仓库仅包含一个字符README.md,以及“ Hello,操场” main.go。
README.md
main.go
结论:
感谢David的全面解释,我得以使用正确的buildpack来启动DevOps:
由此得出的结论是,目录树根目录下的单个.go文件不符合自动构建Go项目的激活条件。我建议在上述要求中选择一个依赖管理器,并修改您的项目以支持它。
FTA,我只是做了touch go.mod那么git add与git push和AutoDevops的确开始建设我的GO项目。
touch go.mod
git add
git push
但是在我看来,Gitlab AutoDevops无法非常轻松地构建任何GO项目,因为出现以下错误(带有project变量TRACE=true):
TRACE=true
... !! The go.mod file for this project does not specify a Go version !! !! Defaulting to go1.11.1 !! !! For more details see: https://devcenter.heroku.com/articles/go-apps-with-modules#build-configuration !! -----> Installing go1.11.1 -----> Fetching go1.11.1.linux-amd64.tar.gz... done !! Installing package '.' (default) !! !! To install a different package spec add a comment in the following form to your `go.mod` file: !! // +heroku install ./cmd/... !! !! For more details see: https://devcenter.heroku.com/articles/go-apps-with-modules#build-configuration !! -----> Running: go install -v -tags heroku . go: cannot determine module path for source directory /tmp/build (outside GOPATH, no import comments) ERROR: Job failed: exit code 1
更简单的解决方案是使用.gitlab-ci.yml文件代替,该文件记录在 https://blog.boatswain.io/post/build-go-project-with-gitlab- ci/中 (并在GitlabCI上进行了后续工作-为正常的存储库启动SharedRunner) 。
.gitlab-ci.yml
从AutoDevops文档中:
自动构建通过以下两种方式之一创建应用程序的构建: 如果有Dockerfile,它将使用docker build创建Docker映像。 否则,它将使用Herokuish和Heroku buildpacks自动检测应用程序并将其构建到Docker映像中。
自动构建通过以下两种方式之一创建应用程序的构建:
然后根据Heroku Go buildpack文档查看构建激活条件:
如果您使用以下任何一种,则该buildpack会将您的存储库检测为Go: Modules dep Govendor glide io godep
如果您使用以下任何一种,则该buildpack会将您的存储库检测为Go:
或更具体地说,是针对godep,govendor或GB的:
在Heroku的围棋buildpack时使用的申请符合下列条件之一: * 有一个Godeps/Godeps.json文件,标识该应用程序由Godep管理; * 有一个vendor/vendor.json文件,标识该应用程序由govendor管理; * 具有一个src包含子目录的目录,该目录包含一个或多个.go文件,这些文件将应用程序标识为由gb管理。
在Heroku的围棋buildpack时使用的申请符合下列条件之一:
* 有一个Godeps/Godeps.json文件,标识该应用程序由Godep管理; * 有一个vendor/vendor.json文件,标识该应用程序由govendor管理; * 具有一个src包含子目录的目录,该目录包含一个或多个.go文件,这些文件将应用程序标识为由gb管理。
Godeps/Godeps.json
vendor/vendor.json
src
由此得出的结论是.go,目录树根目录中的单个文件不符合自动构建Go项目的激活条件。我建议在上述要求中选择一个依赖管理器,并修改您的项目以支持它。之后,AutoDevops应该开始构建您的项目。
.go
如果之后仍然遇到问题,此调试说明可能会有所帮助:
确保项目符合buildpack要求后;如果仍然失败,设置项目变量TRACE=true将启用详细日志记录,这可能有助于继续进行故障排除。