如何 运行 在 Travis CI 上的一个项目中测试 Golang 和 Karma

How to run Golang and Karma tests within one project on Travis CI

我认为我的问题与这些问题有关,但解决方案对我的情况不起作用: and Is it possible to set up travis to run tests for several languages?

我有一个 github 存储库,其中包含一个带有小型 Angularjs 前端的小 Golang 应用程序。我想 运行 go-tests 和 Karma-tests。 我看到两个选项:

  1. 运行 两个 travis-ci 为一个 repo 构建(我不知道如何 这样做)

  2. 运行 一次构建中的两个测试(由于 travis-ci 中的节点版本太旧(0.10)而无法正常工作)。

构建 运行 超过 60 分钟,然后在 "FATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory" 处停止。构建显示了大量这样的警告:npm WARN engine escodegen@1.8.0: wanted: {"node":">=0.12.0"} (current: {"node":"0.10.36 ","npm":"1.4.28"})

我尝试 运行 构建为 node_js 但是 "go get xyz" 不起作用。

我的.travis.yml文件:

language: go

go:
  - 1.5

env:
  - TRAVIS_NODE_VERSION="0.12"

install:
  - export PATH=$HOME/gopath/bin:$PATH
  - go get golang.org/x/tools/cmd/cover
  - go get -v github.com/axw/gocov
  - go install github.com/axw/gocov/gocov
  - go get github.com/GeertJohan/go.rice
  # we do not need the rice tool!
  - go get github.com/xeipuuv/gojsonschema
  - go get github.com/finklabs/ttime
  - go get github.com/finklabs/graceful
  - go get github.com/gorilla/mux

before_script:
  - npm install bower
  - npm install --dev
  - bower install

script:
  - gocov test | gocov report
  - npm test

有时问题出在机器前面...我找到了一个很好的解决方法,我想与您分享。

我在 https://drone.io/ 上的设置选项卡中创建了一个帐户 我为 "Go1" 选择了一个构建并添加了以下命令:

# install gogrinder dependencies
go get ./...

# install test dependencies
go get golang.org/x/tools/cmd/cover
go get -v github.com/axw/gocov
go install github.com/axw/gocov/gocov

# install nodejs requirements
npm -d install
./node_modules/bower/bin/bower install

# run the tests on the go code
gocov test | gocov report

# run the tests on the Angularjs frontend
npm test

现在我又回到了正轨,使用运行 Golang 和 Karma 测试的 CI 服务器。

很久以前我在 http://entulho.fiatjaf.alhur.es/guias/how-to-use-node-along-with-other-language-on-travis-ci/ 上给出了解决方案,但今天仍然有效:

基本上你只需添加

install:
  - . $HOME/.nvm/nvm.sh
  - nvm install stable
  - nvm use stable
  - npm install

到您的 .travis.yml,它必须设置为不同的语言,它将安装 nodenpm