Skip to content

Commit 636a5cf

Browse files
committed
perf: handle db migrations in test.sh
1 parent bd1d1d3 commit 636a5cf

File tree

1 file changed

+31
-16
lines changed

1 file changed

+31
-16
lines changed

k8s/test.sh

Lines changed: 31 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
# !/bin/bash
22
set -e
33

4+
AZURE_CONTAINER_REGISTRY=""
45
KUBERNETES_NAMESPACE=""
56
KUBERNETES_DEPLOYMENT_NAME=""
7+
REFINERY_DEPLOYMENT_NAME="refinery-gateway"
68
TEST_IMAGE_TAG=""
7-
AZURE_CONTAINER_REGISTRY=""
89
TEST_CMD=""
910
ENABLE_ALEMBIC_MIGRATIONS="false"
1011

@@ -26,67 +27,81 @@ echo "Context set to namespace: \"$KUBERNETES_NAMESPACE\""
2627
echo "::endgroup::"
2728

2829

30+
REFINERY_ALEMBIC_VERSION=""
31+
KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION=""
32+
2933
KUBERNETES_POD_EXISTING_IMAGE=$(kubectl get pod --output json \
3034
--selector app=${KUBERNETES_DEPLOYMENT_NAME} \
3135
| jq -r '.items[0] | .spec.containers[0].image')
3236

33-
REFINERY_DEPLOYMENT_NAME="refinery-gateway"
3437
REFINERY_POD_EXISTING_IMAGE=$(kubectl get pod --output json \
3538
--selector app=${REFINERY_DEPLOYMENT_NAME} \
3639
| jq -r '.items[0] | .spec.containers[0].image')
40+
3741
REFINERY_IMAGE_TAG_EXISTS=$(az acr repository show --name ${AZURE_CONTAINER_REGISTRY} --image ${REFINERY_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG} 2> /dev/null || true)
3842

3943

4044
if [ "$ENABLE_ALEMBIC_MIGRATIONS" = "true" ]; then
41-
echo "::group::Preparing alembic migrations for test"
45+
echo "::group::Upgrade deployment image and alembic migrations"
4246
if [ $KUBERNETES_DEPLOYMENT_NAME != "refinery-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != "gates-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != "hosted-inference-api" ]; then
4347
if [ -n "$REFINERY_IMAGE_TAG_EXISTS" ]; then
48+
REFINERY_ALEMBIC_VERSION=$(kubectl exec -i deployment/${REFINERY_DEPLOYMENT_NAME} -c ${REFINERY_DEPLOYMENT_NAME} -- alembic current)
49+
REFINERY_ALEMBIC_VERSION=${REFINERY_ALEMBIC_VERSION:0:12}
50+
echo "::warning::current $REFINERY_DEPLOYMENT_NAME alembic version: $REFINERY_ALEMBIC_VERSION"
4451
kubectl set image deployment/${REFINERY_DEPLOYMENT_NAME} \
4552
${REFINERY_DEPLOYMENT_NAME}-migrate=${AZURE_CONTAINER_REGISTRY}/${REFINERY_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG} \
4653
${REFINERY_DEPLOYMENT_NAME}=${AZURE_CONTAINER_REGISTRY}/${REFINERY_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}
4754
kubectl rollout status deployment ${REFINERY_DEPLOYMENT_NAME}
4855
echo "::warning::using ${AZURE_CONTAINER_REGISTRY}/${REFINERY_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}"
56+
_REFINERY_ALEMBIC_VERSION=$(kubectl exec -i deployment/${REFINERY_DEPLOYMENT_NAME} -c ${REFINERY_DEPLOYMENT_NAME} -- alembic current)
57+
echo "::warning::upgraded $REFINERY_DEPLOYMENT_NAME alembic version: $_REFINERY_ALEMBIC_VERSION"
4958
fi
5059
else
51-
kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} ${KUBERNETES_DEPLOYMENT_NAME}-migrate=${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}
60+
KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION=$(kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c ${KUBERNETES_DEPLOYMENT_NAME} -- alembic current)
61+
KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION=${KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION:0:12}
62+
echo "::notice::current $KUBERNETES_DEPLOYMENT_NAME alembic version: $KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION"
63+
kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} \
64+
${KUBERNETES_DEPLOYMENT_NAME}-migrate=${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG} \
65+
${KUBERNETES_DEPLOYMENT_NAME}=${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}
66+
kubectl rollout status deployment ${KUBERNETES_DEPLOYMENT_NAME}
67+
echo "::notice::using ${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}"
68+
_KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION=$(kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c ${KUBERNETES_DEPLOYMENT_NAME} -- alembic current)
69+
echo "::notice::upgraded $KUBERNETES_DEPLOYMENT_NAME alembic version: $_KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION"
5270
fi
5371
echo "::endgroup::"
5472
fi
5573

