|
4 | 4 | env: |
5 | 5 | ACTIONS_RUNNER_DEBUG: true |
6 | 6 | KUBEPLUS_TEST_OUTPUT: yes |
| 7 | + KUBEPLUS_CI: true |
7 | 8 | jobs: |
8 | 9 | job1: |
9 | 10 | runs-on: ubuntu-20.04 |
10 | 11 | name: Deploy to minikube |
11 | 12 | steps: |
12 | | - - uses: actions/checkout@v2 |
13 | | - - name: Start minikube |
14 | | - uses: medyagh/setup-minikube@master |
15 | | - - name: Try the cluster ! |
| 13 | + - name: Checkout Code |
| 14 | + uses: actions/checkout@v4 |
| 15 | + |
| 16 | + - name: Create k8s Kind Cluster |
| 17 | + uses: helm/kind-action@v1 |
| 18 | + |
| 19 | + - name: Verify Cluster |
16 | 20 | run: kubectl get pods -A |
17 | | - - name: Deploy KubePlus and application to minikube |
18 | | - run: | |
19 | | - export SHELL=/bin/bash |
20 | | - eval $(minikube -p minikube docker-env) |
21 | | - echo "Glibc version" |
22 | | - ldd --version |
23 | | - sudo apt-get install python3-lxml |
24 | | - echo "Installing helm..." |
| 21 | + |
| 22 | + - name: Display Glibc Version |
| 23 | + run: ldd --version |
| 24 | + |
| 25 | + - name: Install Python3 LXML |
| 26 | + run: sudo apt-get install python3-lxml |
| 27 | + |
| 28 | + - name: Install Helm |
| 29 | + run: | |
| 30 | + echo "Installing Helm..." |
25 | 31 | wget https://get.helm.sh/helm-v3.12.1-linux-amd64.tar.gz |
26 | 32 | gunzip helm-v3.12.1-linux-amd64.tar.gz |
27 | 33 | tar -xvf helm-v3.12.1-linux-amd64.tar |
28 | 34 | sudo mv linux-amd64/helm /usr/local/bin/. |
29 | | - echo "Installing golang..." |
30 | | - rm -rf /usr/local/go |
| 35 | +
|
| 36 | + - name: Install Golang |
| 37 | + run: | |
| 38 | + echo "Installing Golang..." |
| 39 | + rm -rf /usr/local/go |
31 | 40 | wget https://go.dev/dl/go1.22.4.linux-amd64.tar.gz |
32 | 41 | sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz |
33 | 42 | export PATH=$PATH:/usr/local/go/bin |
34 | 43 | go version |
| 44 | +
|
| 45 | + - name: Prepare KubePlus Environment |
| 46 | + run: | |
| 47 | + echo "Setting up KubePlus environment..." |
35 | 48 | echo "Current directory:`pwd`" |
36 | | - echo "Folders:`ls`" |
37 | | - kubeplus_folder="$(basename `pwd`)" |
38 | | - echo "KubePlus folder name:$kubeplus_folder" |
39 | 49 | mkdir -p $HOME/go/src/github.com/cloud-ark |
40 | 50 | cd .. |
41 | | - runner_dir=`pwd` |
42 | 51 | echo "Current directory:`pwd`" |
43 | | - mv $kubeplus_folder $HOME/go/src/github.com/cloud-ark/kubeplus |
| 52 | + kubeplus_folder="$(basename `pwd`)" |
| 53 | + echo "KubePlus folder name:$kubeplus_folder" |
| 54 | + cp -R $kubeplus_folder $HOME/go/src/github.com/cloud-ark/kubeplus |
44 | 55 | cd $HOME/go/src/github.com/cloud-ark/kubeplus |
| 56 | + export KUBEPLUS_NS=default |
45 | 57 | export KUBEPLUS_HOME=`pwd` |
46 | 58 | export PATH=$KUBEPLUS_HOME/plugins:$PATH |
47 | 59 | echo "PATH:$PATH" |
48 | | - echo "KUBEPLUS_HOME:$KUBEPLUS_HOME" |
49 | | - kubectl kubeplus commands |
50 | | - export KUBEPLUS_NS=default |
51 | | - python3 -m venv venv |
52 | | - source venv/bin/activate |
53 | | - pip3 install -r requirements.txt |
54 | | - apiserver=`kubectl config view --minify -o jsonpath='{.clusters[0].cluster.server}'` |
55 | | - echo "API_SERVER_URL:$apiserver" |
56 | | - python3 provider-kubeconfig.py -s $apiserver create $KUBEPLUS_NS |
57 | | - deactivate |
58 | 60 |
|
59 | | - echo "Building mutating-webhook..." |
| 61 | + - name: Build Mutating Webhook |
| 62 | + run: | |
| 63 | + echo "KUBEPLUS_HOME:$KUBEPLUS_HOME" |
60 | 64 | cd $KUBEPLUS_HOME/mutating-webhook |
61 | | - export GO111MODULE=on; go get github.com/googleapis/gnostic@v0.4.0 |
| 65 | + export GO111MODULE=on |
| 66 | + go get github.com/googleapis/gnostic@v0.4.0 |
62 | 67 | ./build-artifact.sh latest |
63 | 68 |
|
64 | | - echo "Building helmer..." |
| 69 | + - name: Build Helmer |
| 70 | + run: | |
65 | 71 | cd $KUBEPLUS_HOME/platform-operator/helm-pod/ |
66 | 72 | go mod vendor |
67 | 73 | ./build-artifact.sh latest |
68 | 74 |
|
69 | | - echo "Building platform-operator..." |
| 75 | + - name: Build Platform Operator |
| 76 | + run: | |
70 | 77 | cd $KUBEPLUS_HOME/platform-operator |
71 | 78 | ./build-artifact.sh latest |
72 | 79 |
|
73 | | - echo "Building kubeconfiggenerator..." |
| 80 | + - name: Build KubeConfig Generator |
| 81 | + run: | |
74 | 82 | cd $KUBEPLUS_HOME/deploy |
75 | 83 | ./build-artifact-kubeconfiggenerator.sh latest |
76 | | - #echo "Building webhook_init_container..." |
77 | | - #./build-artifact.sh latest |
78 | | - #echo "Building resource cleaner..." |
79 | | - #./build-artifact-clean.sh latest |
80 | | -
|
81 | | - #cd $KUBEPLUS_HOME/consumerui |
82 | | - #echo "Building consumer ui..." |
83 | | - #./build-artifact.sh latest |
84 | 84 |
|
| 85 | + - name: List Docker Images |
| 86 | + run: | |
85 | 87 | cd $KUBEPLUS_HOME |
86 | | - ls |
87 | 88 | docker images |
88 | 89 |
|
89 | | - echo "Installing KubePlus..." |
90 | | - helm install kubeplus ./deploy/kubeplus-chart --kubeconfig=kubeplus-saas-provider.json --set MUTATING_WEBHOOK=gcr.io/cloudark-kubeplus/pac-mutating-admission-webhook:latest --set PLATFORM_OPERATOR=gcr.io/cloudark-kubeplus/platform-operator:latest --set HELMER=gcr.io/cloudark-kubeplus/helm-pod:latest --set CRD_REGISTRATION_HELPER=gcr.io/cloudark-kubeplus/kubeconfiggenerator:latest -n $KUBEPLUS_NS |
| 90 | + - name: Deploy KubePlus, Prometheus, and OpenCost to minikube |
| 91 | + run: | |
| 92 | + echo "Deploying KubePlus, Prometheus, and OpenCost..." |
| 93 | + wget https://raw.githubusercontent.com/opencost/opencost/develop/configs/default.json |
| 94 | + ./install.sh --prometheus --opencost default.json --kubeplus-plugin --kubeplus $KUBEPLUS_NS |
91 | 95 |
|
92 | | - kubectl get pods -A |
| 96 | + - name: Verify Prometheus Installation |
| 97 | + run: | |
| 98 | + echo "Verifying Prometheus installation..." |
| 99 | + kubectl get pods -n prometheus-system | grep prometheus |
93 | 100 |
|
94 | | - until kubectl get pods -A | grep kubeplus | grep -i Running; do echo "Waiting for KubePlus to start.."; sleep 1; kubeplus_pod=`kubectl get pods | grep kubeplus | awk '{print $1}'`; kubectl get pods $kubeplus_pod; done |
| 101 | + - name: Verify OpenCost Installation |
| 102 | + run: | |
| 103 | + echo "Verifying OpenCost installation..." |
| 104 | + kubectl get pods -n opencost | grep opencost |
| 105 | +
|
| 106 | + - name: Verify KubePlus Installation |
| 107 | + run: | |
| 108 | + echo "Verifying KubePlus installation..." |
| 109 | + kubectl get pods -n $KUBEPLUS_NS | grep kubeplus |
| 110 | +
|
| 111 | + - name: Retrieve KubePlus Pod Logs |
| 112 | + run: | |
95 | 113 | kubeplus_pod=`kubectl get pods | grep kubeplus | awk '{print $1}'` |
96 | | - echo "helmer logs..." |
| 114 | + echo "Helmer logs..." |
97 | 115 | kubectl logs $kubeplus_pod -c helmer |
98 | | - echo "platform-operator logs..." |
| 116 | + echo "Platform Operator logs..." |
99 | 117 | kubectl logs $kubeplus_pod -c platform-operator |
100 | | - echo "crd-hook logs..." |
| 118 | + echo "CRD Hook logs..." |
101 | 119 | kubectl logs $kubeplus_pod -c crd-hook |
102 | | - kubectl upload chart ./examples/multitenancy/application-hosting/wordpress/wordpress-chart-0.0.3.tgz kubeplus-saas-provider.json |
103 | | - echo "Sleeping for 10 seconds before continuing..." |
104 | | - sleep 10 |
| 120 | +
|
| 121 | + - name: Upload Example Chart |
| 122 | + run: kubectl upload chart ./examples/multitenancy/application-hosting/wordpress/wordpress-chart-0.0.3.tgz kubeplus-saas-provider.json |
| 123 | + |
| 124 | + - name: Sleep Before Continuing |
| 125 | + run: sleep 10 |
| 126 | + |
| 127 | + - name: Deploy WordPress Service Composition |
| 128 | + run: | |
105 | 129 | kubectl create -f ./examples/multitenancy/application-hosting/wordpress/wordpress-service-composition-localchart.yaml --kubeconfig=kubeplus-saas-provider.json |
106 | | - until kubectl get crds | grep wordpressservices.platformapi.kubeplus; do echo "Waiting for CRD to be registered.."; sleep 1; done |
| 130 | +
|
| 131 | + - name: Wait for CRD Registration |
| 132 | + run: | |
| 133 | + until kubectl get crds | grep wordpressservices.platformapi.kubeplus; do |
| 134 | + echo "Waiting for CRD to be registered..." |
| 135 | + sleep 1 |
| 136 | + done |
| 137 | +
|
| 138 | + - name: Deploy Tenant Example |
| 139 | + run: | |
107 | 140 | kubectl create -f ./examples/multitenancy/application-hosting/wordpress/tenant1.yaml --kubeconfig=kubeplus-saas-provider.json |
108 | 141 | kubectl get resourcecompositions |
109 | 142 | kubectl describe resourcecomposition wordpress-service-composition |
110 | | - until kubectl get pods -n wp-tenant1 | grep Running; do echo "Waiting for Application Pods to start.."; sleep 1; done |
| 143 | +
|
| 144 | + - name: Wait for Application Pods to Start |
| 145 | + run: | |
| 146 | + until kubectl get pods -n wp-tenant1 | grep Running; do |
| 147 | + echo "Waiting for Application Pods to start..." |
| 148 | + sleep 1 |
| 149 | + done |
| 150 | +
|
| 151 | + - name: Interact with Deployed Application |
| 152 | + run: | |
111 | 153 | kubectl appresources WordpressService wp-tenant1 –k kubeplus-saas-provider.json |
112 | 154 | kubectl metrics WordpressService wp-tenant1 $KUBEPLUS_NS -k kubeplus-saas-provider.json |
| 155 | +
|
| 156 | + - name: Cleanup Deployed Resources |
| 157 | + run: | |
113 | 158 | kubectl delete wordpressservice wp-tenant1 --kubeconfig=kubeplus-saas-provider.json |
114 | 159 | kubectl delete resourcecomposition wordpress-service-composition --kubeconfig=kubeplus-saas-provider.json |
115 | | - echo "Running tests..starting in 5 seconds" |
116 | | - sleep 5 |
| 160 | +
|
| 161 | + - name: Run Unit Tests |
| 162 | + run: | |
117 | 163 | cd tests |
118 | 164 | python3 -m venv venv |
119 | 165 | source venv/bin/activate |
|
0 commit comments