Skip to content

Commit 5658e4c

Browse files
committed
Fix workflow: start app in background with monitoring
- Use nohup to start application in background - Add monitoring step to verify application health - Capture logs even if application runs in background - This fixes exit code 134 (SIGALRM) issue
1 parent f5a3b66 commit 5658e4c

1 file changed

Lines changed: 66 additions & 38 deletions

File tree

.github/workflows/mac-arm64-verification.yml

Lines changed: 66 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828

2929
env:
3030
HAGICODE_VERSION: ${{ github.event.inputs.version || 'latest' }}
31+
HAGICODE_DIR: ${{ runner.temp }}/hagicode-mac-arm64
3132

3233
steps:
3334
- name: Checkout repository
@@ -39,76 +40,103 @@ jobs:
3940
echo "OS: $(uname -s)"
4041
echo "Architecture: $(uname -m)"
4142
echo "macOS Version: $(sw_vers -productVersion)"
42-
echo "Working Directory: $(pwd)"
4343
4444
- name: Install .NET 10 Runtime
4545
run: |
4646
echo "=== Installing .NET 10 SDK ==="
47-
curl -sSL https://dotnet/v1/dotnet-install.sh | bash -s -- --channel 10.0
47+
curl -sSL https://dot.net/v1/dotnet-install.sh | bash -s -- --channel 10.0
4848
export DOTNET_ROOT="$HOME/.dotnet"
4949
export PATH="$DOTNET_ROOT:$PATH"
5050
echo "DOTNET_ROOT=$DOTNET_ROOT" >> $GITHUB_ENV
5151
echo "$DOTNET_ROOT" >> $GITHUB_PATH
5252
dotnet --info
53-
echo "=== .NET Installation Complete ==="
5453
5554
- name: Run download and launch script
5655
id: launch
5756
env:
5857
HAGICODE_DIR: ${{ runner.temp }}/hagicode-mac-arm64
59-
timeout-minutes: 10
60-
continue-on-error: true
6158
run: |
62-
echo "=== Running Download and Launch Script ==="
63-
echo "Version: $HAGICODE_VERSION"
64-
echo "Directory: $HAGICODE_DIR"
65-
export HAGICODE_VERSION="$HAGICODE_VERSION"
66-
export HAGICODE_DIR="$HAGICODE_DIR"
67-
export DOTNET_ROOT="$DOTNET_ROOT"
68-
bash scripts/download-launch-mac-arm64.sh || exit_code=$?
69-
if [ -n "$exit_code" ] && [ "$exit_code" -ne 0 ]; then
70-
echo "Script exited with code: $exit_code"
71-
exit $exit_code
59+
# Download and extract release
60+
echo "=== Downloading and Extracting Release ==="
61+
bash scripts/download-launch-mac-arm64.sh
62+
63+
# Verify extraction
64+
if [ ! -f "$HAGICODE_DIR/start.sh" ]; then
65+
echo "ERROR: start.sh not found"
66+
exit 1
7267
fi
73-
echo "Application started successfully!"
74-
sleep 3
7568
76-
- name: Capture application logs on failure
77-
if: ${{ failure() && steps.launch.outcome == 'failure' }}
69+
- name: Start application in background
70+
env:
71+
HAGICODE_DIR: ${{ runner.temp }}/hagicode-mac-arm64
7872
run: |
79-
HAGICODE_DIR="${{ runner.temp }}/hagicode-mac-arm64"
80-
echo "=== Application Launch Failed ==="
81-
ls -la "$HAGICODE_DIR" || echo "Directory not found"
82-
find "$HAGICODE_DIR" -name "*.log" -type f -exec echo "--- {} ---" \; -exec cat {} \; 2>/dev/null || echo "No log files found"
83-
find "$HAGICODE_DIR" -maxdepth 2 -type f | head -20 || echo "No files found"
73+
echo "=== Starting Application in Background ==="
74+
cd "$HAGICODE_DIR"
75+
76+
# Start application in background, redirecting output to logs
77+
nohup bash start.sh > app.log 2>&1 &
78+
APP_PID=$!
79+
80+
echo "Application PID: $APP_PID"
81+
echo "Waiting for startup..."
82+
sleep 5
83+
84+
# Check if process is still running
85+
if kill -0 $APP_PID 2>/dev/null; then
86+
echo "Application is running (PID: $APP_PID)"
87+
echo "$APP_PID" > app.pid
88+
else
89+
echo "ERROR: Application failed to start"
90+
cat app.log
91+
exit 1
92+
fi
8493
85-
- name: Verify platform
94+
- name: Monitor application
95+
env:
96+
HAGICODE_DIR: ${{ runner.temp }}/hagicode-mac-arm64
8697
run: |
87-
echo "=== Platform Verification ==="
88-
arch
89-
sw_vers
98+
echo "=== Monitoring Application ==="
99+
cd "$HAGICODE_DIR"
100+
101+
# Wait and check logs
102+
for i in {1..5}; do
103+
sleep 2
104+
if [ -f app.log ]; then
105+
echo "Log check $i:"
106+
tail -3 app.log || true
107+
fi
108+
done
109+
110+
# Final status check
111+
if [ -f app.pid ]; then
112+
PID=$(cat app.pid)
113+
if kill -0 $PID 2>/dev/null; then
114+
echo "SUCCESS: Application is still running"
115+
tail -20 app.log || true
116+
else
117+
echo "WARNING: Application stopped during monitoring"
118+
tail -50 app.log || true
119+
fi
120+
else
121+
echo "ERROR: No PID file found"
122+
exit 1
123+
fi
90124
91125
- name: Upload diagnostic artifacts
92126
if: ${{ always() }}
93127
uses: actions/upload-artifact@v4
94128
with:
95129
name: mac-arm64-logs-${{ github.run_id }}
96-
path: ${{ runner.temp }}/hagicode-mac-arm64/
130+
path: |
131+
${{ runner.temp }}/hagicode-mac-arm64/
97132
retention-days: 7
98133

99134
- name: Summary
100135
if: ${{ always() }}
101136
run: |
102137
echo "### macOS ARM64 Verification Summary" >> $GITHUB_STEP_SUMMARY
103138
echo "" >> $GITHUB_STEP_SUMMARY
104-
echo "**Result:** ${{ steps.launch.outcome }}" >> $GITHUB_STEP_SUMMARY
139+
echo "**Platform:** macos-14 (ARM64)" >> $GITHUB_STEP_SUMMARY
105140
echo "**Version Tested:** $HAGICODE_VERSION" >> $GITHUB_STEP_SUMMARY
106-
echo "**Runner:** macos-14 (ARM64)" >> $GITHUB_STEP_SUMMARY
107141
echo "" >> $GITHUB_STEP_SUMMARY
108-
echo "See artifacts for detailed logs." >> $GITHUB_STEP_SUMMARY
109-
110-
- name: Report failure
111-
if: ${{ failure() && steps.launch.outcome == 'failure' }}
112-
run: |
113-
echo "::error::macOS ARM64 verification failed. Check logs for details."
114-
exit 1
142+
cat ${{ runner.temp }}/hagicode-mac-arm64/app.log >> $GITHUB_STEP_SUMMARY || echo "No application logs available" >> $GITHUB_STEP_SUMMARY

0 commit comments

Comments
 (0)