fix: expose failed deployment container logs
This commit is contained in:
@@ -273,6 +273,13 @@ deploy_local() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "新镜像健康检查失败: $IMAGE" >&2
|
echo "新镜像健康检查失败: $IMAGE" >&2
|
||||||
|
failed_container_id="$(local_container_id || true)"
|
||||||
|
if [ -n "$failed_container_id" ]; then
|
||||||
|
echo "新镜像容器最近日志(最多 200 行):" >&2
|
||||||
|
docker logs --tail 200 "$failed_container_id" 2>&1 || true
|
||||||
|
else
|
||||||
|
echo "新镜像容器不存在,无法读取启动日志" >&2
|
||||||
|
fi
|
||||||
expected_prefix="$IMAGE_REPOSITORY/$SERVICE:"
|
expected_prefix="$IMAGE_REPOSITORY/$SERVICE:"
|
||||||
case "$previous_image" in
|
case "$previous_image" in
|
||||||
"$expected_prefix"*)
|
"$expected_prefix"*)
|
||||||
@@ -476,6 +483,13 @@ if [ "$new_started" = "true" ] && wait_for_health; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "新镜像健康检查失败: $new_image" >&2
|
echo "新镜像健康检查失败: $new_image" >&2
|
||||||
|
failed_container_id="$(remote_container_id || true)"
|
||||||
|
if [ -n "$failed_container_id" ]; then
|
||||||
|
echo "新镜像容器最近日志(最多 200 行):" >&2
|
||||||
|
docker logs --tail 200 "$failed_container_id" 2>&1 || true
|
||||||
|
else
|
||||||
|
echo "新镜像容器不存在,无法读取启动日志" >&2
|
||||||
|
fi
|
||||||
expected_prefix="$image_repository/$service:"
|
expected_prefix="$image_repository/$service:"
|
||||||
case "$previous_image" in
|
case "$previous_image" in
|
||||||
"$expected_prefix"*) previous_tag="${previous_image#"$expected_prefix"}" ;;
|
"$expected_prefix"*) previous_tag="${previous_image#"$expected_prefix"}" ;;
|
||||||
|
|||||||
@@ -54,6 +54,9 @@ case "$command" in
|
|||||||
*) exit 2 ;;
|
*) exit 2 ;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
logs)
|
||||||
|
echo 'mock startup failure'
|
||||||
|
;;
|
||||||
*)
|
*)
|
||||||
echo "unexpected docker command: $command $*" >&2
|
echo "unexpected docker command: $command $*" >&2
|
||||||
exit 2
|
exit 2
|
||||||
@@ -129,6 +132,9 @@ test('unhealthy deployment restores the previous healthy image and still fails t
|
|||||||
|
|
||||||
assert.equal(result.status, 1, output)
|
assert.equal(result.status, 1, output)
|
||||||
assert.match(output, /新镜像健康检查失败: registry\.local\/group\/firstleg\/audit-service:newbad/)
|
assert.match(output, /新镜像健康检查失败: registry\.local\/group\/firstleg\/audit-service:newbad/)
|
||||||
|
assert.match(output, /新镜像容器最近日志(最多 200 行):/)
|
||||||
|
assert.match(output, /mock startup failure/)
|
||||||
|
assert.match(result.dockerLog, /logs --tail 200 mock-container/)
|
||||||
assert.match(output, /开始自动回滚到: registry\.local\/group\/firstleg\/audit-service:oldgood/)
|
assert.match(output, /开始自动回滚到: registry\.local\/group\/firstleg\/audit-service:oldgood/)
|
||||||
assert.match(output, /自动回滚成功: registry\.local\/group\/firstleg\/audit-service:oldgood/)
|
assert.match(output, /自动回滚成功: registry\.local\/group\/firstleg\/audit-service:oldgood/)
|
||||||
assert.match(result.dockerLog, /pull registry\.local\/group\/firstleg\/audit-service:oldgood/)
|
assert.match(result.dockerLog, /pull registry\.local\/group\/firstleg\/audit-service:oldgood/)
|
||||||
|
|||||||
Reference in New Issue
Block a user