Skip to content

Commit f7a3ca2

Browse files
authored
Merge pull request #335 from oracle/feature/java-integration-tests
jenkins automation changes in java integration tests
2 parents 8e55fec + 5bce810 commit f7a3ca2

File tree

5 files changed

+152
-28
lines changed

5 files changed

+152
-28
lines changed

integration-tests/src/test/java/oracle/kubernetes/operator/BaseTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ public class BaseTest {
2929
private static int maxIterationsPod = 50;
3030
private static int waitTimePod = 5;
3131
private static String leaseId = "";
32+
private static String branchName = "";
3233

3334
private static Properties appProps;
3435

@@ -63,10 +64,19 @@ public static void initialize(String appPropsFile) throws Exception {
6364
// resultDir = resultRoot + "/acceptance_test_tmp";
6465
userProjectsDir = resultRoot + "/acceptance_test_tmp/user-projects";
6566
projectRoot = System.getProperty("user.dir") + "/..";
67+
68+
// BRANCH_NAME var is used in Jenkins job
69+
if (System.getenv("BRANCH_NAME") != null) {
70+
branchName = System.getenv("BRANCH_NAME");
71+
} else {
72+
branchName = TestUtils.getGitBranchName();
73+
}
74+
6675
logger.info("RESULT_ROOT =" + resultRoot);
6776
logger.info("PV_ROOT =" + pvRoot);
6877
logger.info("userProjectsDir =" + userProjectsDir);
6978
logger.info("projectRoot =" + projectRoot);
79+
logger.info("branchName =" + branchName);
7080

7181
logger.info("Env var RESULT_ROOT " + System.getenv("RESULT_ROOT"));
7282
logger.info("Env var PV_ROOT " + System.getenv("PV_ROOT"));
@@ -79,6 +89,7 @@ public static void initialize(String appPropsFile) throws Exception {
7989
"Env var IMAGE_PULL_SECRET_OPERATOR " + System.getenv("IMAGE_PULL_SECRET_OPERATOR"));
8090
logger.info(
8191
"Env var IMAGE_PULL_SECRET_WEBLOGIC " + System.getenv("IMAGE_PULL_SECRET_WEBLOGIC"));
92+
logger.info("Env var BRANCH_NAME " + System.getenv("BRANCH_NAME"));
8293

8394
// create resultRoot, PVRoot, etc
8495
Files.createDirectories(Paths.get(resultRoot));
@@ -138,6 +149,10 @@ public static String getLeaseId() {
138149
return leaseId;
139150
}
140151

152+
public static String getBranchName() {
153+
return branchName;
154+
}
155+
141156
protected void logTestBegin(String testName) throws Exception {
142157
logger.info("+++++++++++++++++++++++++++++++++---------------------------------+");
143158
logger.info("BEGIN " + testName);

integration-tests/src/test/java/oracle/kubernetes/operator/ITSingleDomain.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,8 +98,9 @@ public static void staticUnPrepare() throws Exception {
9898
+ "/src/integration-tests/bash/cleanup.sh";
9999
ExecResult result = ExecCommand.exec(cmd);
100100
if (result.exitValue() != 0) {
101-
logger.info("FAILED: command to call cleanup script failed " + cmd + result.stderr());
101+
logger.info("FAILED: command to call cleanup script " + cmd + " failed " + result.stderr());
102102
}
103+
logger.info("Command " + cmd + " returned " + result.stdout() + "\n" + result.stderr());
103104
}
104105
logger.info("SUCCESS");
105106
}

integration-tests/src/test/java/oracle/kubernetes/operator/utils/Domain.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,10 +389,15 @@ private void callCreateDomainScript() throws Exception {
389389
ExecResult result = ExecCommand.exec(cmd.toString());
390390
if (result.exitValue() != 0) {
391391
throw new RuntimeException(
392-
"FAILURE: command " + cmd + " failed, returned " + result.stderr());
392+
"FAILURE: command "
393+
+ cmd
394+
+ " failed, returned "
395+
+ result.stdout()
396+
+ "\n"
397+
+ result.stderr());
393398
}
394399
String outputStr = result.stdout().trim();
395-
logger.info("run " + outputStr);
400+
logger.info("Command returned " + outputStr);
396401
if (!outputStr.contains(CREATE_DOMAIN_JOB_MESSAGE)) {
397402
throw new RuntimeException("FAILURE: Create domain Script failed..");
398403
}

integration-tests/src/test/java/oracle/kubernetes/operator/utils/Operator.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,12 @@ private void callCreateOperatorScript() throws Exception {
209209
ExecResult result = ExecCommand.exec(cmd.toString());
210210
if (result.exitValue() != 0) {
211211
throw new RuntimeException(
212-
"FAILURE: command " + cmd + " failed, returned " + result.stderr());
212+
"FAILURE: command "
213+
+ cmd
214+
+ " failed, returned "
215+
+ result.stdout()
216+
+ "\n"
217+
+ result.stderr());
213218
}
214219
String outputStr = result.stdout().trim();
215220
logger.info("Command returned " + outputStr);
@@ -272,7 +277,9 @@ private void initialize() throws Exception {
272277
operatorProps.put("externalRestHttpsPort", externalRestHttpsPort);
273278
}
274279
}
280+
275281
// customize the inputs yaml file to use our pre-built docker image
282+
// IMAGE_NAME_OPERATOR & IMAGE_TAG_OPERATOR variables are used for wercker
276283
if (System.getenv("IMAGE_NAME_OPERATOR") != null
277284
&& System.getenv("IMAGE_TAG_OPERATOR") != null) {
278285
operatorProps.put(
@@ -283,7 +290,7 @@ private void initialize() throws Exception {
283290
"weblogicOperatorImage",
284291
"wlsldi-v2.docker.oraclecorp.com/weblogic-operator"
285292
+ ":test_"
286-
+ TestUtils.getGitBranchName().replaceAll("/", "_"));
293+
+ BaseTest.getBranchName().replaceAll("/", "_"));
287294
}
288295

289296
if (System.getenv("IMAGE_PULL_POLICY_OPERATOR") != null) {

integration-tests/src/test/resources/setupenv.sh

Lines changed: 119 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,89 @@
1+
#!/bin/bash
12
# Copyright 2018, Oracle Corporation and/or its affiliates. All rights reserved.
23
# Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl.
34

5+
function clean_jenkins {
6+
echo "Cleaning."
7+
/usr/local/packages/aime/ias/run_as_root "${PROJECT_ROOT}/src/integration-tests/bash/clean_docker_k8s.sh -y"
8+
}
9+
10+
function setup_jenkins {
11+
echo "Setting up."
12+
/usr/local/packages/aime/ias/run_as_root "sh ${PROJECT_ROOT}/src/integration-tests/bash/install_docker_k8s.sh -y -u wls -v ${K8S_VERSION}"
13+
set +x
14+
. ~/.dockerk8senv
15+
set -x
16+
id
17+
18+
docker login -u [email protected] -p $docker_pass wlsldi-v2.docker.oraclecorp.com
19+
docker images
20+
21+
pull_tag_images
22+
23+
# create a docker image for the operator code being tested
24+
docker build -t "${IMAGE_NAME_OPERATOR}:${IMAGE_TAG_OPERATOR}" --no-cache=true .
25+
26+
docker images
27+
}
28+
29+
function pull_tag_images {
30+
31+
echo "Pull and tag the images we need"
32+
docker pull wlsldi-v2.docker.oraclecorp.com/store-weblogic-12.2.1.3:latest
33+
docker tag wlsldi-v2.docker.oraclecorp.com/store-weblogic-12.2.1.3:latest store/oracle/weblogic:12.2.1.3
34+
35+
docker pull wlsldi-v2.docker.oraclecorp.com/store-serverjre-8:latest
36+
docker tag wlsldi-v2.docker.oraclecorp.com/store-serverjre-8:latest store/oracle/serverjre:8
37+
38+
docker pull wlsldi-v2.docker.oraclecorp.com/weblogic-webtier-apache-12.2.1.3.0:latest
39+
docker tag wlsldi-v2.docker.oraclecorp.com/weblogic-webtier-apache-12.2.1.3.0:latest store/oracle/apache:12.2.1.3
40+
41+
}
42+
43+
44+
function create_image_pull_secret_jenkins {
45+
46+
echo "Creating Secret"
47+
kubectl create secret docker-registry wlsldi-secret \
48+
--docker-server=wlsldi-v2.docker.oraclecorp.com \
49+
50+
--docker-password=$docker_pass \
51+
52+
53+
echo "Checking Secret"
54+
local SECRET="`kubectl get secret wlsldi-secret | grep wlsldi | wc | awk ' { print $1; }'`"
55+
if [ "$SECRET" != "1" ]; then
56+
echo 'secret wlsldi-secret was not created successfully'
57+
exit 1
58+
fi
59+
60+
}
61+
62+
export SCRIPTPATH="$( cd "$(dirname "$0")" > /dev/null 2>&1 ; pwd -P )"
63+
export PROJECT_ROOT="$SCRIPTPATH/../../../.."
64+
export RESULT_ROOT=${RESULT_ROOT:-/scratch/$USER/wl_k8s_test_results}
65+
export PV_ROOT=${PV_ROOT:-$RESULT_ROOT}
66+
echo "RESULT_ROOT$RESULT_ROOT PV_ROOT$PV_ROOT"
67+
export BRANCH_NAME="${BRANCH_NAME:-$WERCKER_GIT_BRANCH}"
68+
69+
if [ -z "$BRANCH_NAME" ]; then
70+
export BRANCH_NAME="`git branch | grep \* | cut -d ' ' -f2-`"
71+
if [ ! "$?" = "0" ] ; then
72+
echo "Error: Could not determine branch. Run script from within a git repo".
73+
exit 1
74+
fi
75+
fi
76+
export IMAGE_TAG_OPERATOR=${IMAGE_TAG_OPERATOR:-`echo "test_${BRANCH_NAME}" | sed "s#/#_#g"`}
77+
export IMAGE_NAME_OPERATOR=${IMAGE_NAME_OPERATOR:-wlsldi-v2.docker.oraclecorp.com/weblogic-operator}
78+
79+
cd $PROJECT_ROOT
80+
if [ $? -ne 0 ]; then
81+
echo "Couldn't change to $PROJECT_ROOT dir"
82+
exit 1
83+
fi
84+
85+
echo IMAGE_NAME_OPERATOR $IMAGE_NAME_OPERATOR IMAGE_TAG_OPERATOR $IMAGE_TAG_OPERATOR
86+
487
if [ "$WERCKER" = "true" ]; then
588

689
echo "Test Suite is running locally on Wercker and k8s is running on remote nodes."
@@ -37,36 +120,49 @@ if [ "$WERCKER" = "true" ]; then
37120
echo "secret $IMAGE_PULL_SECRET_OPERATOR was not created successfully"
38121
exit 1
39122
fi
123+
124+
elif [ "$JENKINS" = "true" ]; then
125+
126+
echo "Test Suite is running on Jenkins and k8s is running locally on the same node."
127+
128+
# External customizable env vars unique to Jenkins:
129+
130+
export docker_pass=${docker_pass:?}
131+
export M2_HOME=${M2_HOME:?}
132+
export K8S_VERSION=${K8S_VERSION}
133+
134+
clean_jenkins
135+
136+
setup_jenkins
137+
138+
create_image_pull_secret_jenkins
139+
140+
/usr/local/packages/aime/ias/run_as_root "mkdir -p $PV_ROOT"
141+
/usr/local/packages/aime/ias/run_as_root "mkdir -p $RESULT_ROOT"
142+
143+
# 777 is needed because this script, k8s pods, and/or jobs may need access.
144+
145+
/usr/local/packages/aime/ias/run_as_root "mkdir -p $RESULT_ROOT/acceptance_test_tmp"
146+
/usr/local/packages/aime/ias/run_as_root "chmod 777 $RESULT_ROOT/acceptance_test_tmp"
147+
148+
/usr/local/packages/aime/ias/run_as_root "mkdir -p $RESULT_ROOT/acceptance_test_tmp_archive"
149+
/usr/local/packages/aime/ias/run_as_root "chmod 777 $RESULT_ROOT/acceptance_test_tmp_archive"
150+
151+
/usr/local/packages/aime/ias/run_as_root "mkdir -p $PV_ROOT/acceptance_test_pv"
152+
/usr/local/packages/aime/ias/run_as_root "chmod 777 $PV_ROOT/acceptance_test_pv"
153+
154+
/usr/local/packages/aime/ias/run_as_root "mkdir -p $PV_ROOT/acceptance_test_pv_archive"
155+
/usr/local/packages/aime/ias/run_as_root "chmod 777 $PV_ROOT/acceptance_test_pv_archive"
156+
157+
40158

41159
else
42-
docker pull wlsldi-v2.docker.oraclecorp.com/store-weblogic-12.2.1.3:latest
43-
docker tag wlsldi-v2.docker.oraclecorp.com/store-weblogic-12.2.1.3:latest store/oracle/weblogic:12.2.1.3
160+
pull_tag_images
44161

45-
docker pull wlsldi-v2.docker.oraclecorp.com/store-serverjre-8:latest
46-
docker tag wlsldi-v2.docker.oraclecorp.com/store-serverjre-8:latest store/oracle/serverjre:8
47-
48162
#docker rmi -f $(docker images -q -f dangling=true)
49163
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi -f
50164

51-
if [ -z "$BRANCH_NAME" ]; then
52-
export BRANCH_NAME="`git branch | grep \* | cut -d ' ' -f2-`"
53-
if [ ! "$?" = "0" ] ; then
54-
echo "Error: Could not determine branch. Run script from within a git repo".
55-
exit 1
56-
fi
57-
fi
58-
export IMAGE_TAG_OPERATOR=${IMAGE_TAG_OPERATOR:-`echo "test_${BRANCH_NAME}" | sed "s#/#_#g"`}
59-
export IMAGE_NAME_OPERATOR=${IMAGE_NAME_OPERATOR:-wlsldi-v2.docker.oraclecorp.com/weblogic-operator}
60-
61-
export SCRIPTPATH="$( cd "$(dirname "$0")" > /dev/null 2>&1 ; pwd -P )"
62-
export PROJECT_ROOT="$SCRIPTPATH/../../../.."
63-
cd $PROJECT_ROOT
64-
if [ $? -ne 0 ]; then
65-
echo "Couldn't change to $PROJECT_ROOT dir"
66-
exit 1
67-
fi
68165

69-
echo IMAGE_NAME_OPERATOR $IMAGE_NAME_OPERATOR IMAGE_TAG_OPERATOR $IMAGE_TAG_OPERATOR
70166
docker build -t "${IMAGE_NAME_OPERATOR}:${IMAGE_TAG_OPERATOR}" --no-cache=true .
71167

72168
fi

0 commit comments

Comments
 (0)