travis, build: speed up CI runs (#17854)

* travis: exclude non-test jobs for PRs

We don't usually look at these builders and not starting them
removes ~15min of build time.

* build: don't run vet before tests

Recent versions of Go run vet during 'go test' and we have
a dedicated lint job.

* build: use -timeout 5m for tests

Tests sometimes hang on Travis. CI runs are aborted after 10min with no
output. Adding the timeout means we get to see the stack trace for
timeouts.
pull/17877/merge
Felix Lange 6 years ago committed by GitHub
parent 459278cd57
commit 72a076840b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 25
      .travis.yml
  2. 11
      build/ci.go

@ -45,7 +45,8 @@ matrix:
- go run build/ci.go lint - go run build/ci.go lint
# This builder does the Ubuntu PPA upload # This builder does the Ubuntu PPA upload
- os: linux - if: type = push
os: linux
dist: trusty dist: trusty
go: 1.11.x go: 1.11.x
env: env:
@ -63,7 +64,8 @@ matrix:
- go run build/ci.go debsrc -signer "Go Ethereum Linux Builder <geth-ci@ethereum.org>" -upload ppa:ethereum/ethereum - go run build/ci.go debsrc -signer "Go Ethereum Linux Builder <geth-ci@ethereum.org>" -upload ppa:ethereum/ethereum
# This builder does the Linux Azure uploads # This builder does the Linux Azure uploads
- os: linux - if: type = push
os: linux
dist: trusty dist: trusty
sudo: required sudo: required
go: 1.11.x go: 1.11.x
@ -96,7 +98,8 @@ matrix:
- go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds - go run build/ci.go archive -arch arm64 -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
# This builder does the Linux Azure MIPS xgo uploads # This builder does the Linux Azure MIPS xgo uploads
- os: linux - if: type = push
os: linux
dist: trusty dist: trusty
services: services:
- docker - docker
@ -123,7 +126,8 @@ matrix:
- go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds - go run build/ci.go archive -arch mips64le -type tar -signer LINUX_SIGNING_KEY -upload gethstore/builds
# This builder does the Android Maven and Azure uploads # This builder does the Android Maven and Azure uploads
- os: linux - if: type = push
os: linux
dist: trusty dist: trusty
addons: addons:
apt: apt:
@ -160,7 +164,8 @@ matrix:
- go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org -upload gethstore/builds - go run build/ci.go aar -signer ANDROID_SIGNING_KEY -deploy https://oss.sonatype.org -upload gethstore/builds
# This builder does the OSX Azure, iOS CocoaPods and iOS Azure uploads # This builder does the OSX Azure, iOS CocoaPods and iOS Azure uploads
- os: osx - if: type = push
os: osx
go: 1.11.x go: 1.11.x
env: env:
- azure-osx - azure-osx
@ -188,7 +193,8 @@ matrix:
- go run build/ci.go xcode -signer IOS_SIGNING_KEY -deploy trunk -upload gethstore/builds - go run build/ci.go xcode -signer IOS_SIGNING_KEY -deploy trunk -upload gethstore/builds
# This builder does the Azure archive purges to avoid accumulating junk # This builder does the Azure archive purges to avoid accumulating junk
- os: linux - if: type = cron
os: linux
dist: trusty dist: trusty
go: 1.11.x go: 1.11.x
env: env:
@ -197,10 +203,3 @@ matrix:
submodules: false # avoid cloning ethereum/tests submodules: false # avoid cloning ethereum/tests
script: script:
- go run build/ci.go purge -store gethstore/builds -days 14 - go run build/ci.go purge -store gethstore/builds -days 14
notifications:
webhooks:
urls:
- https://webhooks.gitter.im/e/e09ccdce1048c5e03445
on_success: change
on_failure: always

@ -320,9 +320,7 @@ func goToolArch(arch string, cc string, subcmd string, args ...string) *exec.Cmd
// "tests" also includes static analysis tools such as vet. // "tests" also includes static analysis tools such as vet.
func doTest(cmdline []string) { func doTest(cmdline []string) {
var ( coverage := flag.Bool("coverage", false, "Whether to record code coverage")
coverage = flag.Bool("coverage", false, "Whether to record code coverage")
)
flag.CommandLine.Parse(cmdline) flag.CommandLine.Parse(cmdline)
env := build.Env() env := build.Env()
@ -332,14 +330,11 @@ func doTest(cmdline []string) {
} }
packages = build.ExpandPackagesNoVendor(packages) packages = build.ExpandPackagesNoVendor(packages)
// Run analysis tools before the tests.
build.MustRun(goTool("vet", packages...))
// Run the actual tests. // Run the actual tests.
gotest := goTool("test", buildFlags(env)...)
// Test a single package at a time. CI builders are slow // Test a single package at a time. CI builders are slow
// and some tests run into timeouts under load. // and some tests run into timeouts under load.
gotest.Args = append(gotest.Args, "-p", "1") gotest := goTool("test", buildFlags(env)...)
gotest.Args = append(gotest.Args, "-p", "1", "-timeout", "5m")
if *coverage { if *coverage {
gotest.Args = append(gotest.Args, "-covermode=atomic", "-cover") gotest.Args = append(gotest.Args, "-covermode=atomic", "-cover")
} }

Loading…
Cancel
Save