Skip to content
This repository has been archived by the owner on Feb 18, 2024. It is now read-only.

Commit

Permalink
Merge pull request #233 from sofastack/feat.ci-test
Browse files Browse the repository at this point in the history
添加workflow等待模块available
  • Loading branch information
gold300jin authored Nov 2, 2023
2 parents 43cd10f + 3e14ba2 commit ca9a253
Show file tree
Hide file tree
Showing 2 changed files with 338 additions and 1 deletion.
311 changes: 310 additions & 1 deletion .github/workflows/module_controller_ci_build_deploy_to_aliyun.yml
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,37 @@ jobs:
exit 1
fi
- name: wait module available
run: |
# 定义要等待的资源名称和字段值
modulename=$(kubectl get module -o name)
desired_field_value="Available"
# 定义等待的超时时间(以秒为单位)
timeout_seconds=300
start_time=$(date +%s)
end_time=$((start_time + timeout_seconds))
while true; do
current_time=$(date +%s)
if [ $current_time -gt $end_time ]; then
echo "等待超时"
exit 1
fi
# 使用 kubectl get 命令获取资源对象的详细信息,并提取自定义字段的值
field_value=$(kubectl get $modulename -o custom-columns=STATUS:.status.status --no-headers)
if [ "$field_value" == "$desired_field_value" ]; then
echo "字段值已满足条件"
exit 0
else
echo "等待字段值满足条件..."
sleep 5 # 等待一段时间后再次检查
fi
done
- name: check module
run: |
podname=$(kubectl get pod -l app=dynamic-stock -o name)
Expand All @@ -144,4 +175,282 @@ jobs:
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng/sofa-ark'
kubectl exec -it $podname -- sh -c 'grep "dynamic-provider:1.0.0 started" logs/stock-mng/sofa-ark/*.log'
- name: scaledown module
run:
kubectl apply -f config/samples/ci/module-deployment_v1alpha1_moduledeployment_provider_scaledown.yaml

- run: sleep 15

- name: not exist module
run: |
moduleCount=$(kubectl get module | wc -l)
if [[ $moduleCount -gt 0 ]]; then
echo "ERROR: module依旧存在"
exit 1
fi
- name: Apply moduledeployment scaleup module
run: |
kubectl apply -f config/samples/module-deployment_v1alpha1_moduledeployment_provider.yaml
- name: get moduledeployment
run: |
kubectl get moduledeployment
- name: get modulereplicaset
run: |
kubectl get modulereplicaset
- run: sleep 15

- name: get module
run: |
kubectl get module -oyaml
- name: exist module
run: |
moduleCount=$(kubectl get module | wc -l)
if [[ $moduleCount -lt 1 ]]; then
echo "ERROR: 不存在module"
exit 1
fi
- name: scaleup then wait module available
run: |
# 定义要等待的资源名称和字段值
modulename=$(kubectl get module -o name)
desired_field_value="Available"
# 定义等待的超时时间(以秒为单位)
timeout_seconds=300
start_time=$(date +%s)
end_time=$((start_time + timeout_seconds))
while true; do
current_time=$(date +%s)
if [ $current_time -gt $end_time ]; then
echo "等待超时"
exit 1
fi
# 使用 kubectl get 命令获取资源对象的详细信息,并提取自定义字段的值
field_value=$(kubectl get $modulename -o custom-columns=STATUS:.status.status --no-headers)
if [ "$field_value" == "$desired_field_value" ]; then
echo "字段值已满足条件"
exit 0
else
echo "等待字段值满足条件..."
sleep 5 # 等待一段时间后再次检查
fi
done
- name: scaleup then check module
run: |
podname=$(kubectl get pod -l app=dynamic-stock -o name)
kubectl exec -it $podname -- sh -c 'ls -al'
kubectl exec -it $podname -- sh -c 'ls -al logs'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng/sofa-ark'
kubectl exec -it $podname -- sh -c 'grep "dynamic-provider:1.0.0 started" logs/stock-mng/sofa-ark/*.log'
- name: delete module
run: |
moduleName=$(kubectl get module -o name | cut -d/ -f2)
kubectl delete -n default module $moduleName
- run: sleep 10

- name: delete module then check module is existed
run: |
moduleCount=$(kubectl get module | wc -l)
if [[ $moduleCount -lt 1 ]]; then
echo "ERROR: 不存在module"
exit 1
fi
- name: delete then wait module available
run: |
# 定义要等待的资源名称和字段值
modulename=$(kubectl get module -o name)
desired_field_value="Available"
# 定义等待的超时时间(以秒为单位)
timeout_seconds=300
start_time=$(date +%s)
end_time=$((start_time + timeout_seconds))
while true; do
current_time=$(date +%s)
if [ $current_time -gt $end_time ]; then
echo "等待超时"
exit 1
fi
# 使用 kubectl get 命令获取资源对象的详细信息,并提取自定义字段的值
field_value=$(kubectl get $modulename -o custom-columns=STATUS:.status.status --no-headers)
if [ "$field_value" == "$desired_field_value" ]; then
echo "字段值已满足条件"
exit 0
else
echo "等待字段值满足条件..."
sleep 5 # 等待一段时间后再次检查
fi
done
- name: delete module then check module
run: |
podname=$(kubectl get pod -l app=dynamic-stock -o name)
kubectl exec -it $podname -- sh -c 'ls -al'
kubectl exec -it $podname -- sh -c 'ls -al logs'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng/sofa-ark'
kubectl exec -it $podname -- sh -c 'grep "dynamic-provider:1.0.0 started" logs/stock-mng/sofa-ark/*.log'
- name: delete pod
run: |
podname=$(kubectl get pod -l app=dynamic-stock -o name | cut -d/ -f2)
kubectl delete -n default pod $podname
- run: sleep 15

