Skip to content

fix(ci): fork PR 체크를 막던 go-test checkout·arm64 러너·Windows Ruby 툴체인 - #202

Merged
owjs3901 merged 2 commits into
mainfrom
owjs3901/ci-fork-checkout-ruby-toolchain
Sep 19, 2026
Merged

owjs3901 merged 2 commits into
mainfrom
owjs3901/ci-fork-checkout-ruby-toolchain

Conversation

@owjs3901

@owjs3901 owjs3901 commented Sep 19, 2026 •

Copy link
Copy Markdown
Contributor

개요

fork PR 의 CI 가 publish.yml 때문에 막혀 있어 워크플로만 먼저 고칩니다. pull_request_target 은 base 브랜치의 워크플로 정의로 실행되므로, PR 안에서 publish.yml 을 고쳐도 그 PR 자신의 체크에는 반영되지 않습니다. 그래서 main 에 선행으로 넣습니다.

근거는 #171 의 run 35446217167 과 main push run 35445523447 입니다.

1. go-test 가 fork PR 에서 즉시 실패한다

go-test 는 actions/checkout@v6 에 ref: PR head 를 주면서 opt-in 이 빠져 있어, fork PR 5 개 플랫폼 전부가 3~6 초 만에 죽습니다.

##[error]Refusing to check out fork pull request code from a 'pull_request_target' workflow.
... set 'allow-unsafe-pr-checkout: true' on the actions/checkout step.

test / dotnet-test / jvm-test / changepacks 는 이미 이 opt-in 을 갖고 있고, go-test 만 누락된 상태였습니다. 같은 한 줄을 추가합니다. 이건 #171 과 무관하게 모든 fork PR 에 영향이 있습니다.

2. Go Test - linux-arm64 는 구조상 통과할 수 없다

main 에서도 이미 실패 중입니다 (push run 35445523447, job #105903669392). 1 번을 고쳐 checkout 이 뚫리자 fork PR 쪽에서도 같은 실패가 드러났습니다.

linux-arm64 항목만 러너 아키텍처와 target 이 어긋나 있었습니다.

  • runner: ubuntu-latest (amd64) 에서 aarch64-unknown-linux-gnu 로 크로스 빌드해 libs/linux-arm64/ 에 복사
  • go test 는 amd64 로 네이티브 실행 → cgo 가 #cgo linux,amd64 ... -L${SRCDIR}/libs/linux-amd64 를 고름
  • 그 디렉터리는 비어 있음
-L/home/runner/work/braillify/braillify/packages/go/libs/linux-amd64 -lbraillify_go
/usr/bin/ld: cannot find -lbraillify_go: No such file or directory
FAIL	github.com/dev-five-git/braillify/packages/go [build failed]

러너를 ubuntu-24.04-arm 으로 바꿔 네이티브로 빌드·테스트합니다. jvm-test 가 이미 쓰는 러너이고, 이제 go-test 의 5 개 항목 모두 러너 아키텍처 == target 입니다. 크로스가 사라졌으므로 Install cross-compilation tools (Linux ARM64) 스텝과 CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER 도 go-test 에서만 제거했습니다.

go-build(배포용) 는 그대로 둡니다. 그쪽은 .a 만 크로스 빌드하고 go test 를 돌리지 않으므로 amd64 러너 + 크로스 툴체인이 맞습니다. 두 잡의 매트릭스가 똑같아 보여서 나중에 "통일" 하고 싶어질 수 있어 주석을 남겼습니다.

3. test 잡에 Ruby 툴체인이 없어 Windows lint 가 깨진다

bun run lint 는 cargo clippy --workspace --all-targets 라서, 워크스페이스에 packages/ruby 가 들어오면 rb-sys 빌드 스크립트가 돌아갑니다. windows-latest 에는 Ruby 셋업이 없어서 러너 기본 Ruby(mingw-ucrt ABI) 헤더를 MSVC 타겟으로 bindgen 에 물리고, MinGW 전용 헤더에서 터집니다.

INFO: using bindgen with clang args: [... ".../include/ruby-3.3.0/x64-mingw-ucrt", "-D__MINGW_USE_VC2005_COMPAT" ...]
BINDGEN_EXTRA_CLANG_ARGS_x86_64-pc-windows-msvc
ruby/defines.h:43:11: fatal error: 'strings.h' file not found
panicked at rb-sys-0.9.128/build/main.rs:52:6
error: script "lint" exited with code 101

Windows 는 mswin(MSVC 빌드 Ruby), 그 외는 3.4 로 셋업합니다. pyo3/maturin 이 MSVC Python 을 쓰기 때문에 한 번의 workspace-wide cargo 호출에서 ucrt Ruby(GNU 툴체인 요구)와는 공존할 수 없습니다.

이 스텝은 #171 의 것과 바이트 단위로 동일해서, #171 이 머지될 때 충돌 없이 합쳐집니다.

영향

  • main 자체에는 아직 packages/ruby 가 없으므로 clippy 대상은 그대로이고, Ruby 셋업 스텝만 추가로 실행됩니다.
  • 머지 후 feat: Ruby 바인딩 추가 #171 은 새 run 이 필요합니다. "Re-run failed jobs" 는 기존 워크플로 버전을 그대로 재생하므로 base 의 변경을 집어오지 않습니다.
  • ruby-test 잡 자체는 packages/ruby 가 main 에 들어온 뒤에야 의미가 있으므로 이 PR 에는 넣지 않았습니다. feat: Ruby 바인딩 추가 #171 이 가져옵니다.

@codecov

codecov Bot commented Sep 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@owjs3901 owjs3901 changed the title fix(ci): fork PR 체크를 막던 go-test checkout 과 Windows Ruby 툴체인 fix(ci): fork PR 체크를 막던 go-test checkout·arm64 러너·Windows Ruby 툴체인 Sep 19, 2026
@owjs3901
owjs3901 merged commit 06dc977 into main Sep 19, 2026
25 of 27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant