From 6ece20e53b7270cf536fdbc4714fb0273c8c2c18 Mon Sep 17 00:00:00 2001 From: Pigbibi <20649888+Pigbibi@users.noreply.github.com> Date: Mon, 11 May 2026 02:44:08 +0800 Subject: [PATCH] Offload screen capture conversion to runner --- .github/workflows/capture-screen.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/capture-screen.yml b/.github/workflows/capture-screen.yml index 30f0b04..b660257 100644 --- a/.github/workflows/capture-screen.yml +++ b/.github/workflows/capture-screen.yml @@ -98,7 +98,8 @@ jobs: --scp-flag="-o TCPKeepAlive=yes" ) - remote_png="/tmp/ibkr-gateway-screen.png" + remote_xwd="/tmp/ibkr-gateway-screen.xwd" + local_xwd="$RUNNER_TEMP/ibkr-gateway-screen.xwd" local_png="$RUNNER_TEMP/ibkr-gateway-screen.png" REMOTE_COMMAND=$(cat <<'EOF' set -euo pipefail @@ -106,9 +107,9 @@ jobs: sudo docker exec -u root ib-gateway bash -lc ' set -euo pipefail export DEBIAN_FRONTEND=noninteractive - if ! command -v xdotool >/dev/null 2>&1 || ! command -v xwd >/dev/null 2>&1 || ! command -v xwdtopnm >/dev/null 2>&1 || ! command -v pnmtopng >/dev/null 2>&1; then + if ! command -v xdotool >/dev/null 2>&1 || ! command -v xwd >/dev/null 2>&1; then apt-get update - apt-get install -y --no-install-recommends xdotool x11-apps netpbm + apt-get install -y --no-install-recommends xdotool x11-apps apt-get clean rm -rf /var/lib/apt/lists/* fi @@ -149,19 +150,22 @@ jobs: sleep 3 fi xwd -root -silent -out /tmp/ibkr-gateway-screen.xwd - xwdtopnm /tmp/ibkr-gateway-screen.xwd | pnmtopng > /tmp/ibkr-gateway-screen.png - chmod 0644 /tmp/ibkr-gateway-screen.png + chmod 0644 /tmp/ibkr-gateway-screen.xwd ' - sudo docker cp ib-gateway:/tmp/ibkr-gateway-screen.png /tmp/ibkr-gateway-screen.png - sudo chmod 0644 /tmp/ibkr-gateway-screen.png - ls -lh /tmp/ibkr-gateway-screen.png + sudo docker cp ib-gateway:/tmp/ibkr-gateway-screen.xwd /tmp/ibkr-gateway-screen.xwd + sudo chmod 0644 /tmp/ibkr-gateway-screen.xwd + ls -lh /tmp/ibkr-gateway-screen.xwd EOF ) screen_action_quoted="$(printf '%q' "${SCREEN_ACTION:-capture-only}")" REMOTE_COMMAND="${REMOTE_COMMAND/__SCREEN_ACTION__/${screen_action_quoted}}" gcloud compute ssh "${REMOTE_TARGET}" "${SSH_FLAGS[@]}" --command "${REMOTE_COMMAND}" - gcloud compute scp "${REMOTE_TARGET}:${remote_png}" "${local_png}" "${SCP_FLAGS[@]}" + gcloud compute scp "${REMOTE_TARGET}:${remote_xwd}" "${local_xwd}" "${SCP_FLAGS[@]}" + sudo apt-get update + sudo apt-get install -y --no-install-recommends netpbm + xwdtopnm "${local_xwd}" | pnmtopng > "${local_png}" + ls -lh "${local_png}" echo "SCREENSHOT_PATH=${local_png}" >> "$GITHUB_ENV" - name: Upload screenshot