Introducing gitlab-ci configuration for komodo builds.

Modifying makeRelease.sh to add additional dynamic libraries to the mac artifact package to support MacOS Sierra systems.
This commit is contained in:
Asher Dawes
2018-10-18 01:09:03 -07:00
parent 7f4dfde929
commit 167047c7d9
2 changed files with 218 additions and 9 deletions

162
.gitlab-ci.yml Normal file
View File

@@ -0,0 +1,162 @@
stages:
- build
- test
########################################################################################################################
####START#### PROJECT LEVEL VARIABLES ####START####
########################################################################################################################
variables:
PACKAGE_DIR_LINUX: linux64
PACKAGE_DIR_WINDOWS: win64
PACKAGE_DIR_MACOS: macos
AGAMA_ARTIFACTS_LINUX: ${PACKAGE_DIR_LINUX}.tar.gz
AGAMA_ARTIFACTS_WINDOWS: ${PACKAGE_DIR_WINDOWS}.zip
AGAMA_ARTIFACTS_MACOS: ${PACKAGE_DIR_MACOS}.tar.gz
AGAMA_ARTIFACTS_LINUX_CHECKSUM: ${AGAMA_ARTIFACTS_LINUX}.md5
AGAMA_ARTIFACTS_WINDOWS_CHECKSUM: ${AGAMA_ARTIFACTS_WINDOWS}.md5
AGAMA_ARTIFACTS_MACOS_CHECKSUM: ${AGAMA_ARTIFACTS_MACOS}.md5
ARTIFACT_EXPIRATION: 1 week
########################################################################################################################
####END#### PROJECT LEVEL VARIABLES ####END####
########################################################################################################################
########################################################################################################################
########################################################################################################################
####START#### Build Stage: compile and package komodo binaries for the Agama Wallet. ####START#####
########################################################################################################################
########################################################################################################################
####START#### LINUX ####START####
########################################################################################################################
build:ubuntu:
stage: build
image: asherd/komodo-builders:komodo-ubuntu
variables:
DOCKER_DRIVER: overlay2
cache:
key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
paths:
- depends/built
script:
- zcutil/build.sh -j$(nproc)
- mkdir ${PACKAGE_DIR_LINUX}
- cp src/komodod
src/komodo-cli
${PACKAGE_DIR_LINUX}
- chmod +x ${PACKAGE_DIR_LINUX}/komodod
- chmod +x ${PACKAGE_DIR_LINUX}/komodo-cli
- tar -czvf ${AGAMA_ARTIFACTS_LINUX} ${PACKAGE_DIR_LINUX}
- md5sum ${AGAMA_ARTIFACTS_LINUX} > ${AGAMA_ARTIFACTS_LINUX_CHECKSUM}
artifacts:
paths:
- ${AGAMA_ARTIFACTS_LINUX}
- ${AGAMA_ARTIFACTS_LINUX_CHECKSUM}
expire_in: ${ARTIFACT_EXPIRATION}
########################################################################################################################
####END#### LINUX ####END####
########################################################################################################################
####START#### WINDOWS ####START####
########################################################################################################################
build:windows:
stage: build
image: asherd/komodo-builders:komodo-windows
variables:
DOCKER_DRIVER: overlay2
cache:
key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
paths:
- depends/built
script:
- zcutil/build-win.sh -j$(nproc)
- mkdir ${PACKAGE_DIR_WINDOWS}.
- cp src/komodod.exe
src/komodo-cli.exe
src/komodo-tx.exe
${PACKAGE_DIR_WINDOWS}
- zip -r ${PACKAGE_DIR_WINDOWS}
- md5sum ${AGAMA_ARTIFACTS_WINDOWS} > ${AGAMA_ARTIFACTS_WINDOWS_CHECKSUM}
artifacts:
paths:
- ${AGAMA_ARTIFACTS_WINDOWS}
- ${AGAMA_ARTIFACTS_WINDOWS_CHECKSUM}
expire_in: ${ARTIFACT_EXPIRATION}
########################################################################################################################
####END#### WINDOWS ####END####
########################################################################################################################
####START#### MACOS ####START####
########################################################################################################################
build:macos:
stage: build
tags: ["High Sierra"]
cache:
key: "${CI_JOB_NAME}${CI_COMMIT_REF_NAME}"
paths:
- depends/built
script:
- zcutil/build-mac.sh -j$(sysctl -n hw.physicalcpu)
- ./makeRelease.sh ${PACKAGE_DIR_MACOS}
- tar -czvf ${AGAMA_ARTIFACTS_MACOS} ${PACKAGE_DIR_MACOS}
- md5sum ${AGAMA_ARTIFACTS_MACOS} > ${AGAMA_ARTIFACTS_MACOS_CHECKSUM}
artifacts:
paths:
- ${AGAMA_ARTIFACTS_MACOS}
- ${AGAMA_ARTIFACTS_MACOS_CHECKSUM}
expire_in: ${ARTIFACT_EXPIRATION}
########################################################################################################################
####END#### MACOS ####END####
########################################################################################################################
########################################################################################################################
####END#### Build Stage ####END####
########################################################################################################################
########################################################################################################################
########################################################################################################################
########################################################################################################################
####START#### Test stage: Produce code quality and static application security test reports. ####START####
########################################################################################################################
########################################################################################################################
########################################################################################################################
####START#### Code Quality ####START####
########################################################################################################################
code_quality:
image: docker:stable
variables:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SOURCE_CODE="$PWD"
--volume "$PWD":/code
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
artifacts:
paths: [gl-code-quality-report.json]
########################################################################################################################
####END#### Code Quality ####END####
########################################################################################################################
########################################################################################################################
####START#### Static Application Security Tests ####START####
########################################################################################################################
sast:
image: docker:stable
variables:
DOCKER_DRIVER: overlay2
allow_failure: true
services:
- docker:stable-dind
script:
- export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
- docker run
--env SAST_CONFIDENCE_LEVEL="${SAST_CONFIDENCE_LEVEL:-3}"
--volume "$PWD:/code"
--volume /var/run/docker.sock:/var/run/docker.sock
"registry.gitlab.com/gitlab-org/security-products/sast:$SP_VERSION" /app/bin/run /code
artifacts:
paths: [gl-sast-report.json]
########################################################################################################################
####END#### Static Application Security Tests ####END####
########################################################################################################################
########################################################################################################################
########################################################################################################################
####END#### Test stage ####END####
########################################################################################################################
########################################################################################################################

