feat: GO언어 바인딩 추가#167
Conversation
Codecov Report❌ Patch coverage is
... and 112 files with indirect coverage changes 🚀 New features to boost your workflow:
|
owjs3901
left a comment
There was a problem hiding this comment.
새로운 cicd 파일을 만드는 것을 금합니다
libs/windows-amd64는 빌드시에 만들어져야 하는 것이 아닌지 확인이 필요합니다
coverage 이슈가 있는 것 같습니다
Changepacks |
|
|
||
| - uses: actions/setup-go@v5 | ||
| with: | ||
| go-version: '1.21' |
There was a problem hiding this comment.
좋은 의견 감사합니다. 확인해보니 actions/setup-go에서 stable alias를 지원하여 최신 안정 버전을 자동으로 사용하도록 변경하겠습니다.
| go-test: | ||
| name: Go Test - ${{ matrix.platform }} | ||
| runs-on: ${{ matrix.runner }} | ||
| strategy: | ||
| fail-fast: false |
There was a problem hiding this comment.
changepacks가 action에서 어떻게 돌아가는지 확인해보실 필요가 있을 것 같습니다
There was a problem hiding this comment.
본 cicd에서는 deploy까지 포함되어야 합니다
| - name: Test | ||
| run: go test -v ./... | ||
| working-directory: packages/go |
There was a problem hiding this comment.
test 이후 배포까지 필요합니다
별도의 패키지 저장소가 있는지 확인이 필요하며 없다면 어떤식으로 배포가 진행되는지 확인이 필요합니다
There was a problem hiding this comment.
현재 Go 바인딩이 CGo(Rust 코드 재사용 위해)를 통해 Rust 정적 라이브러리(.a)를 링크하는 구조입니다. 이 경우 일반적인 Go 패키지처럼 go get만으로 사용하기가 어려워 GitHub Release Asset에 플랫폼별 .a 파일을 업로드하고 사용자가 다운로드하여 사용하는 방식이 있습니다.
아니면 Rust 로직을 순수 Go로 포팅하여(WASM 사용) CGo 의존성을 제거하고 go get을 완전히 지원하도록 수정하는게 좋을지 여쭙고 싶습니다.
There was a problem hiding this comment.
우선 로직을 분할 하는 것은 완전한 안티패턴입니다, 재구현은 안됩니다
저도 go를 조금 공부해보니 release에 태그로 업로드하는 것만으로도 패키지 매니저에 잡히는 것 같네요
모든 OS에 따른 정적라이브러리를 포함시킬지 아니면 별도 분리할지는 trend에 따라 다를 것 같긴한데, 이 부분에 대한 의견이 궁금합니다
braillify 라이브러리의 기능을 Go 생태계에서 사용할 수 있도록 지원하는 Go 바인딩을 추가합니다.
주요 구성
시점에 링크됩니다.
동작합니다.
Package 구조
GitHub Actions (go.yml)
매트릭스 빌드를 통해 Windows, Linux, macOS(ARM) 환경에서 각각:
테스트
추가 논의 필요사항
아티팩트로 분리하거나, 빌드 스크립트로 소스에서 빌드하는 방안도 고려할 수 있습니다.