1
1
# !/bin/bash
2
2
set -e
3
3
4
+ AZURE_CONTAINER_REGISTRY=" "
4
5
KUBERNETES_NAMESPACE=" "
5
6
KUBERNETES_DEPLOYMENT_NAME=" "
7
+ REFINERY_DEPLOYMENT_NAME=" refinery-gateway"
6
8
TEST_IMAGE_TAG=" "
7
- AZURE_CONTAINER_REGISTRY=" "
8
9
TEST_CMD=" "
9
10
ENABLE_ALEMBIC_MIGRATIONS=" false"
10
11
@@ -26,67 +27,81 @@ echo "Context set to namespace: \"$KUBERNETES_NAMESPACE\""
26
27
echo " ::endgroup::"
27
28
28
29
30
+ REFINERY_ALEMBIC_VERSION=" "
31
+ KUBERNETES_DEPLOYMENT_ALEMBIC_VERSION=" "
32
+
29
33
KUBERNETES_POD_EXISTING_IMAGE=$( kubectl get pod --output json \
30
34
--selector app=${KUBERNETES_DEPLOYMENT_NAME} \
31
35
| jq -r ' .items[0] | .spec.containers[0].image' )
32
36
33
- REFINERY_DEPLOYMENT_NAME=" refinery-gateway"
34
37
REFINERY_POD_EXISTING_IMAGE=$( kubectl get pod --output json \
35
38
--selector app=${REFINERY_DEPLOYMENT_NAME} \
36
39
| jq -r ' .items[0] | .spec.containers[0].image' )
40
+
37
41
REFINERY_IMAGE_TAG_EXISTS=$( az acr repository show --name ${AZURE_CONTAINER_REGISTRY} --image ${REFINERY_DEPLOYMENT_NAME} :${TEST_IMAGE_TAG} 2> /dev/null || true)
38
42
39
43
40
44
if [ " $ENABLE_ALEMBIC_MIGRATIONS " = " true" ]; then
41
- echo " ::group::Preparing alembic migrations for test "
45
+ echo " ::group::Upgrade deployment image and alembic migrations "
42
46
if [ $KUBERNETES_DEPLOYMENT_NAME != " refinery-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != " gates-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != " hosted-inference-api" ]; then
43
47
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 "
44
51
kubectl set image deployment/${REFINERY_DEPLOYMENT_NAME} \
45
52
${REFINERY_DEPLOYMENT_NAME} -migrate=${AZURE_CONTAINER_REGISTRY} /${REFINERY_DEPLOYMENT_NAME} :${TEST_IMAGE_TAG} \
46
53
${REFINERY_DEPLOYMENT_NAME} =${AZURE_CONTAINER_REGISTRY} /${REFINERY_DEPLOYMENT_NAME} :${TEST_IMAGE_TAG}
47
54
kubectl rollout status deployment ${REFINERY_DEPLOYMENT_NAME}
48
55
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 "
49
58
fi
50
59
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 "
52
70
fi
53
71
echo " ::endgroup::"
54
72
fi
55
73
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
-
64
74
65
75
echo " ::group::Running test command: kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c $KUBERNETES_DEPLOYMENT_NAME -- '$TEST_CMD '"
66
76
set +e
67
77
exitcode=0
68
78
kubectl exec -i deployment/${KUBERNETES_DEPLOYMENT_NAME} -c $KUBERNETES_DEPLOYMENT_NAME -- ' ' $TEST_CMD ' '
69
79
exitcode=$?
70
80
set -e
71
- kubectl set image deployment/${KUBERNETES_DEPLOYMENT_NAME} ${KUBERNETES_DEPLOYMENT_NAME} =${KUBERNETES_POD_EXISTING_IMAGE}
72
81
echo " ::endgroup::"
73
82
74
83
if [ " $ENABLE_ALEMBIC_MIGRATIONS " = " true" ]; then
75
84
echo " ::group::Reverting alembic migrations for test"
76
85
if [ $KUBERNETES_DEPLOYMENT_NAME != " refinery-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != " gates-gateway" ] && [ $KUBERNETES_DEPLOYMENT_NAME != " hosted-inference-api" ]; then
77
86
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 "
78
89
kubectl set image deployment/${REFINERY_DEPLOYMENT_NAME} \
79
90
${REFINERY_DEPLOYMENT_NAME} -migrate=${REFINERY_POD_EXISTING_IMAGE} \
80
91
${REFINERY_DEPLOYMENT_NAME} =${REFINERY_POD_EXISTING_IMAGE}
81
92
kubectl rollout status deployment ${REFINERY_DEPLOYMENT_NAME}
82
93
echo " ::warning::using ${REFINERY_POD_EXISTING_IMAGE} "
83
94
fi
84
95
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} "
86
103
fi
87
104
echo " ::endgroup::"
88
105
fi
89
106
90
- echo " ::notice::using ${KUBERNETES_POD_EXISTING_IMAGE} "
91
-
92
107
exit $exitcode
0 commit comments