31
31
- " bindings/c/**"
32
32
- " bindings/go/**"
33
33
- " .github/workflows/ci_bindings_go.yml"
34
+ - " .github/scripts/test_go_binding/matrix.yaml"
34
35
workflow_dispatch :
35
36
36
37
concurrency :
@@ -82,10 +83,17 @@ jobs:
82
83
path : " tools"
83
84
- name : Setup Rust toolchain
84
85
uses : ./.github/actions/setup
85
- - name : Setup Target
86
+ - name : Setup Target (Linux/macOS)
87
+ if : runner.os != 'Windows'
86
88
env :
87
89
TARGET : ${{ matrix.build.target }}
88
90
run : rustup target add $TARGET
91
+ - name : Setup Target (Windows)
92
+ if : runner.os == 'Windows'
93
+ env :
94
+ TARGET : ${{ matrix.build.target }}
95
+ run : |
96
+ rustup target add $env:TARGET
89
97
- uses : actions/setup-go@v5
90
98
with :
91
99
go-version : stable
@@ -104,16 +112,20 @@ jobs:
104
112
- name : Install dependencies (macOS)
105
113
if : ${{ matrix.build.os == 'macos-latest' }}
106
114
run : brew install zstd libffi
107
- - name : Build C Binding
115
+ - name : Install dependencies (Windows)
116
+ if : ${{ matrix.build.os == 'windows-latest' }}
117
+ uses : ilammy/msvc-dev-cmd@v1
118
+ - name : Build C Binding (Linux/macOS)
108
119
working-directory : bindings/c
120
+ if : runner.os != 'Windows'
109
121
env :
110
122
VERSION : " latest"
111
123
SERVICE : ${{ matrix.service }}
112
124
TARGET : ${{ matrix.build.target }}
113
125
CC : ${{ matrix.build.cc }}
114
126
OS : ${{ matrix.build.os }}
115
127
run : |
116
- cargo build --target $TARGET --release
128
+ cargo build --target $TARGET --release
117
129
DIR=$GITHUB_WORKSPACE/libopendal_c_${VERSION}_${SERVICE}_$TARGET
118
130
mkdir $DIR
119
131
if [ ${OS} == 'ubuntu-latest' ]; then
@@ -122,6 +134,21 @@ jobs:
122
134
SO=dylib
123
135
fi
124
136
zstd -19 ./target/$TARGET/release/libopendal_c.$SO -o $DIR/libopendal_c.$TARGET.$SO.zst
137
+ - name : Build C Binding (Windows)
138
+ working-directory : bindings/c
139
+ if : runner.os == 'Windows'
140
+ env :
141
+ VERSION : " latest"
142
+ SERVICE : ${{ matrix.service }}
143
+ TARGET : ${{ matrix.build.target }}
144
+ CC : ${{ matrix.build.cc }}
145
+ OS : ${{ matrix.build.os }}
146
+ run : |
147
+ cargo build --target $env:TARGET --release
148
+ $DIR="$env:GITHUB_WORKSPACE\libopendal_c_${env:VERSION}_${env:SERVICE}_${env:TARGET}"
149
+ Rename-Item -Path "./target/$env:TARGET/release/opendal_c.dll" -NewName "libopendal_c.dll"
150
+ New-Item -ItemType Directory -Force -Path $DIR
151
+ zstd -19 "./target/${env:TARGET}/release/libopendal_c.dll" -o "$DIR/libopendal_c.${env:TARGET}.dll.zst"
125
152
- name : Build Go Artifact
126
153
working-directory : tools/internal/generate
127
154
env :
@@ -138,13 +165,23 @@ jobs:
138
165
go work use ..
139
166
go work use ./behavior_tests
140
167
go work use $GITHUB_WORKSPACE/$(echo $SERVICE | sed 's/-/_/g')
141
- - name : Run tests
168
+ - name : Run tests (Linux/macOS)
142
169
env :
143
170
OPENDAL_TEST : ${{ matrix.service }}
144
- OPENDAL_FS_ROOT : " /tmp/opendal/ "
171
+ OPENDAL_FS_ROOT : runner.temp
145
172
working-directory : bindings/go/tests/behavior_tests
173
+ if : runner.os != 'Windows'
146
174
run : |
147
175
if [ ${{ matrix.build.os }} == 'macos-latest' ]; then
148
176
export DYLD_FALLBACK_LIBRARY_PATH=$DYLD_FALLBACK_LIBRARY_PATH:/opt/homebrew/opt/libffi/lib
149
177
fi
150
178
CGO_ENABLE=0 go test -v -run TestBehavior
179
+ - name : Run tests (Windows)
180
+ env :
181
+ OPENDAL_TEST : ${{ matrix.service }}
182
+ OPENDAL_FS_ROOT : runner.temp
183
+ working-directory : bindings/go/tests/behavior_tests
184
+ if : runner.os == 'Windows'
185
+ run : |
186
+ $env:CGO_ENABLE = "0"
187
+ go test -v -run TestBehavior
0 commit comments