fabric-samples/scripts/Jenkins_Scripts/CI_Script.sh
Simon Stone 928b72b60a [FAB-12875] Add automated tests for fabcar sample
Introduce automated tests for the fabcar sample, that deploy
the new sample contracts and submit the initLedger transaction
using the "peer" CLI.

Additional changes will follow to drive the new sample apps
to ensure that they work as well (but the apps aren't there
yet!).

Change-Id: Ie42d139eb1dc1cf0f7c16f41f54bb5f40309921c
Signed-off-by: Simon Stone <sstone1@uk.ibm.com>
2018-11-30 09:52:25 +00:00

166 lines
5.8 KiB
Bash
Executable file

#!/bin/bash -e
#
# Copyright IBM Corp All Rights Reserved
#
# SPDX-License-Identifier: Apache-2.0
#
# exit on first error
export BASE_FOLDER=$WORKSPACE/gopath/src/github.com/hyperledger
export NEXUS_URL=nexus3.hyperledger.org:10001
export ORG_NAME="hyperledger/fabric"
Parse_Arguments() {
while [ $# -gt 0 ]; do
case $1 in
--env_Info)
env_Info
;;
--pull_Docker_Images)
pull_Docker_Images
;;
--pull_Fabric_CA_Images)
pull_Fabric_CA_Images
;;
--clean_Environment)
clean_Environment
;;
--byfn_eyfn_Tests)
byfn_eyfn_Tests
;;
--fabcar_Tests)
fabcar_Tests
;;
--pull_Thirdparty_Images)
pull_Thirdparty_Images
;;
esac
shift
done
}
clean_Environment() {
echo "-----------> Clean Docker Containers & Images, unused/lefover build artifacts"
function clearContainers () {
CONTAINER_IDS=$(docker ps -aq)
if [ -z "$CONTAINER_IDS" ] || [ "$CONTAINER_IDS" = " " ]; then
echo "---- No containers available for deletion ----"
else
docker rm -f $CONTAINER_IDS || true
docker ps -a
fi
}
function removeUnwantedImages() {
for i in $(docker images | grep none | awk '{print $3}'); do
docker rmi ${i};
done
for i in $(docker images | grep -vE ".*baseimage.*(0.4.13|0.4.14)" | grep -vE ".*baseos.*(0.4.13|0.4.14)" | grep -vE ".*couchdb.*(0.4.13|0.4.14)" | grep -vE ".*zoo.*(0.4.13|0.4.14)" | grep -vE ".*kafka.*(0.4.13|0.4.14)" | grep -v "REPOSITORY" | awk '{print $1":" $2}'); do
docker rmi ${i};
done
}
# Remove /tmp/fabric-shim
docker run -v /tmp:/tmp library/alpine rm -rf /tmp/fabric-shim || true
# remove tmp/hfc and hfc-key-store data
rm -rf /home/jenkins/.nvm /home/jenkins/npm /tmp/fabric-shim /tmp/hfc* /tmp/npm* /home/jenkins/kvsTemp /home/jenkins/.hfc-key-store
rm -rf /var/hyperledger/*
rm -rf gopath/src/github.com/hyperledger/fabric-ca/vendor/github.com/cloudflare/cfssl/vendor/github.com/cloudflare/cfssl_trust/ca-bundle || true
# yamllint disable-line rule:line-length
rm -rf gopath/src/github.com/hyperledger/fabric-ca/vendor/github.com/cloudflare/cfssl/vendor/github.com/cloudflare/cfssl_trust/intermediate_ca || true
clearContainers
removeUnwantedImages
}
env_Info() {
# This function prints system info
#### Build Env INFO
echo "-----------> Build Env INFO"
# Output all information about the Jenkins environment
uname -a
cat /etc/*-release
env
gcc --version
docker version
docker info
docker-compose version
pgrep -a docker
}
# Pull Thirdparty Docker images (Kafka, couchdb, zookeeper)
pull_Thirdparty_Images() {
echo "------> BASE_IMAGE_TAG:" $BASE_IMAGE_TAG
for IMAGES in kafka couchdb zookeeper; do
echo "-----------> Pull $IMAGES image"
echo
docker pull $ORG_NAME-$IMAGES:${BASE_IMAGE_TAG} > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "\033[31m FAILED to pull docker images" "\033[0m"
exit 1
fi
docker tag $ORG_NAME-$IMAGES:${BASE_IMAGE_TAG} $ORG_NAME-$IMAGES
done
echo
docker images | grep hyperledger/fabric
}
# pull fabric images from nexus
pull_Docker_Images() {
pull_Fabric_CA_Image
for IMAGES in peer orderer tools ccenv; do
echo "-----------> pull $IMAGES image"
echo
docker pull $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "\033[31m FAILED to pull docker images" "\033[0m"
exit 1
fi
docker tag $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG $ORG_NAME-$IMAGES
docker tag $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG $ORG_NAME-$IMAGES:$ARCH-$VERSION
docker rmi -f $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG
done
echo
docker images | grep hyperledger/fabric
}
# pull fabric-ca images from nexus
pull_Fabric_CA_Image() {
echo "------> IMAGE_TAG:" $IMAGE_TAG
for IMAGES in ca ca-peer ca-orderer ca-tools; do
echo "-----------> pull $IMAGES image"
echo
docker pull $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG > /dev/null 2>&1
if [ $? -ne 0 ]; then
echo -e "\033[31m FAILED to pull docker images" "\033[0m"
exit 1
fi
docker tag $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG $ORG_NAME-$IMAGES
docker tag $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG $ORG_NAME-$IMAGES:$ARCH-$VERSION
docker rmi -f $NEXUS_URL/$ORG_NAME-$IMAGES:$IMAGE_TAG
done
echo
docker images | grep hyperledger/fabric-ca
}
# run byfn,eyfn tests
byfn_eyfn_Tests() {
echo
echo "-----------> Execute Byfn and Eyfn Tests"
./byfn_eyfn.sh
}
# run fabcar tests
fabcar_Tests() {
echo
echo "npm version ------> $(npm -v)"
echo "node version ------> $(node -v)"
echo "-----------> Execute FabCar Tests"
./fabcar.sh
}
Parse_Arguments $@