forked from sachin-pikle/rest-inventory
-
Notifications
You must be signed in to change notification settings - Fork 0
/
wercker.yml
138 lines (127 loc) · 5.15 KB
/
wercker.yml
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
box: combient/java-mvn
build:
steps:
# Build Inventory REST application
- script:
name: Maven install
code: mvn install
push:
steps:
# Push to public docker repo Container Registry (CR)
- internal/docker-push:
tag: latest
repository: $CR_REPOSITORY
cmd: java -jar /pipeline/source/target/rest-inventory-mongodb-0.1.0.jar
deploy-to-cluster:
steps:
- kubectl:
server: $KUBERNETES_MASTER
token: $KUBERNETES_TOKEN
insecure-skip-tls-verify: true
command: delete deployment rest-inventory
- kubectl:
server: $KUBERNETES_MASTER
token: $KUBERNETES_TOKEN
insecure-skip-tls-verify: true
command: create -f $WERCKER_ROOT/inventory-deployment.yaml
deploy-to-prod-cluster:
steps:
- kubectl:
server: $KUBERNETES_MASTER
token: $KUBERNETES_TOKEN
insecure-skip-tls-verify: true
command: delete deployment rest-inventory
- kubectl:
server: $KUBERNETES_MASTER
token: $KUBERNETES_TOKEN
insecure-skip-tls-verify: true
command: create -f $WERCKER_ROOT/inventory-deployment-prod.yaml
testapp:
steps:
- script:
name: Run and Test microservice
code: |
java -jar /pipeline/source/target/rest-inventory-mongodb-0.1.0.jar &
sleep 10
INVENTORY_CONTEXTPATH=$(egrep -o '"([^"]*)"' $WERCKER_SOURCE_DIR/src/main/java/io/CustomContainer.java | sed -r 's/"(.*)"/\1/')
echo 'Context path=' $INVENTORY_CONTEXTPATH
INVENTORY_URL=http://localhost:8080$INVENTORY_CONTEXTPATH/inventory
echo 'Microservice URL=' $INVENTORY_URL
if curl -s "$INVENTORY_URL" | grep "amount"
then
# if the keyword is in the conent
echo "Test passed"
else
echo "Test failed"
exit -1
fi
register:
steps:
# Register Inventory REST service in API PCS
- shellcheck
- script:
name: Install kubectl
code: |
echo "Installing version $KUBERNETES_VERSION of kubernetes"
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
chmod +x ./kubectl
- script:
name: "Wait for service LB to be provisioned and assigned an external IP"
code: |
CONTAINER_HOST=$(./kubectl --server=$KUBERNETES_MASTER --token=$KUBERNETES_TOKEN --insecure-skip-tls-verify=true get service rest-inventory -o jsonpath={.status.loadBalancer.ingress[0].ip})
echo 'Before until loop ... Container host=' $CONTAINER_HOST
while [[ -z "$CONTAINER_HOST" ]]; do
CONTAINER_HOST=$(./kubectl --server=$KUBERNETES_MASTER --token=$KUBERNETES_TOKEN --insecure-skip-tls-verify=true get service rest-inventory -o jsonpath={.status.loadBalancer.ingress[0].ip})
echo 'Sleeping for 20 sec .. Container host=' $CONTAINER_HOST
sleep 20
done
- script:
name: Register Inventory REST service in APIP
code: |
echo 'Container host=' $CONTAINER_HOST
CONTAINER_PORT=8999
echo 'Container host=' $CONTAINER_PORT
INVENTORY_CONTEXTPATH=$(egrep -o '"([^"]*)"' $WERCKER_SOURCE_DIR/src/main/java/io/CustomContainer.java | sed -r 's/"(.*)"/\1/')
echo 'Context path=' $INVENTORY_CONTEXTPATH
INVENTORY_URL=$CONTAINER_HOST:$CONTAINER_PORT$INVENTORY_CONTEXTPATH
echo 'Inventory URL=' $INVENTORY_URL
curl -v -X PUT \
$APIP_URL \
-H 'authorization: Basic Q29udGludW91c0ludGVncmF0aW9uOndlbGNvbWUx' \
-H 'cache-control: no-cache' \
-H 'content-type: application/json' \
-d '{
"implementation": {
"executions": {
"request": [
"1"
],
"response": [
"2"
]
},
"policies": [
{
"id": "1",
"type": "o:BackendRequest",
"version": "1.0",
"config": {
"endpoints": [
{
"name": "CCS Oracle Public Cloud",
"useProxy": false,
"url": "http://'"$INVENTORY_URL"'"
}
]
}
},
{
"id": "2",
"type": "o:BackendResponse",
"version": "1.0",
"config": {}
}
]
},
"description": "Inventory Service from Container Management Cloud Service"
}'