Skip to content

Upgrade test gh action #5

Upgrade test gh action

Upgrade test gh action #5

name: Corfu Cluster Test
on: push
jobs:
upgrade-test:
runs-on: ubuntu-latest
env:
PKG_USERNAME: ${{ secrets.pkg_username }}
PUBLISH_TOKEN: ${{ secrets.publish_token }}
steps:
- uses: actions/checkout@v2
with:
repository: "CorfuDB/CorfuDB"
- name: Setup BuildX
uses: docker/setup-buildx-action@v2
- name: Cancel Previous Runs
uses: styfle/[email protected]
with:
access_token: ${{ github.token }}
- name: Cache local Maven repository
uses: actions/cache@v2
with:
path: ~/.m2/repository
key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
restore-keys: |
${{ runner.os }}-maven-
- name: Build Corfu Master Image
uses: actions/checkout@v2
with:
repository: "CorfuDB/CorfuDB"
path: enable-lr
- name: Build Docker image
run: |
.ci/infrastructure-docker-build.sh docker openjdk:8-jdk-bullseye
- name: Build Corfu 3.2.3 Image
uses: actions/checkout@v2
with:
repository: "CorfuDB/CorfuDB"
ref: corfu-cloud-0.3.2.3
- name: Build Docker image
run: |
.ci/infrastructure-docker-build.sh docker openjdk:8-jdk-bullseye
- name: Checkout code
uses: actions/checkout@v2
- name: Set up cluster
working-directory: ./cloud/corfu
run: |
k3d cluster delete corfu
rm -rf /tmp/k3dvol
k3d cluster create corfu \
--volume /tmp/k3dvol:/tmp/k3dvol \
-p "8082:30080@agent:0" \
--agents 4
- name: Import images
working-directory: ./cloud/corfu
run: |
k3d image import corfudb/corfu-server:0.3.2-SNAPSHOT -c corfu
k3d image import corfudb/corfu-server:0.4.0-SNAPSHOT -c corfu
k3d image import corfudb/corfu-client-example:latest -c corfu
- name: Set up Helm
working-directory: ./cloud/corfu
run: |
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.8.0 --set installCRDs=true
- name: Initialize v1 cluster
working-directory: ./cloud/corfu
run: |
helm install corfu corfu --set tls.enabled=false --set tls.certificate.enabled=false --set global.replicas=3 --set image.repository=corfudb/corfu-server --set image.tag=0.3.2-SNAPSHOT
helm install corfu2 corfu --set tls.enabled=false --set tls.certificate.enabled=false --set global.replicas=3 --set image.repository=corfudb/corfu-server --set image.tag=0.3.2-SNAPSHOT --set lr.name="log-replication2" --set nameOverride="corfu2" --set serviceAccount.name="corfu2" --set nameOverride="corfu2" --set fullnameOverride="corfu2" --set cluster.type="sink"
sleep 30
- name: Cluster Verify V1
working-directory: ./cloud.corfu
run: |
local lr_version=V1
# Wait for Corfu to be ready
while ! kubectl logs corfu-0 -c corfu | grep -q "DATA"; do
echo "Corfu is not ready yet..."
sleep 15
done
echo "Corfu is Ready!!!!"
# Get the leader of the log replication
lr_leader=""
while true; do
if kubectl logs log-replication-0 | grep -q "acquired"; then
lr_leader="log-replication-0"
break
fi
if kubectl logs log-replication-1 | grep -q "acquired"; then
lr_leader="log-replication-1"
break
fi
if kubectl logs log-replication-2 | grep -q "acquired"; then
lr_leader="log-replication-2"
break
fi
done
echo "LR Leader is: $lr_leader"
lr_ready_str=""
if [ $lr_version = "V2" ]; then
lr_ready_str="Received leadership response from node"
else
lr_ready_str="Negotiation complete"
fi
# Wait for the log replication leader to be ready
while ! kubectl logs $lr_leader | grep -q $lr_ready_str; do
echo "LR is not ready yet..."
sleep 10
done
echo "Ready to Replicate!!!!"
- name: Upgrade cluster
working-directory: ./cloud/corfu
run: |
helm upgrade corfu corfu --set tls.enabled=false --set tls.certificate.enabled=false --set global.replicas=3 --set image.repository=corfudb/corfu-server --set image.tag=0.4.0-SNAPSHOT --set version.new=true
helm upgrade corfu2 corfu --set tls.enabled=false --set tls.certificate.enabled=false --set global.replicas=3 --set image.repository=corfudb/corfu-server --set image.tag=0.4.0-SNAPSHOT --set lr.name="log-replication2" --set nameOverride="corfu2" --set serviceAccount.name="corfu2" --set nameOverride="corfu2" --set fullnameOverride="corfu2" --set cluster.type="sink" --set version.new=true
while kubectl describe pods --all-namespaces | grep -q "0.3.2-SNAPSHOT"; do
echo "Waiting for pods to be re-imaged..."
sleep 10
done
echo "Cluster upgrade complete!!!"
- name: Test cluster
working-directory: ./cloud/corfu
run: |
echo "Writing Data To Source..."
helm install corfu-client corfu-client-example-helm --set tls.enabled=false --set jobs.job=1
while ! kubectl get pods -o wide | grep corfu-client | grep -q Completed; do
echo "Waiting for test to finish..."
sleep 5
done
helm uninstall corfu-client
while kubectl get pods -o wide | grep -q corfu-client; do
echo "Removing test agent..."
sleep 5
done
echo "Test Complete!!!"
- name: Validate test
working-directory: ./cloud/corfu
run: |
echo "Starting test validation!!!"
helm install corfu-client corfu-client-example-helm --set tls.enabled=false --set jobs.job=2
while ! kubectl get pods -o wide | grep corfu-client | grep -q Completed; do
echo "Waiting for validation to complete..."
sleep 5
done
helm uninstall corfu-client
while kubectl get pods -o wide | grep -q corfu-client; do
echo "Removing test agent..."
sleep 5
done
echo "Validation Complete!!!"