mirror of
https://github.com/rclone/rclone.git
synced 2024-11-22 08:23:47 +01:00
build: use matrix build for travis
This makes the build more efficient, the .travis.yml file more comprehensible and reduces the Makefile spaghetti. Windows support is commented out for the moment as it isn't very reliable yet.
This commit is contained in:
parent
5aa706831f
commit
1bd8183af1
107
.travis.yml
107
.travis.yml
@ -1,27 +1,33 @@
|
|||||||
|
---
|
||||||
language: go
|
language: go
|
||||||
sudo: required
|
sudo: required
|
||||||
dist: trusty
|
dist: trusty
|
||||||
os:
|
os:
|
||||||
- linux
|
- linux
|
||||||
go:
|
|
||||||
- 1.8.x
|
|
||||||
- 1.9.x
|
|
||||||
- 1.10.x
|
|
||||||
- 1.11.x
|
|
||||||
- 1.12.x
|
|
||||||
- tip
|
|
||||||
go_import_path: github.com/ncw/rclone
|
go_import_path: github.com/ncw/rclone
|
||||||
before_install:
|
before_install:
|
||||||
- if [[ $TRAVIS_OS_NAME == linux ]]; then sudo modprobe fuse ; sudo chmod 666 /dev/fuse ; sudo chown root:$USER /etc/fuse.conf ; fi
|
- git fetch --unshallow --tags
|
||||||
- if [[ $TRAVIS_OS_NAME == osx ]]; then brew update && brew tap caskroom/cask && brew cask install osxfuse ; fi
|
- |
|
||||||
|
if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
|
||||||
|
sudo modprobe fuse
|
||||||
|
sudo chmod 666 /dev/fuse
|
||||||
|
sudo chown root:$USER /etc/fuse.conf
|
||||||
|
fi
|
||||||
|
if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||||
|
brew update
|
||||||
|
brew tap caskroom/cask
|
||||||
|
brew cask install osxfuse
|
||||||
|
fi
|
||||||
|
if [[ "$TRAVIS_OS_NAME" == "windows" ]]; then
|
||||||
|
choco install -y winfsp zip make
|
||||||
|
cd ../.. # fix crlf in git checkout
|
||||||
|
mv $TRAVIS_REPO_SLUG _old
|
||||||
|
git config --global core.autocrlf false
|
||||||
|
git clone _old $TRAVIS_REPO_SLUG
|
||||||
|
cd $TRAVIS_REPO_SLUG
|
||||||
|
fi
|
||||||
install:
|
install:
|
||||||
- git fetch --unshallow --tags
|
- make vars
|
||||||
- make vars
|
|
||||||
- make build_dep
|
|
||||||
script:
|
|
||||||
- make check
|
|
||||||
- make quicktest
|
|
||||||
- make compile_all
|
|
||||||
env:
|
env:
|
||||||
global:
|
global:
|
||||||
- GOTAGS=cmount
|
- GOTAGS=cmount
|
||||||
@ -32,23 +38,66 @@ env:
|
|||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- fuse
|
- fuse
|
||||||
- libfuse-dev
|
- libfuse-dev
|
||||||
- rpm
|
- rpm
|
||||||
- pkg-config
|
- pkg-config
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
- $HOME/.cache/go-build
|
- $HOME/.cache/go-build
|
||||||
matrix:
|
matrix:
|
||||||
allow_failures:
|
allow_failures:
|
||||||
- go: tip
|
- go: tip
|
||||||
include:
|
include:
|
||||||
- os: osx
|
- go: 1.8.x
|
||||||
go: 1.12.x
|
script:
|
||||||
env: GOTAGS=""
|
- make quicktest
|
||||||
cache:
|
- go: 1.9.x
|
||||||
directories:
|
script:
|
||||||
- $HOME/Library/Caches/go-build
|
- make quicktest
|
||||||
|
- go: 1.10.x
|
||||||
|
script:
|
||||||
|
- make quicktest
|
||||||
|
- go: 1.11.x
|
||||||
|
script:
|
||||||
|
- make quicktest
|
||||||
|
- go: 1.12.x
|
||||||
|
env:
|
||||||
|
- GOTAGS=cmount
|
||||||
|
script:
|
||||||
|
- make build_dep
|
||||||
|
- make check
|
||||||
|
- make quicktest
|
||||||
|
- make racequicktest
|
||||||
|
- make compile_all
|
||||||
|
- os: osx
|
||||||
|
go: 1.12.x
|
||||||
|
env:
|
||||||
|
- GOTAGS= # cmount doesn't work on osx travis for some reason
|
||||||
|
cache:
|
||||||
|
directories:
|
||||||
|
- $HOME/Library/Caches/go-build
|
||||||
|
script:
|
||||||
|
- make
|
||||||
|
- make quicktest
|
||||||
|
- make racequicktest
|
||||||
|
# - os: windows
|
||||||
|
# go: 1.12.x
|
||||||
|
# env:
|
||||||
|
# - GOTAGS=cmount
|
||||||
|
# - CPATH='C:\Program Files (x86)\WinFsp\inc\fuse'
|
||||||
|
# #filter_secrets: false # works around a problem with secrets under windows
|
||||||
|
# cache:
|
||||||
|
# directories:
|
||||||
|
# - ${LocalAppData}/go-build
|
||||||
|
# script:
|
||||||
|
# - make
|
||||||
|
# - make quicktest
|
||||||
|
# - make racequicktest
|
||||||
|
- go: tip
|
||||||
|
script:
|
||||||
|
- make quicktest
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
provider: script
|
provider: script
|
||||||
script: make travis_beta
|
script: make travis_beta
|
||||||
@ -57,4 +106,4 @@ deploy:
|
|||||||
repo: ncw/rclone
|
repo: ncw/rclone
|
||||||
all_branches: true
|
all_branches: true
|
||||||
go: 1.12.x
|
go: 1.12.x
|
||||||
condition: $TRAVIS_PULL_REQUEST == false
|
condition: $TRAVIS_PULL_REQUEST == false && $TRAVIS_OS_NAME != "windows"
|
||||||
|
22
Makefile
22
Makefile
@ -17,8 +17,6 @@ ifneq ($(TAG),$(LAST_TAG))
|
|||||||
endif
|
endif
|
||||||
GO_VERSION := $(shell go version)
|
GO_VERSION := $(shell go version)
|
||||||
GO_FILES := $(shell go list ./... | grep -v /vendor/ )
|
GO_FILES := $(shell go list ./... | grep -v /vendor/ )
|
||||||
# Run full tests if go >= go1.12
|
|
||||||
FULL_TESTS := $(shell go version | perl -lne 'print "go$$1.$$2" if /go(\d+)\.(\d+)/ && ($$1 > 1 || $$2 >= 12)')
|
|
||||||
BETA_PATH := $(BRANCH_PATH)$(TAG)
|
BETA_PATH := $(BRANCH_PATH)$(TAG)
|
||||||
BETA_URL := https://beta.rclone.org/$(BETA_PATH)/
|
BETA_URL := https://beta.rclone.org/$(BETA_PATH)/
|
||||||
BETA_UPLOAD_ROOT := memstore:beta-rclone-org
|
BETA_UPLOAD_ROOT := memstore:beta-rclone-org
|
||||||
@ -42,7 +40,6 @@ vars:
|
|||||||
@echo LAST_TAG="'$(LAST_TAG)'"
|
@echo LAST_TAG="'$(LAST_TAG)'"
|
||||||
@echo NEW_TAG="'$(NEW_TAG)'"
|
@echo NEW_TAG="'$(NEW_TAG)'"
|
||||||
@echo GO_VERSION="'$(GO_VERSION)'"
|
@echo GO_VERSION="'$(GO_VERSION)'"
|
||||||
@echo FULL_TESTS="'$(FULL_TESTS)'"
|
|
||||||
@echo BETA_URL="'$(BETA_URL)'"
|
@echo BETA_URL="'$(BETA_URL)'"
|
||||||
|
|
||||||
version:
|
version:
|
||||||
@ -57,28 +54,22 @@ test: rclone
|
|||||||
# Quick test
|
# Quick test
|
||||||
quicktest:
|
quicktest:
|
||||||
RCLONE_CONFIG="/notfound" go test $(BUILDTAGS) $(GO_FILES)
|
RCLONE_CONFIG="/notfound" go test $(BUILDTAGS) $(GO_FILES)
|
||||||
ifdef FULL_TESTS
|
|
||||||
|
racequicktest:
|
||||||
RCLONE_CONFIG="/notfound" go test $(BUILDTAGS) -cpu=2 -race $(GO_FILES)
|
RCLONE_CONFIG="/notfound" go test $(BUILDTAGS) -cpu=2 -race $(GO_FILES)
|
||||||
endif
|
|
||||||
|
|
||||||
# Do source code quality checks
|
# Do source code quality checks
|
||||||
check: rclone
|
check: rclone
|
||||||
ifdef FULL_TESTS
|
|
||||||
@# we still run go vet for -printfuncs which golangci-lint doesn't do yet
|
@# we still run go vet for -printfuncs which golangci-lint doesn't do yet
|
||||||
@# see: https://github.com/golangci/golangci-lint/issues/204
|
@# see: https://github.com/golangci/golangci-lint/issues/204
|
||||||
@echo "-- START CODE QUALITY REPORT -------------------------------"
|
@echo "-- START CODE QUALITY REPORT -------------------------------"
|
||||||
@go vet $(BUILDTAGS) -printfuncs Debugf,Infof,Logf,Errorf ./...
|
@go vet $(BUILDTAGS) -printfuncs Debugf,Infof,Logf,Errorf ./...
|
||||||
@golangci-lint run ./...
|
@golangci-lint run ./...
|
||||||
@echo "-- END CODE QUALITY REPORT ---------------------------------"
|
@echo "-- END CODE QUALITY REPORT ---------------------------------"
|
||||||
else
|
|
||||||
@echo Skipping source quality tests as version of go too old
|
|
||||||
endif
|
|
||||||
|
|
||||||
# Get the build dependencies
|
# Get the build dependencies
|
||||||
build_dep:
|
build_dep:
|
||||||
ifdef FULL_TESTS
|
|
||||||
go run bin/get-github-release.go -extract golangci-lint golangci/golangci-lint 'golangci-lint-.*\.tar\.gz'
|
go run bin/get-github-release.go -extract golangci-lint golangci/golangci-lint 'golangci-lint-.*\.tar\.gz'
|
||||||
endif
|
|
||||||
|
|
||||||
# Get the release dependencies
|
# Get the release dependencies
|
||||||
release_dep:
|
release_dep:
|
||||||
@ -162,11 +153,7 @@ log_since_last_release:
|
|||||||
git log $(LAST_TAG)..
|
git log $(LAST_TAG)..
|
||||||
|
|
||||||
compile_all:
|
compile_all:
|
||||||
ifdef FULL_TESTS
|
|
||||||
go run bin/cross-compile.go -parallel 8 -compile-only $(BUILDTAGS) $(TAG)
|
go run bin/cross-compile.go -parallel 8 -compile-only $(BUILDTAGS) $(TAG)
|
||||||
else
|
|
||||||
@echo Skipping compile all as version of go too old
|
|
||||||
endif
|
|
||||||
|
|
||||||
appveyor_upload:
|
appveyor_upload:
|
||||||
rclone --config bin/travis.rclone.conf -v copy --exclude '*beta-latest*' build/ $(BETA_UPLOAD)
|
rclone --config bin/travis.rclone.conf -v copy --exclude '*beta-latest*' build/ $(BETA_UPLOAD)
|
||||||
@ -186,6 +173,11 @@ BUILD_FLAGS := -exclude "^(windows|darwin)/"
|
|||||||
ifeq ($(TRAVIS_OS_NAME),osx)
|
ifeq ($(TRAVIS_OS_NAME),osx)
|
||||||
BUILD_FLAGS := -include "^darwin/" -cgo
|
BUILD_FLAGS := -include "^darwin/" -cgo
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(TRAVIS_OS_NAME),windows)
|
||||||
|
# BUILD_FLAGS := -include "^windows/" -cgo
|
||||||
|
# 386 doesn't build yet
|
||||||
|
BUILD_FLAGS := -include "^windows/amd64" -cgo
|
||||||
|
endif
|
||||||
|
|
||||||
travis_beta:
|
travis_beta:
|
||||||
ifeq ($(TRAVIS_OS_NAME),linux)
|
ifeq ($(TRAVIS_OS_NAME),linux)
|
||||||
|
Loading…
Reference in New Issue
Block a user