Add CI fixes and improvements (#780)
* Update GolangCI-lint and lint config The `algo` parameter for the `unparam` linter has been removed and we should thus no longer specify it. Also, bumping the GolangCI-lint version to the latest available minor release. See: mvdan/unparam@e6a6d1c51b * Fix and improve bintray CI script * Further CI setup improvements * Split-out CI steps into stand-alone scripts
This commit is contained in:
parent
17cc14a9d2
commit
7f0e4ad448
|
@ -7,7 +7,7 @@ run:
|
||||||
# concurrency: 4
|
# concurrency: 4
|
||||||
|
|
||||||
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
# timeout for analysis, e.g. 30s, 5m, default is 1m
|
||||||
deadline: 1m
|
deadline: 2m
|
||||||
|
|
||||||
# exit code when at least one issue was found, default is 1
|
# exit code when at least one issue was found, default is 1
|
||||||
issues-exit-code: 1
|
issues-exit-code: 1
|
||||||
|
@ -105,10 +105,6 @@ linters-settings:
|
||||||
# with golangci-lint call it on a directory with the changed file.
|
# with golangci-lint call it on a directory with the changed file.
|
||||||
check-exported: false
|
check-exported: false
|
||||||
unparam:
|
unparam:
|
||||||
# call graph construction algorithm (cha, rta). In general, use cha for libraries,
|
|
||||||
# and rta for programs with main packages. Default is cha.
|
|
||||||
algo: rta
|
|
||||||
|
|
||||||
# Inspect exported functions, default is false. Set to true if no external program/library imports your code.
|
# Inspect exported functions, default is false. Set to true if no external program/library imports your code.
|
||||||
# XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
|
# XXX: if you enable this setting, unparam will report a lot of false-positives in text editors:
|
||||||
# if it's called for subdir of a project it can't find external interfaces. All text editor integrations
|
# if it's called for subdir of a project it can't find external interfaces. All text editor integrations
|
||||||
|
|
80
.travis.yml
80
.travis.yml
|
@ -1,75 +1,55 @@
|
||||||
language: go
|
language: go
|
||||||
go:
|
|
||||||
- 1.12.x
|
|
||||||
go_import_path: github.com/42wim/matterbridge
|
go_import_path: github.com/42wim/matterbridge
|
||||||
|
|
||||||
# we have everything vendored
|
# We have everything vendored so this helps TravisCI not run `go get ...`.
|
||||||
install: true
|
install: true
|
||||||
|
|
||||||
git:
|
git:
|
||||||
depth: 200
|
depth: 200
|
||||||
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- GOOS=linux GOARCH=amd64
|
|
||||||
- GO111MODULE=on
|
|
||||||
- GOLANGCI_VERSION="v1.14.0"
|
|
||||||
|
|
||||||
matrix:
|
|
||||||
# It's ok if our code fails on unstable development versions of Go.
|
|
||||||
allow_failures:
|
|
||||||
- go: tip
|
|
||||||
# Don't wait for tip tests to finish. Mark the test run green if the
|
|
||||||
# tests pass on the stable versions of Go.
|
|
||||||
fast_finish: true
|
|
||||||
|
|
||||||
notifications:
|
notifications:
|
||||||
email: false
|
email: false
|
||||||
|
|
||||||
before_script:
|
|
||||||
# Get version info from tags.
|
|
||||||
- MY_VERSION="$(git describe --tags)"
|
|
||||||
# Retrieve the golangci-lint linter binary.
|
|
||||||
- curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b ${GOPATH}/bin ${GOLANGCI_VERSION}
|
|
||||||
# Retrieve and prepare CodeClimate's test coverage reporter.
|
|
||||||
- curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
|
||||||
- chmod +x ./cc-test-reporter
|
|
||||||
- ./cc-test-reporter before-build
|
|
||||||
|
|
||||||
script:
|
|
||||||
# Ensure that the module files are being kept correctly and that vendored dependencies are up-to-date.
|
|
||||||
- go mod tidy
|
|
||||||
- go mod vendor
|
|
||||||
- git diff --exit-code --quiet || (echo "Please run 'go mod tidy' to clean up the 'go.mod' and 'go.sum' files."; false)
|
|
||||||
|
|
||||||
# Run the linter.
|
|
||||||
- golangci-lint run
|
|
||||||
|
|
||||||
# Run all the tests with the race detector and generate coverage.
|
|
||||||
- go test -v -race -coverprofile c.out ./...
|
|
||||||
|
|
||||||
# Run the build script to generate the necessary binaries and images.
|
|
||||||
- /bin/bash ci/bintray.sh
|
|
||||||
|
|
||||||
after_script:
|
|
||||||
# Upload test coverage to CodeClimate.
|
|
||||||
- ./cc-test-reporter after-build --exit-code ${TRAVIS_TEST_RESULT}
|
|
||||||
|
|
||||||
branches:
|
branches:
|
||||||
only:
|
only:
|
||||||
- master
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- stage: lint
|
||||||
|
# Run linting in one Go environment only.
|
||||||
|
script: ./ci/lint.sh
|
||||||
|
go: 1.12.x
|
||||||
|
env:
|
||||||
|
- GO111MODULE=on
|
||||||
|
- GOLANGCI_VERSION="v1.15.0"
|
||||||
|
- stage: test
|
||||||
|
# Run tests in a combination of Go environments.
|
||||||
|
script: ./ci/test.sh
|
||||||
|
go: 1.11.x
|
||||||
|
env:
|
||||||
|
- GO111MODULE=off
|
||||||
|
- script: ./ci/test.sh
|
||||||
|
go: 1.11.x
|
||||||
|
env:
|
||||||
|
- GO111MODULE=on
|
||||||
|
- script: ./ci/test.sh
|
||||||
|
go: 1.12.x
|
||||||
|
env:
|
||||||
|
- GO111MODULE=on
|
||||||
|
- REPORT_COVERAGE=1
|
||||||
|
|
||||||
deploy:
|
deploy:
|
||||||
on:
|
on:
|
||||||
all_branches: true
|
all_branches: true
|
||||||
|
condition: env(TRAVIS_GO_VERSION) = 1.12.x AND env(GO111MODULE) = on
|
||||||
|
before_deploy:
|
||||||
|
# Run the build script to generate the necessary binaries and images.
|
||||||
|
- /bin/bash ci/bintray.sh
|
||||||
provider: bintray
|
provider: bintray
|
||||||
on:
|
|
||||||
all_branches: true
|
|
||||||
edge:
|
edge:
|
||||||
branch: v1.8.47
|
branch: v1.8.47
|
||||||
file: ci/deploy.json
|
file: ci/deploy.json
|
||||||
user: 42wim
|
user: 42wim
|
||||||
on:
|
|
||||||
all_branches: true
|
|
||||||
key:
|
key:
|
||||||
secure: "CeXXe6JOmt7HYR81MdWLua0ltQHhDdkIeRGBFbgd7hkb1wi8eF9DgpAcQrTso8NIlHNZmSAP46uhFgsRvkuezzX0ygalZ7DCJyAyn3sAMEh+UQSHV1WGThRehTtidqRGjetzsIGSwdrJOWil+XTfbO1Z8DGzfakhSuAZka8CM4BAoe3YeP9rYK8h+84x0GHfczvsLtXZ3mWLvQuwe4pK6+ItBCUg0ae7O7ZUpWHy0xQQkkWztY/6RAzXfaG7DuGjIw+20fhx3WOXRNpHCtZ6Bc3qERCpk0s1HhlQWlrN9wDaFTBWYwlvSnNgvxxMbNXJ6RrRJ0l0bA7FUswYwyroxhzrGLdzWDg8dHaQkypocngdalfhpsnoO9j3ApJhomUFJ3UoEq5nOGRUrKn8MPi+dP0zE4kNQ3e4VNa1ufNrvfpWolMg3xh8OXuhQdD5wIM5zFAbRJLqWSCVAjPq4DDPecmvXBOlIial7oa312lN5qnBnUjvAcxszZ+FUyDHT1Grxzna4tMwxY9obPzZUzm7359AOCCwIQFVB8GLqD2nwIstcXS0zGRz+fhviPipHuBa02q5bGUZwmkvrSNab0s8Jo7pCrel2Rz3nWPKaiCfq2WjbW1CLheSMkOQrjsdUd1hhbqNWFPUjJPInTc77NAKCfm5runv5uyowRLh4NNd0sI="
|
secure: "CeXXe6JOmt7HYR81MdWLua0ltQHhDdkIeRGBFbgd7hkb1wi8eF9DgpAcQrTso8NIlHNZmSAP46uhFgsRvkuezzX0ygalZ7DCJyAyn3sAMEh+UQSHV1WGThRehTtidqRGjetzsIGSwdrJOWil+XTfbO1Z8DGzfakhSuAZka8CM4BAoe3YeP9rYK8h+84x0GHfczvsLtXZ3mWLvQuwe4pK6+ItBCUg0ae7O7ZUpWHy0xQQkkWztY/6RAzXfaG7DuGjIw+20fhx3WOXRNpHCtZ6Bc3qERCpk0s1HhlQWlrN9wDaFTBWYwlvSnNgvxxMbNXJ6RrRJ0l0bA7FUswYwyroxhzrGLdzWDg8dHaQkypocngdalfhpsnoO9j3ApJhomUFJ3UoEq5nOGRUrKn8MPi+dP0zE4kNQ3e4VNa1ufNrvfpWolMg3xh8OXuhQdD5wIM5zFAbRJLqWSCVAjPq4DDPecmvXBOlIial7oa312lN5qnBnUjvAcxszZ+FUyDHT1Grxzna4tMwxY9obPzZUzm7359AOCCwIQFVB8GLqD2nwIstcXS0zGRz+fhviPipHuBa02q5bGUZwmkvrSNab0s8Jo7pCrel2Rz3nWPKaiCfq2WjbW1CLheSMkOQrjsdUd1hhbqNWFPUjJPInTc77NAKCfm5runv5uyowRLh4NNd0sI="
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
#!/bin/bash
|
#!/usr/bin/env bash
|
||||||
go version | grep go1.11 || exit
|
set -u -e -x -o pipefail
|
||||||
|
|
||||||
|
go version | grep go1.12 || exit
|
||||||
|
|
||||||
VERSION=$(git describe --tags)
|
VERSION=$(git describe --tags)
|
||||||
mkdir ci/binaries
|
mkdir ci/binaries
|
||||||
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o ci/binaries/matterbridge-$VERSION-windows-amd64.exe
|
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o ci/binaries/matterbridge-$VERSION-windows-amd64.exe
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -u -e -x -o pipefail
|
||||||
|
|
||||||
|
if [[ -n "${GOLANGCI_VERSION-}" ]]; then
|
||||||
|
# Retrieve the golangci-lint linter binary.
|
||||||
|
curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | bash -s -- -b ${GOPATH}/bin ${GOLANGCI_VERSION}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run the linter.
|
||||||
|
golangci-lint run
|
||||||
|
|
||||||
|
if [[ "${GO111MODULE-off}" == "on" ]]; then
|
||||||
|
# If Go modules are active then check that dependencies are correctly maintained.
|
||||||
|
go mod tidy
|
||||||
|
go mod vendor
|
||||||
|
git diff --exit-code --quiet || (echo "Please run 'go mod tidy' to clean up the 'go.mod' and 'go.sum' files."; false)
|
||||||
|
fi
|
|
@ -0,0 +1,17 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -u -e -x -o pipefail
|
||||||
|
|
||||||
|
if [[ -n "${REPORT_COVERAGE+cover}" ]]; then
|
||||||
|
# Retrieve and prepare CodeClimate's test coverage reporter.
|
||||||
|
curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
|
||||||
|
chmod +x ./cc-test-reporter
|
||||||
|
./cc-test-reporter before-build
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run all the tests with the race detector and generate coverage.
|
||||||
|
go test -v -race -coverprofile c.out ./...
|
||||||
|
|
||||||
|
if [[ -n "${REPORT_COVERAGE+cover}" && "${TRAVIS_SECURE_ENV_VARS}" == "true" ]]; then
|
||||||
|
# Upload test coverage to CodeClimate.
|
||||||
|
./cc-test-reporter after-build
|
||||||
|
fi
|
Loading…
Reference in New Issue