View File

@@ -1,17 +1,64 @@
#!/bin/sh
PACKAGE_DIR="$@"
mkdir ${PACKAGE_DIR}
binaries=("komodo-cli" "komodod")
alllibs=()
for binary in "${binaries[@]}";
do
# do the work in the destination directory
cp src/${binary} ${PACKAGE_DIR}
# find the dylibs to copy for komodod
DYLIBS=`otool -L ${PACKAGE_DIR}/${binary} | grep "/usr/local" | awk -F' ' '{ print $1 }'`
echo "copying ${DYLIBS} to ${PACKAGE_DIR}"
# copy the dylibs to the srcdir
for dylib in ${DYLIBS}; do cp -rf ${dylib} ${PACKAGE_DIR}; done
done
libraries=("libgcc_s.1.dylib" "libgomp.1.dylib" "libidn2.0.dylib" "libstdc++.6.dylib")
for binary in "${libraries[@]}";
do
# find the dylibs to copy for komodod
DYLIBS=`otool -L ${PACKAGE_DIR}/${binary} | grep "/usr/local" | awk -F' ' '{ print $1 }'`
echo "copying ${DYLIBS} to ${PACKAGE_DIR}"
# copy the dylibs to the srcdir
for dylib in ${DYLIBS}; do cp -rf ${dylib} ${PACKAGE_DIR}; alllibs+=(${dylib}); done
done
indirectlibraries=("libintl.8.dylib" "libunistring.2.dylib")
for binary in "${indirectlibraries[@]}";
do
# Need to undo this for the dylibs when we are done
chmod 755 src/${binary}
# find the dylibs to copy for komodod
DYLIBS=`otool -L ${PACKAGE_DIR}/${binary} | grep "/usr/local" | awk -F' ' '{ print $1 }'`
echo "copying indirect ${DYLIBS} to ${PACKAGE_DIR}"
# copy the dylibs to the dest dir
for dylib in ${DYLIBS}; do cp -rf ${dylib} ${PACKAGE_DIR}; alllibs+=(${dylib}); done
done
for binary in "${binaries[@]}";
do
# find the dylibs to copy for komodod
DYLIBS=`otool -L src/$binary | grep "/usr/local" | awk -F' ' '{ print $1 }'`
echo "copying $DYLIBS to $src"
# copy the dylibs to the srcdir
for dylib in $DYLIBS; do cp -rf $dylib src/; done
# modify komodod to point to dylibs
echo "modifying $binary to use local libraries"
for dylib in $DYLIBS; do install_name_tool -change $dylib @executable_path/`basename $dylib` src/$binary; done;
chmod +x src/$binary
echo "modifying ${binary} to use local libraries"
for dylib in "${alllibs[@]}"
do
echo "Next lib is ${dylib} "
install_name_tool -change ${dylib} @executable_path/`basename ${dylib}` ${PACKAGE_DIR}/${binary}
done
chmod +x ${PACKAGE_DIR}/${binary}
done
for binary in "${libraries[@]}";
do
# modify libraries to point to dylibs
echo "modifying ${binary} to use local libraries"
for dylib in "${alllibs[@]}"
do
echo "Next lib is ${dylib} "
install_name_tool -change ${dylib} @executable_path/`basename ${dylib}` ${PACKAGE_DIR}/${binary}
done
done