feat: support clean old lifecycle before new update (#295) #505
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: E2E | |
on: | |
pull_request: | |
branches: | |
- main | |
- release-* | |
push: | |
branches: | |
- main | |
- release-* | |
env: | |
GO_VERSION: '1.19' | |
KIND_VERSION: 'v0.14.0' | |
KIND_IMAGE: 'kindest/node:v1.22.2' | |
KIND_CLUSTER_NAME: 'e2e-test' | |
jobs: | |
CollaSet: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Setup Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Cache Go Dependencies | |
uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: ${{ runner.os }}-go- | |
- name: Update Go Modules | |
run: | | |
go mod tidy | |
go mod download | |
- name: Setup Kind Cluster | |
uses: helm/[email protected] | |
with: | |
node_image: ${{ env.KIND_IMAGE }} | |
cluster_name: ${{ env.KIND_CLUSTER_NAME }} | |
config: ./test/e2e/scripts/kind-conf.yaml | |
version: ${{ env.KIND_VERSION }} | |
- name: Build Image | |
run: | | |
mkdir -p /tmp/kind | |
make kind-kube-config | |
make docker-build | |
make sync-kind-image | |
- name: Install Operating | |
run: | | |
set -ex | |
kubectl cluster-info | |
make deploy | |
for ((i=1;i<10;i++)); | |
do | |
set +e | |
PODS=$(kubectl get pod -n kusionstack-system | grep -c '1/1') | |
set -e | |
if [ "$PODS" -eq 1 ]; then | |
break | |
fi | |
sleep 3 | |
done | |
set -e | |
PODS=$(kubectl get pod -n kusionstack-system | grep -c '1/1') | |
if [ "$PODS" -eq 1 ]; then | |
echo "Wait for Kusionstack-manager ready successfully" | |
else | |
echo "Timeout to wait for Kusionstack-manager ready" | |
fi | |
- name: Run e2e Tests | |
run: | | |
make ginkgo | |
set -e | |
KUBECONFIG=/tmp/kind/kubeconfig.yaml ./bin/ginkgo -timeout 15m -v --focus='\[apps\] CollaSet' test/e2e | |
restartCount=$(kubectl get pod -n kusionstack-system -l control-plane=controller-manager --no-headers | awk '{print $4}') | |
if [ "${restartCount}" -eq "0" ];then | |
echo "Kusionstack-manager has not restarted" | |
else | |
kubectl get pod -n kusionstack-system -l control-plane=controller-manager --no-headers | |
echo "Kusionstack-manager has restarted, abort!!!" | |
kubectl get pod -n kusionstack-system --no-headers -l control-plane=controller-manager | awk '{print $1}' | xargs kubectl logs -p -n kusionstack-system | |
exit 1 | |
fi | |
OperationJob: | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@v3 | |
with: | |
submodules: true | |
- name: Setup Go | |
uses: actions/setup-go@v3 | |
with: | |
go-version: ${{ env.GO_VERSION }} | |
- name: Cache Go Dependencies | |
uses: actions/cache@v2 | |
with: | |
path: ~/go/pkg/mod | |
key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} | |
restore-keys: ${{ runner.os }}-go- | |
- name: Update Go Modules | |
run: | | |
go mod tidy | |
go mod download | |
- name: Setup Kind Cluster | |
uses: helm/[email protected] | |
with: | |
node_image: ${{ env.KIND_IMAGE }} | |
cluster_name: ${{ env.KIND_CLUSTER_NAME }} | |
config: ./test/e2e/scripts/kind-conf.yaml | |
version: ${{ env.KIND_VERSION }} | |
- name: Setup Kube-config | |
run: | | |
mkdir -p /tmp/kind | |
make kind-kube-config | |
- name: Install Operating | |
run: | | |
set -ex | |
kubectl cluster-info | |
make docker-build | |
make sync-kind-image | |
make deploy | |
for ((i=1;i<10;i++)); | |
do | |
set +e | |
PODS=$(kubectl get pod -n kusionstack-system | grep -c '1/1') | |
set -e | |
if [ "$PODS" -eq 1 ]; then | |
break | |
fi | |
sleep 3 | |
done | |
set -e | |
PODS=$(kubectl get pod -n kusionstack-system | grep -c '1/1') | |
if [ "$PODS" -eq 1 ]; then | |
echo "Wait for Kusionstack-manager ready successfully" | |
else | |
echo "Timeout to wait for Kusionstack-manager ready" | |
fi | |
- name: Run e2e Tests | |
run: | | |
make ginkgo | |
set -e | |
KUBECONFIG=/tmp/kind/kubeconfig.yaml ./bin/ginkgo -timeout 15m -v --focus='\[apps\] OperationJob' test/e2e | |
- name: Check Operating Manager | |
run: | | |
restartCount=$(kubectl get pod -n kusionstack-system -l control-plane=controller-manager --no-headers | awk '{print $4}') | |
if [ "${restartCount}" -eq "0" ];then | |
echo "Kusionstack-manager has not restarted" | |
else | |
kubectl get pod -n kusionstack-system -l control-plane=controller-manager --no-headers | |
echo "Kusionstack-manager has restarted, abort!!!" | |
kubectl get pod -n kusionstack-system --no-headers -l control-plane=controller-manager | awk '{print $1}' | xargs kubectl logs -p -n kusionstack-system | |
exit 1 | |
fi |