travis: refactored release to be easier to understand

There's now one target, `travis-release` that can be run
locally, or on Travis CI except for:

- code signing (Travis on non-PR runs)
- publishing artifacts to GH releases (Travis on tagged releases)
- creating long-term repository for testing (Travis on tagged releases)
This commit is contained in:
Jarek Kowalski committed 2020-02-02 22:23:08 -08:00
1 parent 390f7904e3
commit 2b07045ef9
6 files changed
+47 -57

No files matched your search

+9 -6
View File
@@ -1,7 +1,7 @@
dist: bionic
language: go
go:
- '1.13.x'
- 1.13.x
os:
- linux
- osx
@@ -13,15 +13,18 @@ install: make travis-setup
script: make travis-release
cache:
directories:
- $HOME/.cache/electron
- $HOME/.cache/electron-builder
- $HOME/.cache/electron
- $HOME/.cache/electron-builder
deploy:
- provider: script
script: make tagged-release
- provider: releases
api_key:
secure: L8xxKXwaUFByM0y/ztlimRsYOURwPY6HusQfeplHVp67y/GCpoSBDPLdk3KmzzQuxafl9u/jiSHUXAvC5h18no89a0AWjQjy63GjGAC1ND9kt2WfS6lwrtUo9ISLr5GasSOb0aMJ7V5oIrslKU1wuDraoGZIdXb0uNIiVVG86g2BDoY5gnYLpdmeqIOHtUIYgbHSfvW++t0PuD4OE/unRhoAXUFGb0Gz9KdQIBRZBvULLCySQ4wZp+LLh8GsRr982Rv4oraa++ddVGFqaDTfZq+hezuCXcmuSsWmTTk7M/J1mU0vuNQw90zAomLxPKZRWXSYBy4Sw1XBJH2Gkav3dKV3T7ZmN+mLmcUdTqnG5R2NC2lYtgQD5usFPjBgchrLUEATdlTOoKneZV3aieXcwTxRGXK9lG+a2VIHo3mAebUnbBmcASdpRwo52V42lsMgTWStTgC4Y7MdrH3zp4FolB/K6S6oKWwBakxYWAxJkMqnrG638EkJdhqGa5/rUVep6powPG4VurkNvuoNsYruj3Wp1Wzk2yj5yNIHfXHISaddeP3qqzF7Y540siyMnf+j3ji2FVrZBmqFl8/kgXd/p47Aum7XqgA7xhEgVm+6BSdheLy7FVuHfpP1G7SIw9yhuC5BSeKZ9BxYU7DHAWa2URQTTAy58NDXzB6ZeIwoFx8=
skip_cleanup: true
file: "dist/**"
draft: true
on:
tags: true
repo: kopia/kopia
tags: true
- provider: pages
skip_cleanup: true
github_token: "$GITHUB_TOKEN"
+34 -47
View File
@@ -1,4 +1,4 @@
COVERAGE_PACKAGES=./repo/...,./fs/...,./snapshot/...
COVERAGE_PACKAGES=github.com/kopia/kopia/repo/...,github.com/kopia/kopia/fs/...,github.com/kopia/kopia/snapshot/...
GO_TEST=go test
PARALLEL=8
TEST_FLAGS=
@@ -40,32 +40,12 @@ lint-and-log: $(LINTER_TOOL)
vet:
go vet -all .
build-linux-amd64:
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build ./...
build-windows-amd64:
CGO_ENABLED=0 GOARCH=amd64 GOOS=windows go build ./...
build-darwin-amd64:
CGO_ENABLED=0 GOARCH=amd64 GOOS=darwin go build ./...
build-linux-arm:
CGO_ENABLED=0 GOARCH=arm GOOS=linux go build ./...
build-linux-arm64:
CGO_ENABLED=0 GOARCH=arm64 GOOS=linux go build ./...
build-all: build-linux-amd64 build-windows-amd64 build-darwin-amd64 build-linux-arm build-linux-arm64
travis-setup: travis-install-gpg-key travis-install-test-credentials
go mod download
website:
$(MAKE) -C site build
kopia-ui: build-electron-all
$(MAKE) -C app build-electron-dir
html-ui:
$(MAKE) -C htmlui build-html
@@ -75,43 +55,50 @@ html-ui-bindata: html-ui $(BINDATA_TOOL)
html-ui-bindata-fallback: $(BINDATA_TOOL)
(cd internal/server && $(BINDATA_TOOL) -fs -tags !embedhtml -o "$(CURDIR)/internal/server/htmlui_fallback.go" -pkg server index.html)
# by default build unpacked Kopia UI for current OS only
KOPIA_UI_BUILD_TARGET=build-electron-dir
ifeq ($(TRAVIS_OS_NAME),osx)
kopia-ui-osx: goreleaser-nopublish
$(MAKE) -C app build-all-mac
travis-release-os-specific: kopia-ui-osx
# build and package Mac app
KOPIA_UI_BUILD_TARGET=build-all-mac
endif
ifeq ($(TRAVIS_OS_NAME),linux)
travis-release-os-specific: kopia-ui-win-linux
kopia-ui-win-linux: goreleaser-nopublish
$(MAKE) -C app build-all-win-linux-docker
# build and package Windows and Linux app
KOPIA_UI_BUILD_TARGET=build-all-win-linux-docker
endif
kopia-ui: goreleaser
$(MAKE) -C app $(KOPIA_UI_BUILD_TARGET)
travis-release: goreleaser kopia-ui website
$(MAKE) test-all
$(MAKE) integration-tests
$(MAKE) stress-test
ifneq ($(TRAVIS_TAG),)
$(MAKE) travis-create-long-term-repository
endif
test-all: lint vet test-with-coverage
# goreleaser - builds binaries for all platforms
GORELEASER_OPTIONS=--rm-dist --skip-publish
ifeq ($(TRAVIS_OS_NAME),)
travis-release-os-specific:
# not running on travis, skip signing
GORELEASER_OPTIONS+=--skip-sign
endif
travis-release: test-with-coverage lint vet goreleaser-nopublish integration-tests upload-coverage website stress-test travis-release-os-specific
ifeq ($(TRAVIS_TAG),)
# not a tagged release
GORELEASER_OPTIONS+=--snapshot
endif
goreleaser-nopublish: $(GORELEASER_TOOL)
$(GORELEASER_TOOL) --skip-publish --skip-sign --rm-dist --snapshot
tagged-release: $(GORELEASER_TOOL)
$(GORELEASER_TOOL) --rm-dist
# this is a no-op for PRs and non-tagged releses
$(MAKE) travis-create-long-term-repository
goreleaser: $(GORELEASER_TOOL)
$(GORELEASER_TOOL) $(GORELEASER_OPTIONS)
ifeq ($(TRAVIS_PULL_REQUEST),false)
upload-coverage: $(GOVERALLS_TOOL)
upload-coverage: $(GOVERALLS_TOOL) test-with-coverage
$(GOVERALLS_TOOL) -service=travis-ci -coverprofile=tmp.cov
else
@@ -131,7 +118,7 @@ dev-deps:
GO111MODULE=off go get -u github.com/sqs/goreturns
test-with-coverage:
$(GO_TEST) -count=1 -coverprofile=tmp.cov --coverpkg $(COVERAGE_PACKAGES) -timeout 90s github.com/kopia/kopia/...
$(GO_TEST) -count=1 -coverprofile=tmp.cov --coverpkg $(COVERAGE_PACKAGES) -timeout 90s `go list ./...`
test-with-coverage-pkgonly:
$(GO_TEST) -count=1 -coverprofile=tmp.cov -timeout 90s github.com/kopia/kopia/...
+2 -2
View File
@@ -86,13 +86,13 @@
"test": "react-scripts test",
"eject": "react-scripts eject",
"start-electron": "electron .",
"build-electron": "electron-builder -mwl",
"build-electron": "electron-builder",
"build-electron-all": "electron-builder -wlm",
"build-electron-win": "electron-builder -w --dir",
"build-electron-linux": "electron-builder -l",
"build-electron-win-linux": "electron-builder -wl",
"build-electron-mac": "electron-builder -m",
"build-electron-dir": "electron-builder --dir -wlm",
"build-electron-dir": "electron-builder --dir",
"start-electron-prebuilt": "ELECTRON_IS_DEV=0 electron .",
"dev": "concurrently \"react-scripts start\" \"sleep 3s; electron .\""
},
-1
View File
@@ -19,7 +19,6 @@ require (
github.com/klauspost/pgzip v1.2.1
github.com/kylelemons/godebug v1.1.0
github.com/minio/minio-go/v6 v6.0.45
github.com/mitchellh/go-homedir v1.1.0 // indirect
github.com/natefinch/atomic v0.0.0-20150920032501-a62ce929ffcc
github.com/op/go-logging v0.0.0-20160315200505-970db520ece7
github.com/pkg/errors v0.8.1
+1
View File
@@ -30,6 +30,7 @@ github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe2
github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U=
github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
github.com/efarrer/iothrottler v0.0.0-20141121142253-60e7e547c7fe h1:WAx1vRufH0I2pTWldQkXPzpc+jndCOi2FH334LFQ1PI=
+1 -1
View File
@@ -27,7 +27,7 @@ func TestStressBlockManager(t *testing.T) {
var duration = 3 * time.Second
if os.Getenv("KOPIA_LONG_STRESS_TEST") != "" {
duration = 3 * time.Minute
duration = 30 * time.Second
}
stressTestWithStorage(t, memst, duration)