ci: retry transient registry failures
Deploy olons-admin production / deploy (push) Successful in 47s
Deploy olons-admin production / deploy (push) Successful in 47s
This commit is contained in:
@@ -62,7 +62,23 @@ jobs:
|
|||||||
printf '%s\n' "$DEPLOY_KNOWN_HOSTS" > "$HOME/.ssh/known_hosts"
|
printf '%s\n' "$DEPLOY_KNOWN_HOSTS" > "$HOME/.ssh/known_hosts"
|
||||||
chmod 600 "$HOME/.ssh/known_hosts"
|
chmod 600 "$HOME/.ssh/known_hosts"
|
||||||
SSH_ARGS=(-i "$KEY_FILE" -o BatchMode=yes -o StrictHostKeyChecking=yes)
|
SSH_ARGS=(-i "$KEY_FILE" -o BatchMode=yes -o StrictHostKeyChecking=yes)
|
||||||
printf '%s' "$REGISTRY_TOKEN" | ssh "${SSH_ARGS[@]}" "$DEPLOY_USER@$DEPLOY_HOST" \
|
for attempt in 1 2 3; do
|
||||||
"docker login git.olns.shop -u admin --password-stdin"
|
if printf '%s' "$REGISTRY_TOKEN" | ssh "${SSH_ARGS[@]}" "$DEPLOY_USER@$DEPLOY_HOST" \
|
||||||
|
"docker login git.olns.shop -u admin --password-stdin"; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [[ "$attempt" -eq 3 ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep "$((attempt * 5))"
|
||||||
|
done
|
||||||
ssh "${SSH_ARGS[@]}" "$DEPLOY_USER@$DEPLOY_HOST" \
|
ssh "${SSH_ARGS[@]}" "$DEPLOY_USER@$DEPLOY_HOST" \
|
||||||
"cd /opt/olns && docker compose pull olons-admin && docker compose up -d --no-deps --wait olons-admin"
|
'cd /opt/olns && for attempt in 1 2 3; do
|
||||||
|
if timeout 180 docker compose pull olons-admin; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [ "$attempt" -eq 3 ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep $((attempt * 5))
|
||||||
|
done && docker compose up -d --no-deps --wait olons-admin'
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ class DeployWorkflowContractTest(unittest.TestCase):
|
|||||||
self.assertIn("docker compose pull olons-admin", self.workflow)
|
self.assertIn("docker compose pull olons-admin", self.workflow)
|
||||||
self.assertIn("docker compose up -d --no-deps --wait olons-admin", self.workflow)
|
self.assertIn("docker compose up -d --no-deps --wait olons-admin", self.workflow)
|
||||||
|
|
||||||
|
def test_retries_transient_remote_registry_failures(self):
|
||||||
|
self.assertGreaterEqual(self.workflow.count("for attempt in 1 2 3"), 2)
|
||||||
|
self.assertIn("timeout 180 docker compose pull olons-admin", self.workflow)
|
||||||
|
|
||||||
def test_removes_old_kubernetes_and_registry_targets(self):
|
def test_removes_old_kubernetes_and_registry_targets(self):
|
||||||
self.assertNotIn("kubectl", self.workflow)
|
self.assertNotIn("kubectl", self.workflow)
|
||||||
self.assertNotIn("KUBECONFIG", self.workflow)
|
self.assertNotIn("KUBECONFIG", self.workflow)
|
||||||
|
|||||||
Reference in New Issue
Block a user