Merge pull request from safing/feature/travis/setup

Setup Travis CI tests and releases deployment
This commit is contained in:
Daniel 2020-01-29 12:13:26 +01:00 committed by GitHub
commit 5bbd384301
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 145 additions and 6 deletions

5
.gitignore vendored
View file

@ -1,4 +1,5 @@
cpu.out
vendor
cmd/cmd
cmd/jess
cmd/cmd*
cmd/jess*
dist

View file

@ -6,6 +6,7 @@ go:
os:
- linux
- windows
- osx
branches:
only:
@ -13,6 +14,10 @@ branches:
- develop
- /^feature\/travis\/.+$/ # feature/travis/*
- /^fix\/travis\/.+$/ # fix/travis/*
- /^v.*$/ # version tags
git:
autocrlf: false # gofmt doesn't like CRLF
install:
- go get -d -u github.com/golang/dep
@ -20,4 +25,22 @@ install:
- dep ensure
- ./test install
script: ./test --scripted
script:
- ./test --scripted
- ./pack build-os
deploy:
provider: releases
token:
secure: "Qj3iEGWiAH7uTfOcY6Hi1qF573R5eKjoiJRKgbkt8W7JNOeW+QJD/Vv78q3tpY3UkG1Ez4sOWRsXHrCF6V462NFoY/VFsb5V1i8WP9+v0Z0uNtYFWfWcp0HBN7jT9xsbCwnF4KnaWx+7hOpxeY+L6bBDnsIXMnK/rOWI+HdM2IFdXSEqvpoBERGyNKuPJMdssvX2tbitvRmj13RVZWQoBvxUr2DB8WAavG4afuqwkzoIHw11HpRf2v8BZ8eB1rO6FxaaC2yb8GsFwKsKLUVuqS5carZQVewHSAifh4Zq3f6fZDYRR5gBm8pLeMghWIt6rwo8L1/Fn3uZUkhKFLUR3zrEkxoHdf4jZjJ1oC4zcSDHJKA20QVCTfZGM1OaXmS7UzftRz/855tGvF746M1gSNzMPNmK2thgEgxW3UlOxbSSMvd5NDpTyPYn+DAW3lPDRNNH9a0t+C1mfb3SI4uHl+QaQ9BKSLpIwOJRVEAbrl7Vt7gs5pLJmj3bcwiZ3jjfEwuTNg6n+5QypUdWDY3sQ0EQVOHOHuSRR2TcnSd8wvVPKY7LZ+Fq8Dm0/lTKnz9pyy1psdUZpTEZ97IO3y7gFg3GSKGOoKkx94V5QtTSM9h3TFGFAF275n0MO5LTKyWZtT/1x9/G1k80fNAOHE9cooJAw580uI305pr3r3hjmN0="
file_glob: true
file: dist/*
skip_cleanup: true
overwrite: true
on:
tags: true
# encrypting the Github Peronal Access Token:
# docker run --rm -ti ruby /bin/bash
# gem install travis
# travis encrypt -r safing/jess <TOKEN>

View file

@ -1,5 +1,8 @@
#!/bin/bash
baseDir="$( cd "$(dirname "$0")" && pwd )"
cd "$baseDir"
# get build data
if [[ "$BUILD_COMMIT" == "" ]]; then
BUILD_COMMIT=$(git describe --all --long --abbrev=99 --dirty 2>/dev/null)
@ -8,7 +11,7 @@ if [[ "$BUILD_USER" == "" ]]; then
BUILD_USER=$(id -un)
fi
if [[ "$BUILD_HOST" == "" ]]; then
BUILD_HOST=$(hostname -f)
BUILD_HOST=$(hostname)
fi
if [[ "$BUILD_DATE" == "" ]]; then
BUILD_DATE=$(date +%d.%m.%Y)
@ -45,7 +48,7 @@ fi
echo "Please notice, that this build script includes metadata into the build."
echo "This information is useful for debugging and license compliance."
echo "Run the compiled binary with the -version flag to see the information included."
echo "Run the compiled binary with the version command to see the information included."
# build
BUILD_PATH="github.com/safing/jess/vendor/github.com/safing/portbase/info"

View file

@ -40,7 +40,7 @@ var (
)
func main() {
info.Set("jess", "v0.0.1", "GPLv3", true)
info.Set("jess", "0.0.1", "GPLv3", true)
err := info.CheckVersion()
if err != nil {

112
pack Executable file
View file

@ -0,0 +1,112 @@
#!/bin/bash
baseDir="$( cd "$(dirname "$0")" && pwd )"
cd "$baseDir"
COL_OFF="\033[00m"
COL_BOLD="\033[01;01m"
COL_RED="\033[31m"
destDirPart1="dist"
function check {
# output
output="cmd"
# get version
version=$(grep "info.Set" cmd/main.go | cut -d'"' -f4)
# build versioned file name with platform
filename="jess_${GOOS}_${GOARCH}_v${version//./-}"
# platform
platform="${GOOS}_${GOARCH}"
if [[ $GOOS == "windows" ]]; then
filename="${filename}.exe"
output="${output}.exe"
fi
# build destination path
destPath=${destDirPart1}/$filename
# check if file exists
if [[ -f $destPath ]]; then
echo "$platform $version already built"
else
echo -e "${COL_BOLD}$platform $version${COL_OFF}"
fi
}
function build {
# output
output="cmd/cmd"
# get version
version=$(grep "info.Set" cmd/main.go | cut -d'"' -f4)
# build versioned file name with platform
filename="jess_${GOOS}_${GOARCH}_v${version//./-}"
# platform
platform="${GOOS}_${GOARCH}"
if [[ $GOOS == "windows" ]]; then
filename="${filename}.exe"
output="${output}.exe"
fi
# build destination path
destPath=${destDirPart1}/$filename
# check if file exists
if [[ -f $destPath ]]; then
echo "$platform already built in version $version, skipping..."
return
fi
# build
./cmd/build
if [[ $? -ne 0 ]]; then
echo -e "\n${COL_BOLD}$platform: ${COL_RED}BUILD FAILED.${COL_OFF}"
exit 1
fi
mkdir -p $(dirname $destPath)
cp $output $destPath
echo -e "\n${COL_BOLD}$platform: successfully built.${COL_OFF}"
}
function check_all {
GOOS=linux GOARCH=amd64 check
GOOS=windows GOARCH=amd64 check
GOOS=darwin GOARCH=amd64 check
}
function build_all {
GOOS=linux GOARCH=amd64 build
GOOS=windows GOARCH=amd64 build
GOOS=darwin GOARCH=amd64 build
}
function build_os {
# build only for current OS
# set for script
GOOS=$(go env GOOS)
# architectures
GOARCH=amd64 build
}
case $1 in
"check" )
check_all
;;
"build" )
build_all
;;
"build-os" )
build_os
;;
* )
echo ""
echo "build list:"
echo ""
check_all
echo ""
read -p "press [Enter] to start building" x
echo ""
build_all
echo ""
echo "finished building."
echo ""
;;
esac