Skip to content

Commit 7b64888

Browse files
committed
Make CodeQL xcodebuild less flaky
1 parent 17e0ac9 commit 7b64888

1 file changed

Lines changed: 47 additions & 9 deletions

File tree

.github/workflows/codeql.yml

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,17 +37,55 @@ jobs:
3737
build-mode: manual
3838

3939
- name: Build Core-Monitor for CodeQL
40+
env:
41+
BUILD_LOG_PATH: ${{ runner.temp }}/codeql-xcodebuild.log
42+
RUNNER_DERIVED_DATA: ${{ runner.temp }}/DerivedData
4043
run: |
4144
set -euo pipefail
42-
xcodebuild \
43-
-project "Core-Monitor.xcodeproj" \
44-
-scheme "Core-Monitor" \
45-
-configuration Debug \
46-
-destination "platform=macOS" \
47-
CODE_SIGNING_ALLOWED=NO \
48-
CODE_SIGNING_REQUIRED=NO \
49-
CODE_SIGN_IDENTITY="" \
50-
build
45+
python3 - <<'PY'
46+
import os
47+
import pathlib
48+
import subprocess
49+
import sys
50+
51+
build_log = os.environ["BUILD_LOG_PATH"]
52+
derived_data = os.environ["RUNNER_DERIVED_DATA"]
53+
pathlib.Path(derived_data).mkdir(parents=True, exist_ok=True)
54+
55+
cmd = [
56+
"xcodebuild",
57+
"-project", "Core-Monitor.xcodeproj",
58+
"-scheme", "Core-Monitor",
59+
"-configuration", "Debug",
60+
"-destination", "platform=macOS",
61+
"-derivedDataPath", derived_data,
62+
"CODE_SIGNING_ALLOWED=NO",
63+
"CODE_SIGNING_REQUIRED=NO",
64+
"CODE_SIGN_IDENTITY=",
65+
"COMPILER_INDEX_STORE_ENABLE=NO",
66+
"ONLY_ACTIVE_ARCH=YES",
67+
"-quiet",
68+
"build",
69+
]
70+
71+
with open(build_log, "w") as log_file:
72+
process = subprocess.Popen(cmd, stdout=log_file, stderr=subprocess.STDOUT)
73+
try:
74+
return_code = process.wait(timeout=1200)
75+
except subprocess.TimeoutExpired:
76+
process.kill()
77+
return_code = 124
78+
79+
with open(build_log, "r", errors="replace") as log_file:
80+
lines = log_file.readlines()[-200:]
81+
82+
sys.stdout.writelines(lines)
83+
84+
if return_code == 124:
85+
print("xcodebuild timed out after 20 minutes", file=sys.stderr)
86+
87+
sys.exit(return_code)
88+
PY
5189
5290
- name: Perform CodeQL Analysis
5391
uses: github/codeql-action/analyze@v4

0 commit comments

Comments
 (0)