1
0

Create build script for Jenkins (and use it) (#4473)

* Add Jenkins build script, so it can actually be used.
* Build tools
* Reduce build threads to 2 so as not to overload server
* Rename CIBuild.sh to travisbuild.sh, better reflect actual use
* Echo commands as they are executed
* Add toolchain file configuration
This commit is contained in:
Alexander Harkness 2020-02-24 11:28:24 +00:00 committed by GitHub
parent a0d2e934eb
commit cfedb03a09
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 85 additions and 1 deletions

View File

@ -66,7 +66,7 @@ matrix:
before_script: before_script:
- export PATH=$(echo "$PATH" | sed -e 's/:\/usr\/lib\/ccache//') - export PATH=$(echo "$PATH" | sed -e 's/:\/usr\/lib\/ccache//')
script: ./CIbuild.sh script: ./travisbuild.sh
cache: ccache cache: ccache

84
jenkinsbuild.sh Executable file
View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
set -ex
# Parse arguments.
while [[ $# -gt 1 ]]
do
key="$1"
case $key in
-s|--server-name)
SERVERNAME="$2"
shift
;;
-t|--target)
TARGET="$2"
shift
;;
-c|--compiler)
CCOMP="$2"
shift
;;
-cxx|--cxx-compiler)
CXXCOMP="$2"
shift
;;
-m|--compile-mode)
COMPILEMODE="-DCMAKE_BUILD_TYPE=$2"
shift
;;
-n|--build-number)
BUILDID="$2"
shift
;;
-p|--toolchain-file)
TOOLCHAINFILE="-DCMAKE_TOOLCHAIN_FILE=$2"
shift
;;
-b|--branch)
BRANCH="$2"
shift
;;
-32|--force-32)
FORCE32="-DFORCE_32=$2"
shift
;;
*)
;;
esac
shift
done
git submodule update --init
# Set up build information.
export CUBERITE_BUILD_SERIES_NAME="$SERVERNAME $TARGET $COMPILEMODE ($BRANCH)"
export CUBERITE_BUILD_ID="$BUILDID"
export CUBERITE_BUILD_DATETIME="`date`"
export CCACHE_CPP2=true
CACHE_ARGS="-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache"
# Build
CXX=$CXXCOMP CC=$CCOMP cmake . -DNO_NATIVE_OPTIMIZATION=1 -DBUILD_TOOLS=1 ${TOOLCHAINFILE} ${COMPILEMODE^^} ${FORCE32^^}
make -j 2
# Package Server
echo Cuberite "$CUBERITE_BUILD_SERIES_NAME-$CUBERITE_BUILD_ID\n$BUILD_URL" > Server/buildinfo.txt
# h: dereference (archive file/folder instead of symlink)
# z: gzip (compress)
# c: create
# v: verbose
# T: files-from (list of server files accepted for release archives)
# f: file (output file location)
pushd Server
tar -hzcv -T Install/UnixExecutables.list -f ../Cuberite.tar.gz
popd
sha1sum Cuberite.tar.gz > Cuberite.tar.gz.sha1
# Package ProtoProxy
pushd Tools/ProtoProxy
sha1sum ProtoProxy > ProtoProxy.sha1
popd