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:
162
.gitlab-ci.yml
Normal file
162
.gitlab-ci.yml
Normal 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####
|
||||
########################################################################################################################
|
||||
########################################################################################################################
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user