当前位置: 首页 > 面试题库 >

Gitlab CI-Auto DevOps作业失败,无法为Go项目选择构建包?

沈子昂
2023-03-14
问题内容

我的Gitlab CI Auto DevOps作业失败,原因是

Status: Downloaded newer image for gliderlabs/herokuish:latest
       -----> Unable to select a buildpack
ERROR: Job failed: exit code 1

我经历了

  • 自动DevOps和
  • Auto DevOps入门

而且仍然不确定我应该把buildpack放在哪里。

我的应该是heroku-buildpack-go,我已经不知道该从哪里得到它了。

我的仓库仅包含一个字符README.md,以及“ Hello,操场” main.go

结论:

感谢David的全面解释,我得以使用正确的buildpack来启动DevOps:

由此得出的结论是,目录树根目录下的单个.go文件不符合自动构建Go项目的激活条件。我建议在上述要求中选择一个依赖管理器,并修改您的项目以支持它。

FTA,我只是做了touch go.mod那么git addgit push和AutoDevops的确开始建设我的GO项目。

但是在我看来,Gitlab AutoDevops无法非常轻松地构建任何GO项目,因为出现以下错误(带有project变量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) 。


问题答案:

从AutoDevops文档中:

自动构建通过以下两种方式之一创建应用程序的构建:

  • 如果有Dockerfile,它将使用docker build创建Docker映像。
  • 否则,它将使用Herokuish和Heroku
    buildpacks
    自动检测应用程序并将其构建到Docker映像中。

然后根据Heroku Go buildpack文档查看构建激活条件:

如果您使用以下任何一种,则该buildpack会将您的存储库检测为Go:

  • Modules
  • dep
  • Govendor
  • glide
  • io
  • godep

或更具体地说,是针对godep,govendor或GB的:

在Heroku的围棋buildpack时使用的申请符合下列条件之一:

* 有一个Godeps/Godeps.json文件,标识该应用程序由Godep管理;
* 有一个vendor/vendor.json文件,标识该应用程序由govendor管理;
* 具有一个src包含子目录的目录,该目录包含一个或多个.go文件,这些文件将应用程序标识为由gb管理。

由此得出的结论是.go,目录树根目录中的单个文件不符合自动构建Go项目的激活条件。我建议在上述要求中选择一个依赖管理器,并修改您的项目以支持它。之后,AutoDevops应该开始构建您的项目。

如果之后仍然遇到问题,此调试说明可能会有所帮助:

确保项目符合buildpack要求后;如果仍然失败,设置项目变量TRACE=true将启用详细日志记录,这可能有助于继续进行故障排除。



 类似资料:
  • 我正在使用一个自定义的工件库来部署我的项目。当我在本地机器上工作时,这很好,但我已经启用了Gitlab的AutoDevOps功能,并将我的项目与Kubernetes集群集成。 kubernetes集群由rancher管理。 问题是在Gitlab上运行的构建失败并出现以下错误: 插件org.apache.maven。插件:maven resources插件:2.6或其一个依赖项无法解析:无法读取or

  • 问题内容: 我试图构建新项目,但是当我单击构建时,构建每次都会失败。 我尝试删除我的项目并再次创建它,但是仍然没有帮助。 警告 错误 这些是Xcode向我显示的错误消息。项目名称为“ MyFirstApp”,我在该错误消息上剪切了一些文件路径。那么我如何建立这个项目呢? 问题答案: 在终端中尝试:

  • 分级任务 null 在https://help.gradle.org获得更多帮助

  • 每当我试图构建包含HoloEverywhere作为依赖项的项目时,我都会遇到这样的错误: Gradle:失败:构建失败,出现异常。

  • 我第一次安装PhoneGap并试图构建“HelloWorld”项目,但每次都失败了。即使我只创建了一个新项目,也可以在尝试构建之后直接添加Android作为平台。 我使用以下命令:-cordova创建你好com.example.helloHelloWorld-cd Hello/-cordova平台添加android-phonegap本地构建android 错误:http://pastebin.co