- name: get pod
run: |
kubectl get pod
- name: describe pod
run: |
kubectl describe pod
- name: wait base pod available
run: |
kubectl wait --for=condition=available deployment/dynamic-stock-deployment --timeout=300s
- run: sleep 15

- name: delete pod then wait module available
run: |
# 定义要等待的资源名称和字段值
modulename=$(kubectl get module -o name)
desired_field_value="Available"
# 定义等待的超时时间(以秒为单位)
timeout_seconds=300
start_time=$(date +%s)
end_time=$((start_time + timeout_seconds))
while true; do
current_time=$(date +%s)
if [ $current_time -gt $end_time ]; then
echo "等待超时"
exit 1
fi
# 使用 kubectl get 命令获取资源对象的详细信息,并提取自定义字段的值
field_value=$(kubectl get $modulename -o custom-columns=STATUS:.status.status --no-headers)
if [ "$field_value" == "$desired_field_value" ]; then
echo "字段值已满足条件"
exit 0
else
echo "等待字段值满足条件..."
sleep 5 # 等待一段时间后再次检查
fi
done
- name: delete pod then check module
run: |
podname=$(kubectl get pod -l app=dynamic-stock -o name)
kubectl exec -it $podname -- sh -c 'ls -al'
kubectl exec -it $podname -- sh -c 'ls -al logs'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng'
kubectl exec -it $podname -- sh -c 'ls -al logs/stock-mng/sofa-ark'
kubectl exec -it $podname -- sh -c 'grep "dynamic-provider:1.0.0 started" logs/stock-mng/sofa-ark/*.log'
- name: scaledown module then delete deployment
run:
kubectl apply -f config/samples/ci/module-deployment_v1alpha1_moduledeployment_provider_scaledown.yaml

- name: wait module delete
run: |
timeout_seconds=300
start_time=$(date +%s)
end_time=$((start_time + timeout_seconds))
while true; do
moduleCount=$(kubectl get module | wc -l)
current_time=$(date +%s)
if [ $current_time -gt $end_time ]; then
echo "等待超时"
exit 1
fi
if [[ $moduleCount -lt 1 ]]; then
echo "module已缩容"
exit 0
else
echo "等待module删除"
sleep 5
fi
done
- name: delete deployment
run: |
kubectl delete -n default deployment dynamic-stock-deployment
- run: sleep 10

- name: log module-controller
run: |
podname=$(kubectl get po -l app=module-controller -o name)
kubectl logs $podname
- name: delete deployment then wait source clean
run: |
timeout_seconds=300
start_time=$(date +%s)
end_time=$((start_time + timeout_seconds))
while true; do
current_time=$(date +%s)
if [ $current_time -gt $end_time ]; then
echo "等待超时"
exit 1
fi
moduleCount=$(kubectl get -n default module | wc -l)
moduleReplicaSetCount=$(kubectl get -n default moduleReplicaSet | wc -l)
moduleDeploymentCount=$(kubectl get -n default moduleDeployment | wc -l)
deploymentCount=$(kubectl get -n default deployment dynamic-stock-deployment | wc -l)
echo deploymentCount is $deploymentCount
echo moduleDeploymentCount is $moduleDeploymentCount
echo moduleReplicaSetCount is $moduleReplicaSetCount
echo moduleCount is $moduleCount
if [[ $deploymentCount -lt 1 && $moduleCount -lt 1 && $moduleReplicaSetCount -lt 1 && $moduleDeploymentCount -lt 1 ]]; then
echo "所有资源已删除"
exit 0
else
if [[ $moduleCount -ge 1 ]]; then
echo "等待module删除..."
fi
if [[ $moduleReplicaSetCount -ge 1 ]]; then
echo "等待moduleReplicaSet删除..."
fi
if [[ $moduleDeploymentCount -ge 1 ]]; then
echo "等待moduleDeployment删除..."
fi
if [[ $deploymentCount -ge 1 ]]; then
echo "等待deployment删除..."
fi
sleep 5
fi
done
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
apiVersion: serverless.alipay.com/v1alpha1
kind: ModuleDeployment
metadata:
labels:
app.kubernetes.io/name: moduledeployment
app.kubernetes.io/instance: moduledeployment-sample
app.kubernetes.io/part-of: module-controller
app.kubernetes.io/managed-by: kustomize
app.kubernetes.io/created-by: module-controller
name: moduledeployment-sample-provider
spec:
baseDeploymentName: dynamic-stock-deployment
template:
spec:
module:
name: dynamic-provider
version: '1.0.0'
url: http://serverless-opensource.oss-cn-shanghai.aliyuncs.com/module-packages/stable/dynamic-provider-1.0.0-ark-biz.jar
replicas: 0
operationStrategy:
needConfirm: false
grayTimeBetweenBatchSeconds: 120
useBeta: false
batchCount: 1
upgradePolicy: install_then_uninstall
schedulingStrategy:
schedulingPolicy: scatter

0 comments on commit ca9a253

Please sign in to comment.