-
Notifications
You must be signed in to change notification settings - Fork 1.1k
ci: bound every job at 120 minutes #6005
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -25,6 +25,7 @@ jobs: | |
| # --------------------------------------------------------------------------- | ||
| pick-runner: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 120 | ||
| permissions: | ||
| actions: read # read in-progress runs/jobs (no repo admin needed) | ||
| outputs: | ||
|
|
@@ -80,6 +81,7 @@ jobs: | |
| tests: | ||
| needs: pick-runner | ||
| runs-on: ${{ fromJson(needs.pick-runner.outputs.runson) }} | ||
| timeout-minutes: 120 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟠 Major | 🏗️ Heavy lift 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "## workflows found"
git ls-files .github/workflows | sort
echo
echo "## relevant timeout/!cancelled/always/artifact lines"
for f in $(git ls-files .github/workflows/{ci-basictests,ci-builds,ci-legacy-clickhouse-g1,ci-legacy-g1,ci-legacy-g2-genai,ci-pgsql-socket-g1,ci-selftests,ci-set_parser_algorithm_3-g1,ci-taptests-pgsql-cluster}.yml); do
echo "===== $f"
wc -l "$f"
sed -n '1,140p' "$f" | nl -ba | grep -En 'timeout-minutes:|!cancelled\(|always\(|upload-artifact|tar|zip|chmod|archive|logs|bin' || true
done
echo
echo "## diff stat (if available)"
git diff --stat || trueRepository: sysown/proxysql Length of output: 4021 🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
files = [
".github/workflows/ci-basictests.yml",
".github/workflows/ci-builds.yml",
".github/workflows/ci-legacy-clickhouse-g1.yml",
".github/workflows/ci-legacy-g1.yml",
".github/workflows/ci-legacy-g2-genai.yml",
".github/workflows/ci-pgsql-socket-g1.yml",
".github/workflows/ci-selftests.yml",
".github/workflows/ci-set_parser_algorithm_3-g1.yml",
".github/workflows/ci-taptests-pgsql-cluster.yml",
]
for f in files:
p=Path(f)
if not p.exists():
print("MISSING", f)
continue
text=p.read_text()
lines=text.splitlines()
print(f"===== {f}")
for i,line in enumerate(lines,1):
if "timeout-minutes:" in line or "cancelled()" in line or "always()" in line:
print(f"{i}: {line}")
print()
PYRepository: sysown/proxysql Length of output: 4889 🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
files = [
".github/workflows/ci-basictests.yml",
".github/workflows/ci-builds.yml",
".github/workflows/ci-legacy-clickhouse-g1.yml",
".github/workflows/ci-legacy-g1.yml",
".github/workflows/ci-legacy-g2-genai.yml",
".github/workflows/ci-pgsql-socket-g1.yml",
".github/workflows/ci-selftests.yml",
".github/workflows/ci-set_parser_algorithm_3-g1.yml",
".github/workflows/ci-taptests-pgsql-cluster.yml",
]
for f in files:
lines = Path(f).read_text().splitlines()
jobs = {}
job_start, cur = None, None
for n, line in enumerate(lines, 1):
if re.match(r"^ [A-Za-z0-9_-]+:$", line):
if cur and cur is not None and cur.start is not None:
jobs[cur.name] = cur
job_start = n
cur = type("Job", (), {"name": line.strip().rstrip(":").lstrip(" "), "start": n, "lines": []})
if cur and n >= job_start:
cur.lines.append((n, line))
if cur:
jobs[cur.name] = cur
print(f"===== {f}")
for jname, job in jobs.items():
job_lines = "\n".join(line for _, line in job.lines)
if "timeout-minutes:" in job_lines or "cancelled()" in job_lines or "always()" in job_lines or "upload-artifact" in job_lines or "tar " in job_lines:
print("--- job", jname)
for n, line in job.lines:
if any(tok in line for tok in ["timeout-minutes:", "if:", "upload-artifact", "tar ", "chmod", "artifact", "logs", "coverage", "bin"]):
print(f"{n}: {line")
PYRepository: sysown/proxysql Length of output: 266 🏁 Script executed: #!/bin/bash
set -euo pipefail
python3 - <<'PY'
from pathlib import Path
import re
files = [
".github/workflows/ci-basictests.yml",
".github/workflows/ci-builds.yml",
".github/workflows/ci-legacy-clickhouse-g1.yml",
".github/workflows/ci-legacy-g1.yml",
".github/workflows/ci-legacy-g2-genai.yml",
".github/workflows/ci-pgsql-socket-g1.yml",
".github/workflows/ci-selftests.yml",
".github/workflows/ci-set_parser_algorithm_3-g1.yml",
".github/workflows/ci-taptests-pgsql-cluster.yml",
]
for f in files:
lines = Path(f).read_text().splitlines()
jobs = {}
job_start, cur = None, None
for n, line in enumerate(lines, 1):
if re.match(r"^ [A-Za-z0-9_-]+:$", line):
if cur:
jobs[cur.name] = cur
cur = type("Job", (), {"name": line.strip().rstrip(":").lstrip(" "), "start": n, "lines": []})
if cur and n >= job_start:
cur.lines.append((n, line))
if cur:
jobs[cur.name] = cur
print(f"===== {f}")
for jname, job in jobs.items():
job_lines = "\n".join(line for _, line in job.lines)
if "timeout-minutes:" in job_lines or "cancelled()" in job_lines or "always()" in job_lines or "upload-artifact" in job_lines or "tar " in job_lines:
print("--- job", jname)
for n, line in job.lines:
if any(tok in line for tok in ["timeout-minutes:", "if:", "upload-artifact", "tar ", "chmod", "artifact", "logs", "coverage", "bin"]):
print(f"{n}: {line}")
PYRepository: sysown/proxysql Length of output: 299 🏁 Script executed: #!/bin/bash
set -euo pipefail
for f in .github/workflows/ci-basictests.yml .github/workflows/ci-builds.yml .github/workflows/ci-legacy-clickhouse-g1.yml .github/workflows/ci-legacy-g1.yml .github/workflows/ci-legacy-g2-genai.yml .github/workflows/ci-pgsql-socket-g1.yml .github/workflows/ci-selftests.yml .github/workflows/ci-set_parser_algorithm_3-g1.yml .github/workflows/ci-taptests-pgsql-cluster.yml; do
echo "===== $f"
grep -nE 'timeout-minutes:|upload-artifact:|tar |chmod|if:.*(always|!cancelled|failure)|coverage-report|logs' "$f" || true
doneRepository: sysown/proxysql Length of output: 11188 Run artifact preservation after timeout cancellation.
📍 Affects 9 files
🤖 Prompt for AI Agents |
||
| permissions: write-all | ||
| strategy: | ||
| fail-fast: false | ||
|
|
@@ -234,6 +236,7 @@ jobs: | |
| test/infra/control/ensure-infras.bash | ||
|
|
||
| - name: Run basic tests | ||
| timeout-minutes: 90 | ||
| run: | | ||
| cd proxysql | ||
| export INFRA_ID="ci-basictests" | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -25,6 +25,7 @@ jobs: | |
| # --------------------------------------------------------------------------- | ||
| pick-runner: | ||
| runs-on: ubuntu-latest | ||
| timeout-minutes: 120 | ||
| permissions: | ||
| actions: read # read in-progress runs/jobs (no repo admin needed) | ||
| outputs: | ||
|
|
@@ -80,6 +81,7 @@ jobs: | |
| tests: | ||
| needs: pick-runner | ||
| runs-on: ${{ fromJson(needs.pick-runner.outputs.runson) }} | ||
| timeout-minutes: 120 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== workflow files =="
git ls-files .github/workflows | grep -E '(^|/)(ci-legacy-g[2-6]|ci-mysql84-g[7-9]|ci-mysql84-gr-g[1-3])\.yml$' | sort
echo
echo "== timeout locations with file context =="
for f in $(git ls-files .github/workflows | grep -E '(^|/)(ci-legacy-g[2-6]|ci-mysql84-g[7-9]|ci-mysql84-gr-g[1-3])\.yml$' | sort); do
echo "--- $f ---"
nl -ba "$f" | sed -n '1,130p'
done
echo
echo "== relevant step conditions in these workflows =="
rg -n "timeout-minutes|fix|permission|archive|upload|logs|if:|cancelled|failure|always" .github/workflows/ci-legacy-g[2-6].yml .github/workflows/ci-mysql84-g[7-9].yml .github/workflows/ci-mysql84-gr-g[1-3].yml || trueRepository: sysown/proxysql Length of output: 701 🏁 Script executed: #!/bin/bash
set -euo pipefail
for f in .github/workflows/ci-legacy-g2.yml .github/workflows/ci-legacy-g3.yml .github/workflows/ci-legacy-g4.yml .github/workflows/ci-legacy-g5.yml .github/workflows/ci-legacy-g6.yml \
.github/workflows/ci-mysql84-g7.yml .github/workflows/ci-mysql84-g8.yml .github/workflows/ci-mysql84-g9.yml \
.github/workflows/ci-mysql84-gr-g1.yml .github/workflows/ci-mysql84-gr-g2.yml .github/workflows/ci-mysql84-gr-g3.yml; do
echo "--- $f ---"
lines="$(wc -l < "$f")"
limit=140
if [ "$lines" -gt "$limit" ]; then lines=$limit; fi
awk '{printf "%4d\t%s\n", NR, $0}' "$f" | sed -n "1,${lines}p"
done
echo "== relevant strings =="
for f in \
.github/workflows/ci-legacy-g2.yml .github/workflows/ci-legacy-g3.yml .github/workflows/ci-legacy-g4.yml .github/workflows/ci-legacy-g5.yml .github/workflows/ci-legacy-g6.yml \
.github/workflows/ci-mysql84-g7.yml .github/workflows/ci-mysql84-g8.yml .github/workflows/ci-mysql84-g9.yml \
.github/workflows/ci-mysql84-gr-g1.yml .github/workflows/ci-mysql84-gr-g2.yml .github/workflows/ci-mysql84-gr-g3.yml
do
echo "--- $f ---"
grep -nE 'timeout-minutes:|^ tests:|fix|permission|archive|upload|logs|if:|cancelled|failure|always' "$f" || true
doneRepository: sysown/proxysql Length of output: 50372 🌐 Web query:
💡 Result: In GitHub Actions, the Citations:
🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== all affected workflow contents in compact form =="
find .github/workflows \
\( -name 'ci-legacy-g[2-6].yml' -o \
-name 'ci-mysql84-g[7-9].yml' -o \
-name 'ci-mysql84-gr-g[1-3].yml' \) \
-print -print0 | sort -z | xargs -0 sh -c '
for f; do
echo "--- $f ---"
python3 - <<"PY"
import pathlib, re
p=pathlib.Path("$0")
print("lines:", p.stat().st_size, "bytes")
for i,line in enumerate(p.read_text().splitlines(),1):
if ("timeout-minutes" in line
or "upload" in line
or "archive" in line
or "fix" in line
or "log" in line
or "permission" in line
or "if:" in line
or line.startswith(" tests:")
or "name:" in line):
print(f"{i:04d}\t{line}")
PY
done
' shell
echo
echo "== targeted step-condition scan across affected workflows =="
rg -nH 'timeout-minutes:|upload-artifact|codecov|logs|permission|fix|if:\s*((failure|cancelled|always)\(\)|\${{\s*success|success\(\))' \
.github/workflows/ci-legacy-g[2-6].yml \
.github/workflows/ci-mysql84-g[7-9].yml \
.github/workflows/ci-mysql84-gr-g[1-3].yml || trueRepository: sysown/proxysql Length of output: 3650 🏁 Script executed: #!/bin/bash
set -euo pipefail
echo "== targeted step-condition scan across affected workflows =="
rg -nH 'timeout-minutes:|upload-artifact|codecov|logs|permission|fix|if:\s*((failure|cancelled|always)\(\)|\${{\s*success|success\(\))' \
.github/workflows/ci-legacy-g[2-6].yml \
.github/workflows/ci-mysql84-g[7-9].yml \
.github/workflows/ci-mysql84-gr-g[1-3].yml || true
echo
echo "== selected complete workflows: ci-legacy-g2, ci-mysql84-g7, ci-mysql84-gr-g1 =="
for f in \
.github/workflows/ci-legacy-g2.yml \
.github/workflows/ci-mysql84-g7.yml \
.github/workflows/ci-mysql84-gr-g1.yml
do
echo "--- $f ---"
awk '{printf "%4d\t%s\n", NR, $0}' "$f"
doneRepository: sysown/proxysql Length of output: 45798 Make post-test artifact handling cancellation-safe before adding job timeouts. Each affected 📍 Affects 11 files
🤖 Prompt for AI AgentsSource: MCP tools |
||
| permissions: write-all | ||
| strategy: | ||
| fail-fast: false | ||
|
|
@@ -231,6 +233,7 @@ jobs: | |
| test/infra/control/ensure-infras.bash | ||
|
|
||
| - name: Run legacy-g2 tests | ||
| timeout-minutes: 90 | ||
| run: | | ||
| cd proxysql | ||
| export INFRA_ID="ci-legacy-g2" | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.