Skip to content

Commit eaebeab

Browse files
committed
Merge branch 'main' into ado-net-driver
2 parents 1d86660 + fad4dbd commit eaebeab

File tree

120 files changed

+28320
-170
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

120 files changed

+28320
-170
lines changed

.github/workflows/spanner-lib-tests.yml

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
@@ -71,3 +79,90 @@ jobs:
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

.gitmodules

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "spannerlib/grpc-server/googleapis"]
2+
path = spannerlib/grpc-server/googleapis
3+
url = git@github.com:googleapis/googleapis.git

spannerlib/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ require (
1010
cloud.google.com/go/longrunning v0.6.7
1111
cloud.google.com/go/spanner v1.86.0
1212
github.com/google/go-cmp v0.7.0
13+
github.com/google/uuid v1.6.0
1314
github.com/googleapis/go-sql-spanner v1.19.0
15+
google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c
1416
google.golang.org/grpc v1.76.0
1517
google.golang.org/protobuf v1.36.10
1618
)
@@ -36,7 +38,6 @@ require (
3638
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
3739
github.com/golang/protobuf v1.5.4 // indirect
3840
github.com/google/s2a-go v0.1.9 // indirect
39-
github.com/google/uuid v1.6.0 // indirect
4041
github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect
4142
github.com/googleapis/gax-go/v2 v2.15.0 // indirect
4243
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect
@@ -62,6 +63,5 @@ require (
6263
golang.org/x/time v0.13.0 // indirect
6364
google.golang.org/api v0.252.0 // indirect
6465
google.golang.org/genproto v0.0.0-20250804133106-a7a43d27e69b // indirect
65-
google.golang.org/genproto/googleapis/api v0.0.0-20250818200422-3122310a409c // indirect
6666
google.golang.org/genproto/googleapis/rpc v0.0.0-20251007200510-49b9836ed3ff // indirect
6767
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
go build -o grpc_server server.go
2+
chmod +x grpc_server
3+
cp grpc_server ../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc/binaries/any/grpc_server
4+
cp grpc_server ../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc/binaries/osx-arm64/grpc_server
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
go build -o grpc_server server.go
2+
chmod +x grpc_server
3+
mkdir -p ../wrappers/spannerlib-java/src/main/resources/darwin-aarch64
4+
cp grpc_server ../wrappers/spannerlib-java/src/main/resources/darwin-aarch64/grpc_server
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
PATH="${PATH}:${HOME}/go/bin"
2+
ln -sf "${PWD}"/google/spannerlib googleapis/google/spannerlib
3+
cd googleapis || exit 1
4+
protoc \
5+
--go_out=../ \
6+
--go_opt=paths=source_relative \
7+
--go-grpc_out=../ \
8+
--go-grpc_opt=paths=source_relative \
9+
google/spannerlib/v1/spannerlib.proto
10+
protoc \
11+
--java_out=../../wrappers/spannerlib-java/src/main/java/ \
12+
--plugin=protoc-gen-java-grpc=/Users/loite/protoc-gen-grpc-java-1.75.0-osx-aarch_64.exe \
13+
--java-grpc_out=../../wrappers/spannerlib-java/src/main/java/ \
14+
--java-grpc_opt=paths=source_relative \
15+
google/spannerlib/v1/spannerlib.proto
16+
protoc \
17+
--csharp_out=../../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-v1/ \
18+
--plugin=protoc-gen-csharp_grpc=/Users/loite/.nuget/packages/grpc.tools/2.72.0/tools/macosx_x64/grpc_csharp_plugin \
19+
--csharp_grpc_out=../../wrappers/spannerlib-dotnet/spannerlib-dotnet-grpc-v1/ \
20+
--csharp_opt=file_extension=.g.cs \
21+
--csharp_grpc_opt=no_server \
22+
--proto_path=. \
23+
google/spannerlib/v1/spannerlib.proto
24+
cd .. || exit 1
25+
rm googleapis/google/spannerlib
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/Users/loite/GolandProjects/go-sql-spanner/spannerlib/grpc-server/google/spannerlib

0 commit comments

Comments
 (0)