HH-446: restore auditable quality gates from current main (#102)
* HH-446: restore auditable quality gates * test(HH-446): restore help center smoke contract --------- Co-authored-by: Rogee <rogee@ipao.vip>
This commit is contained in:
Executable
+58
@@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
QUALITY_DIR="${GOCHAT_QUALITY_DIR:-$ROOT/.tmp/quality}"
|
||||
mkdir -p "$QUALITY_DIR"
|
||||
|
||||
RACE="${GOCHAT_RACE:-true}"
|
||||
COLD_CACHE="${GOCHAT_COLD_CACHE:-true}"
|
||||
MIN_COVERAGE="${GOCHAT_MIN_COVERAGE:-65}"
|
||||
MAX_DURATION="${GOCHAT_MAX_DURATION_SECONDS:-300}"
|
||||
COVERAGE_FILE="${GOCHAT_COVERAGE_FILE:-$QUALITY_DIR/coverage.out}"
|
||||
TEST_JSON="${GOCHAT_TEST_JSON:-$QUALITY_DIR/test.jsonl}"
|
||||
DURATION_FILE="${GOCHAT_DURATION_FILE:-$QUALITY_DIR/duration.seconds}"
|
||||
REPORT_FILE="${GOCHAT_QUALITY_REPORT:-$QUALITY_DIR/quality-gate.json}"
|
||||
|
||||
packages=(./internal/... ./pkg/... ./cmd/...)
|
||||
if [[ -n "${GOCHAT_TEST_PACKAGES:-}" ]]; then
|
||||
read -r -a packages <<< "$GOCHAT_TEST_PACKAGES"
|
||||
fi
|
||||
|
||||
if [[ "$COLD_CACHE" == "true" ]]; then
|
||||
go clean -testcache
|
||||
fi
|
||||
|
||||
race_args=()
|
||||
if [[ "$RACE" == "true" ]]; then
|
||||
race_args=(-race)
|
||||
fi
|
||||
|
||||
start="$(date +%s.%N)"
|
||||
set +e
|
||||
go test -json -count=1 "${race_args[@]}" -covermode=atomic \
|
||||
-coverprofile="$COVERAGE_FILE" -timeout "${GOCHAT_TEST_TIMEOUT:-300s}" \
|
||||
"${packages[@]}" | tee "$TEST_JSON" >/dev/null
|
||||
test_status=${PIPESTATUS[0]}
|
||||
set -e
|
||||
end="$(date +%s.%N)"
|
||||
awk -v start="$start" -v end="$end" 'BEGIN { printf "%.3f\n", end-start }' > "$DURATION_FILE"
|
||||
|
||||
set +e
|
||||
python3 "$ROOT/scripts/ci_quality_gate.py" \
|
||||
--coverage "$COVERAGE_FILE" \
|
||||
--test-json "$TEST_JSON" \
|
||||
--duration "$DURATION_FILE" \
|
||||
--report "$REPORT_FILE" \
|
||||
--min-coverage "$MIN_COVERAGE" \
|
||||
--max-duration "$MAX_DURATION" \
|
||||
--test-exit-code "$test_status" \
|
||||
--critical-package github.com/gochat/gochat/internal/ws \
|
||||
--critical-package github.com/gochat/gochat/internal/handler/ws \
|
||||
--critical-package github.com/gochat/gochat/internal/worker \
|
||||
--critical-package github.com/gochat/gochat/internal/channel/...
|
||||
gate_status=$?
|
||||
set -e
|
||||
|
||||
[[ "$test_status" -eq 0 ]] || exit "$test_status"
|
||||
exit "$gate_status"
|
||||
Reference in New Issue
Block a user