@@ -48,19 +48,27 @@ jobs:
4848 - name : Build shared library
4949 working-directory : spannerlib/shared
5050 run : go build -o spannerlib.so -buildmode=c-shared shared_lib.go
51+ - name : Build gRPC server
52+ working-directory : spannerlib/grpc-server
53+ run : |
54+ go build -o grpc_server server.go
55+ chmod +x grpc_server
5156 - name : Copy to Java wrapper
5257 working-directory : spannerlib
5358 run : |
5459 echo "$RUNNER_OS"
5560 if [ "$RUNNER_OS" == "Windows" ]; then
5661 mkdir -p wrappers/spannerlib-java/src/main/resources/win32-x86-64
5762 cp shared/spannerlib.so wrappers/spannerlib-java/src/main/resources/win32-x86-64/spanner.dll
63+ cp grpc-server/grpc_server wrappers/spannerlib-java/src/main/resources/win32-x86-64/grpc_server
5864 elif [ "$RUNNER_OS" == "macOS" ]; then
5965 mkdir -p wrappers/spannerlib-java/src/main/resources/darwin-aarch64
6066 cp shared/spannerlib.so wrappers/spannerlib-java/src/main/resources/darwin-aarch64/libspanner.dylib
67+ cp grpc-server/grpc_server wrappers/spannerlib-java/src/main/resources/darwin-aarch64/grpc_server
6168 else
6269 mkdir -p wrappers/spannerlib-java/src/main/resources/linux-x86-64
6370 cp shared/spannerlib.so wrappers/spannerlib-java/src/main/resources/linux-x86-64/libspanner.so
71+ cp grpc-server/grpc_server wrappers/spannerlib-java/src/main/resources/linux-x86-64/grpc_server
6472 fi
6573 shell : bash
6674 - name : ls spannerlib.so
7179 run : mvn -Djna.debug_load=true test
7280 working-directory : spannerlib/wrappers/spannerlib-java
7381 shell : bash
82+
83+ dotnet-wrapper :
84+ strategy :
85+ matrix :
86+ go-version : [1.25.x]
87+ os : [ubuntu-latest, macos-latest, windows-latest]
88+ runs-on : ${{ matrix.os }}
89+ steps :
90+ - name : Install dotnet
91+ uses : actions/setup-dotnet@v4
92+ with :
93+ dotnet-version : ' 9.0.x'
94+ - name : Install Go
95+ uses : actions/setup-go@v5
96+ with :
97+ go-version : ${{ matrix.go-version }}
98+ - name : Checkout code
99+ uses : actions/checkout@v4
100+ with :
101+ submodules : ' true'
102+ - name : Build shared library
103+ working-directory : spannerlib/shared
104+ run : go build -o spannerlib.so -buildmode=c-shared shared_lib.go
105+ - name : Copy to .NET wrapper
106+ working-directory : spannerlib
107+ run : |
108+ mkdir -p wrappers/spannerlib-dotnet/spannerlib-dotnet-native/libraries/any
109+ if [ "$RUNNER_OS" == "Windows" ]; then
110+ cp shared/spannerlib.so wrappers/spannerlib-dotnet/spannerlib-dotnet-native/libraries/any/spannerlib.dll
111+ else
112+ cp shared/spannerlib.so wrappers/spannerlib-dotnet/spannerlib-dotnet-native/libraries/any/spannerlib
113+ fi
114+ shell : bash
115+ - name : Build .NET native library package
116+ run : dotnet pack
117+ working-directory : spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-native
118+ shell : bash
119+ - name : Add .NET package source
120+ run : |
121+ if [ "$RUNNER_OS" == "Windows" ]; then
122+ echo ${GITHUB_WORKSPACE}"\spannerlib\wrappers\spannerlib-dotnet\spannerlib-dotnet-native\bin\Release"
123+ dotnet nuget add source ${GITHUB_WORKSPACE}"\spannerlib\wrappers\spannerlib-dotnet\spannerlib-dotnet-native\bin\Release" --name local
124+ else
125+ dotnet nuget add source "$PWD"/bin/Release --name local
126+ fi
127+ working-directory : spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-native
128+ shell : bash
129+ - name : Build gRPC server
130+ working-directory : spannerlib/grpc-server
131+ run : |
132+ go build -o grpc_server server.go
133+ chmod +x grpc_server
134+ - name : Copy gRPC server to .NET wrapper
135+ working-directory : spannerlib
136+ run : |
137+ mkdir -p wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server/binaries/any
138+ if [ "$RUNNER_OS" == "Windows" ]; then
139+ cp grpc-server/grpc_server wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server/binaries/any/grpc_server.exe
140+ else
141+ cp grpc-server/grpc_server wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server/binaries/any/grpc_server
142+ fi
143+ shell : bash
144+ - name : Build .NET gRPC server package
145+ run : dotnet pack
146+ working-directory : spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server
147+ shell : bash
148+ - name : Add .NET package source
149+ run : |
150+ if [ "$RUNNER_OS" == "Windows" ]; then
151+ dotnet nuget add source ${GITHUB_WORKSPACE}"\spannerlib\wrappers\spannerlib-dotnet\spannerlib-dotnet-grpc-server\bin\Release" --name local-grpc-server
152+ else
153+ dotnet nuget add source "$PWD"/bin/Release --name local-grpc-server
154+ fi
155+ working-directory : spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-server
156+ shell : bash
157+ - name : Restore dependencies
158+ run : dotnet restore
159+ working-directory : spannerlib/wrappers/spannerlib-dotnet
160+ shell : bash
161+ - name : Build
162+ run : dotnet build --no-restore
163+ working-directory : spannerlib/wrappers/spannerlib-dotnet
164+ shell : bash
165+ - name : .NET Unit Tests
166+ working-directory : spannerlib/wrappers/spannerlib-dotnet/spannerlib-dotnet-tests
167+ run : dotnet test --no-build --verbosity normal
168+ shell : bash
0 commit comments