This repository has been archived by the owner on Mar 11, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 5
/
cico_setup.sh
145 lines (114 loc) · 3.64 KB
/
cico_setup.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash
# functions to generate latest client if any change in design pkg
source <(curl -s https://raw.githubusercontent.com/fabric8-services/fabric8-common/master/.scripts/create_push_client.sh)
# Output command before executing
set -x
# Exit on error
set -e
# Source environment variables of the jenkins slave
# that might interest this worker.
function load_jenkins_vars() {
if [ -e "jenkins-env" ]; then
cat jenkins-env \
| grep -E "(DEVSHIFT_TAG_LEN|QUAY_USERNAME|QUAY_PASSWORD|FABRIC8_HUB_TOKEN|JENKINS_URL|GIT_BRANCH|GIT_COMMIT|BUILD_NUMBER|ghprbSourceBranch|ghprbActualCommit|BUILD_URL|ghprbPullId)=" \
| sed 's/^/export /g' \
> ~/.jenkins-env
source ~/.jenkins-env
fi
}
function install_deps() {
# We need to disable selinux for now, XXX
/usr/sbin/setenforce 0 || :
# Get all the deps in
yum -y install \
docker \
make \
git \
curl
service docker start
echo 'CICO: Dependencies installed'
}
function cleanup_env {
EXIT_CODE=$?
echo "CICO: Cleanup environment: Tear down test environment"
make integration-test-env-tear-down
echo "CICO: Exiting with $EXIT_CODE"
}
function prepare() {
# Let's test
make docker-start
make docker-check-go-format
make docker-deps
make docker-generate
make docker-build
echo 'CICO: Preparation complete'
}
function run_tests_without_coverage() {
make docker-test-unit
make integration-test-env-prepare
trap cleanup_env EXIT
# Check that postgresql container is healthy
check_postgres_healthiness
make docker-test-migration
make docker-test-integration
make docker-test-remote
echo "CICO: ran tests without coverage"
}
function check_postgres_healthiness(){
echo "CICO: Waiting for postgresql container to be healthy...";
while ! docker ps | grep postgres_integration_test | grep -q healthy; do
printf .;
sleep 1 ;
done;
echo "CICO: postgresql container is HEALTHY!";
}
function run_tests_with_coverage() {
# Run the unit tests that generate coverage information
make docker-test-unit-with-coverage
make integration-test-env-prepare
trap cleanup_env EXIT
# Check that postgresql container is healthy
check_postgres_healthiness
# Run the integration tests that generate coverage information
make docker-test-migration
make docker-test-integration-with-coverage
# Run the remote tests that generate coverage information
make docker-test-remote-with-coverage
# Output coverage
make docker-coverage-all
# Upload coverage to codecov.io
cp tmp/coverage.mode* coverage.txt
bash <(curl -s https://codecov.io/bash) -X search -f coverage.txt -t 1efa8f9f-198e-4700-a01f-f7083ee32180 #-X fix
echo "CICO: ran tests and uploaded coverage"
}
function tag_push() {
local tag
tag=$1
docker tag fabric8-cluster-deploy $tag
docker push $tag
}
function deploy() {
# Login first
REGISTRY="quay.io"
if [ -n "${QUAY_USERNAME}" -a -n "${QUAY_PASSWORD}" ]; then
docker login -u ${QUAY_USERNAME} -p ${QUAY_PASSWORD} ${REGISTRY}
else
echo "Could not login, missing credentials for the registry"
fi
# Build fabric8-cluster-deploy
make docker-image-deploy
TAG=$(echo $GIT_COMMIT | cut -c1-${DEVSHIFT_TAG_LEN})
if [ "$TARGET" = "rhel" ]; then
tag_push ${REGISTRY}/openshiftio/rhel-fabric8-services-fabric8-cluster:$TAG
tag_push ${REGISTRY}/openshiftio/rhel-fabric8-services-fabric8-cluster:latest
else
tag_push ${REGISTRY}/openshiftio/fabric8-services-fabric8-cluster:$TAG
tag_push ${REGISTRY}/openshiftio/fabric8-services-fabric8-cluster:latest
fi
echo 'CICO: Image pushed, ready to update deployed app'
}
function cico_setup() {
load_jenkins_vars;
install_deps;
prepare;
}