56-
echo "::group::Upgrade deployment image"
57-
kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} ${KUBERNETES_DEPLOYMENT_NAME}=${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}
58-
kubectl rollout status deployment ${KUBERNETES_DEPLOYMENT_NAME}
59-
echo "::endgroup::"
60-
61-
62-
echo "::notice::using ${AZURE_CONTAINER_REGISTRY}/${KUBERNETES_DEPLOYMENT_NAME}:${TEST_IMAGE_TAG}"
63-
6474

6575
echo "::group::Running test command: kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c $KUBERNETES_DEPLOYMENT_NAME -- '$TEST_CMD'"
6676
set +e
6777
exitcode=0
6878
kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c $KUBERNETES_DEPLOYMENT_NAME -- ''$TEST_CMD''
6979
exitcode=$?
7080
set -e
71-
kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} ${KUBERNETES_DEPLOYMENT_NAME}=${KUBERNETES_POD_EXISTING_IMAGE}
7281
echo "::endgroup::"
7382

7483
if [ "$ENABLE_ALEMBIC_MIGRATIONS" = "true" ]; then
7584
echo "::group::Reverting alembic migrations for test"
7685
if [ $KUBERNETES_DEPLOYMENT_NAME != "refinery-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != "gates-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != "hosted-inference-api" ]; then
7786
if [ -n "$REFINERY_IMAGE_TAG_EXISTS" ]; then
87+
kubectl exec -i deployment/${REFINERY_DEPLOYMENT_NAME} -c ${REFINERY_DEPLOYMENT_NAME} -- alembic downgrade $REFINERY_ALEMBIC_VERSION
88+
echo "::warning::downgraded $REFINERY_DEPLOYMENT_NAME alembic version to $REFINERY_ALEMBIC_VERSION"
7889
kubectl set image deployment/${REFINERY_DEPLOYMENT_NAME} \
7990
${REFINERY_DEPLOYMENT_NAME}-migrate=${REFINERY_POD_EXISTING_IMAGE} \
8091
${REFINERY_DEPLOYMENT_NAME}=${REFINERY_POD_EXISTING_IMAGE}
8192
kubectl rollout status deployment ${REFINERY_DEPLOYMENT_NAME}
8293
echo "::warning::using ${REFINERY_POD_EXISTING_IMAGE}"
8394
fi
8495
else
85-
kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} ${KUBERNETES_DEPLOYMENT_NAME}-migrate=${REFINERY_POD_EXISTING_IMAGE}
96+
kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c ${KUBERNETES_DEPLOYMENT_NAME} -- alembic downgrade $KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION
97+
echo "::notice::downgraded $KUBERNETES_DEPLOYMENT_NAME alembic version to $KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION"
98+
kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} \
99+
${KUBERNETES_DEPLOYMENT_NAME}-migrate=${KUBERNETES_POD_EXISTING_IMAGE} \
100+
${KUBERNETES_DEPLOYMENT_NAME}=${KUBERNETES_POD_EXISTING_IMAGE}
101+
kubectl rollout status deployment ${KUBERNETES_DEPLOYMENT_NAME}
102+
echo "::notice::using ${KUBERNETES_POD_EXISTING_IMAGE}"
86103
fi
87104
echo "::endgroup::"
88105
fi
89106

90-
echo "::notice::using ${KUBERNETES_POD_EXISTING_IMAGE}"
91-
92107
exit $exitcode

0 commit comments

Comments
 (0)