@@ -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