68 lines
1.9 KiB
Bash
Executable File
68 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
: "${STAGING_AUDIT_PROJECT_NAME:?STAGING_AUDIT_PROJECT_NAME is required}"
|
|
: "${STAGING_AUDIT_PROJECT_DIR:?STAGING_AUDIT_PROJECT_DIR is required}"
|
|
: "${STAGING_AUDIT_MANAGE:?STAGING_AUDIT_MANAGE is required}"
|
|
|
|
AUDIT_TIMEOUT_SECONDS=${AUDIT_TIMEOUT_SECONDS:-300}
|
|
ARTIFACT_DIR=${ARTIFACT_DIR:-artifacts}
|
|
OUT_FILE="${ARTIFACT_DIR}/multilingual-audit.json"
|
|
mkdir -p "${ARTIFACT_DIR}"
|
|
TMP_FILE=$(mktemp)
|
|
trap 'rm -f "$TMP_FILE"' EXIT
|
|
|
|
REMOTE_CMD="cd '${STAGING_AUDIT_PROJECT_DIR}' && '${STAGING_AUDIT_MANAGE}' audit_locales --format=json"
|
|
set +e
|
|
STAGING_AUDIT_PROJECT_NAME="$STAGING_AUDIT_PROJECT_NAME" REMOTE_CMD="$REMOTE_CMD" AUDIT_TIMEOUT_SECONDS="$AUDIT_TIMEOUT_SECONDS" python3 - <<'PY' > "$TMP_FILE"
|
|
import json
|
|
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
cmd = [
|
|
"sudo", "-n", "-u", "mandel", "-g", "www-data",
|
|
"/srv/apps/mandel-dashboard/.venv/bin/python",
|
|
"/srv/apps/mandel-dashboard/bin/deploy_stg_from_jenkins.py",
|
|
os.environ["STAGING_AUDIT_PROJECT_NAME"],
|
|
"--command",
|
|
os.environ["REMOTE_CMD"],
|
|
]
|
|
try:
|
|
proc = subprocess.run(
|
|
cmd,
|
|
check=False,
|
|
stdout=subprocess.PIPE,
|
|
stderr=subprocess.PIPE,
|
|
text=True,
|
|
timeout=int(os.environ["AUDIT_TIMEOUT_SECONDS"]),
|
|
)
|
|
except subprocess.TimeoutExpired:
|
|
print(json.dumps({
|
|
"error": "audit_failed",
|
|
"details": f"Audit command timed out after {os.environ['AUDIT_TIMEOUT_SECONDS']} seconds",
|
|
"exit_code": 124,
|
|
}, indent=2))
|
|
raise SystemExit(2)
|
|
|
|
stdout = proc.stdout.strip()
|
|
stderr = proc.stderr.strip()
|
|
if proc.returncode != 0:
|
|
if stdout:
|
|
print(stdout)
|
|
else:
|
|
print(json.dumps({
|
|
"error": "audit_failed",
|
|
"details": stderr or f"Audit command failed with exit status {proc.returncode}",
|
|
"exit_code": proc.returncode,
|
|
}, indent=2))
|
|
raise SystemExit(2)
|
|
|
|
print(stdout)
|
|
PY
|
|
rc=$?
|
|
set -e
|
|
cp "$TMP_FILE" "$OUT_FILE"
|
|
cat "$OUT_FILE"
|
|
exit $rc
|