| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- #!/bin/bash
- set -euo pipefail
- # Copyright (C) 2016 The Syncthing Authors.
- #
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at https://mozilla.org/MPL/2.0/.
- ulimit -t 600 || true
- ulimit -d 1024000 || true
- ulimit -m 1024000 || true
- export CGO_ENABLED=0
- export GO386=387
- export GOARM=5
- function init {
- echo Initializing
- export GOPATH=$(pwd)
- export WORKSPACE="${WORKSPACE:-$GOPATH}"
- go version
- rm -f *.tar.gz *.zip *.deb *.snap
- cd src/github.com/syncthing/syncthing
- version=$(go run build.go version)
- echo "Building $version"
- echo
- }
- function clean {
- echo Cleaning
- rm -rf "$GOPATH/pkg"
- git clean -fxd
- rm -rf parts # created by snapcraft, contains git repo so not cleaned by git above
- echo
- }
- function fetchExtra {
- echo Fetching extra resources
- mkdir extra
- curl -s -o extra/Getting-Started.pdf https://docs.syncthing.net/pdf/Getting-Started.pdf
- curl -s -o extra/FAQ.pdf https://docs.syncthing.net/pdf/FAQ.pdf
- echo
- }
- function checkAuthorsCopyright {
- echo Basic metadata checks
- go run script/check-authors.go
- go run script/check-copyright.go lib/ cmd/ script/
- echo
- }
- function build {
- echo Build
- go run build.go
- echo
- }
- function test {
- echo Test with race
- CGO_ENABLED=1 go run build.go -race test
- echo
- }
- function testWithCoverage {
- echo Test with coverage
- CGO_ENABLED=1
- echo "mode: set" > coverage.out
- fail=0
- # For every package in the repo
- for dir in $(go list ./lib/... ./cmd/...) ; do
- # run the tests
- GOPATH="$(pwd)/Godeps/_workspace:$GOPATH" go test -coverprofile=profile.out $dir
- if [ -f profile.out ] ; then
- # and if there was test output, append it to coverage.out
- grep -v "mode: " profile.out >> coverage.out
- rm profile.out
- fi
- done
- gocov convert coverage.out | gocov-xml > coverage.xml
- # This is usually run from within Jenkins. If it is, we need to
- # tweak the paths in coverage.xml so cobertura finds the
- # source.
- if [[ "${WORKSPACE:-default}" != "default" ]] ; then
- sed "s#$WORKSPACE##g" < coverage.xml > coverage.xml.new && mv coverage.xml.new coverage.xml
- fi
- notCovered=$(egrep -c '\s0$' coverage.out)
- total=$(wc -l coverage.out | awk '{print $1}')
- coverPct=$(awk "BEGIN{print (1 - $notCovered / $total) * 100}")
- echo "$coverPct" > "coverage.txt"
- echo "Test coverage is $coverPct%%"
- echo
- CGO_ENABLED=0 # reset to before
- }
- function buildSource {
- echo Archiving source
- echo "$version" > RELEASE
- pushd .. >/dev/null
- tar c -z -f "$WORKSPACE/syncthing-source-$version.tar.gz" --exclude .git syncthing
- popd >/dev/null
- echo
- }
|