-
Notifications
You must be signed in to change notification settings - Fork 82
157 lines (136 loc) · 5.27 KB
/
pr.yaml
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
146
147
148
149
150
151
152
153
154
155
156
157
name: CI
on:
pull_request:
push:
branches:
- master
env:
ACTIONS_RUNNER_DEBUG: true
KUBEPLUS_TEST_OUTPUT: yes
KUBEPLUS_CI: true
jobs:
job1:
runs-on: ubuntu-20.04
name: Test kubeplus deployment on kind
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Create k8s Kind Cluster
uses: helm/kind-action@v1
- name: Verify Cluster
run: |
kubectl get pods -A
echo "CLUSTER_NAME=chart-testing" >> $GITHUB_ENV
- name: Install Helm, Python3 LXML and Golang
run: |
sudo apt-get install python3-lxml
echo "Installing Helm..."
wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz
gunzip helm-v3.12.1-linux-amd64.tar.gz
tar -xvf helm-v3.12.1-linux-amd64.tar
sudo mv linux-amd64/helm /usr/local/bin/.
echo "Installing Golang..."
rm -rf /usr/local/go
wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin
go version
- name: Prepare KubePlus Environment
run: |
echo "Setting up KubePlus environment..."
echo "Current directory:`pwd`"
mkdir -p $HOME/go/src/github.com/cloud-ark
cd ..
echo "Current directory:`pwd`"
kubeplus_folder="$(basename `pwd`)"
echo "KubePlus folder name:$kubeplus_folder"
cp -R $kubeplus_folder $HOME/go/src/github.com/cloud-ark/kubeplus
cd $HOME/go/src/github.com/cloud-ark/kubeplus
export KUBEPLUS_NS=default
echo "KUBEPLUS_NS=default" >> $GITHUB_ENV
export KUBEPLUS_HOME=`pwd`
echo "KUBEPLUS_HOME=$KUBEPLUS_HOME" >> $GITHUB_ENV
export PATH=$KUBEPLUS_HOME/plugins:$PATH
echo "PATH=$PATH" >> $GITHUB_ENV
- name: Build Mutating Webhook
run: |
echo "KUBEPLUS_HOME:$KUBEPLUS_HOME"
cd $KUBEPLUS_HOME/mutating-webhook
export GO111MODULE=on
go get github.com/googleapis/[email protected]
./build-artifact.sh latest
- name: Build Helmer
run: |
cd $KUBEPLUS_HOME/platform-operator/helm-pod/
go mod vendor
./build-artifact.sh latest
- name: Build Platform Operator
run: |
cd $KUBEPLUS_HOME/platform-operator
./build-artifact.sh latest
- name: Build KubeConfig Generator
run: |
cd $KUBEPLUS_HOME/deploy
./build-artifact-kubeconfiggenerator.sh latest
- name: Load Docker Images to Kind cluster
run: |
for image in $(docker images --format '{{.Repository}}:{{.Tag}}' | grep '^gcr.io/cloudark-kubeplus'); do
kind load docker-image "$image" --name $CLUSTER_NAME
done
docker exec $CLUSTER_NAME-control-plane crictl images
- name: Deploy KubePlus and Kubeplus plugin
run: |
./install.sh --kubeplus-plugin --kubeplus $KUBEPLUS_NS
- name: Verify KubePlus Installation
run: |
echo "Verifying KubePlus installation..."
kubectl get pods -n $KUBEPLUS_NS | grep kubeplus
- name: Retrieve KubePlus Pod Logs
run: |
kubeplus_pod=`kubectl get pods | grep kubeplus | awk '{print $1}'`
echo "Helmer logs..."
kubectl logs $kubeplus_pod -c helmer
echo "Platform Operator logs..."
kubectl logs $kubeplus_pod -c platform-operator
echo "CRD Hook logs..."
kubectl logs $kubeplus_pod -c crd-hook
- name: Upload Example Chart
run: kubectl upload chart ./examples/multitenancy/application-hosting/wordpress/wordpress-chart-0.0.3.tgz kubeplus-saas-provider.json
- name: Sleep Before Continuing
run: sleep 10
- name: Deploy WordPress Service Composition
run: |
kubectl create -f ./examples/multitenancy/application-hosting/wordpress/wordpress-service-composition-localchart.yaml --kubeconfig=kubeplus-saas-provider.json
- name: Wait for CRD Registration
run: |
until kubectl get crds | grep wordpressservices.platformapi.kubeplus; do
echo "Waiting for CRD to be registered..."
sleep 1
done
- name: Deploy Tenant Example
run: |
kubectl create -f ./examples/multitenancy/application-hosting/wordpress/tenant1.yaml --kubeconfig=kubeplus-saas-provider.json
kubectl get resourcecompositions
kubectl describe resourcecomposition wordpress-service-composition
- name: Wait for Application Pods to Start
run: |
until kubectl get pods -n wp-tenant1 | grep Running; do
echo "Waiting for Application Pods to start..."
sleep 1
done
- name: Interact with Deployed Application
run: |
kubectl appresources WordpressService wp-tenant1 –k kubeplus-saas-provider.json
kubectl metrics WordpressService wp-tenant1 $KUBEPLUS_NS -k kubeplus-saas-provider.json
- name: Cleanup Deployed Resources
run: |
kubectl delete wordpressservice wp-tenant1 --kubeconfig=kubeplus-saas-provider.json
kubectl delete resourcecomposition wordpress-service-composition --kubeconfig=kubeplus-saas-provider.json
- name: Run Unit Tests
run: |
cd tests
python3 -m venv venv
source venv/bin/activate
pip3 install -r requirements.txt
python3 -m unittest -v tests
deactivate