Skip to content

Commit 93eb572

Browse files
authored
feat: add strict gRPC contracts
Add strict protobuf contracts and typed provider support for GitLab plugin modules, steps, and service methods.
1 parent 0d1ad52 commit 93eb572

12 files changed

Lines changed: 2505 additions & 103 deletions

File tree

.goreleaser.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ project_name: workflow-plugin-gitlab
55
before:
66
hooks:
77
- go mod tidy
8-
- "sed -i.bak 's/\"version\": \".*\"/\"version\": \"{{ .Version }}\"/' plugin.json && rm -f plugin.json.bak"
8+
- "sed -i.bak -e 's/\"version\": \".*\"/\"version\": \"{{ .Version }}\"/' -e 's#/releases/download/v[^/]*/#/releases/download/v{{ .Version }}/#g' plugin.json && rm -f plugin.json.bak"
99

1010
builds:
1111
- id: workflow-plugin-gitlab
@@ -29,6 +29,7 @@ archives:
2929
name_template: "{{ .ProjectName }}-{{ .Os }}-{{ .Arch }}"
3030
files:
3131
- plugin.json
32+
- plugin.contracts.json
3233

3334
checksum:
3435
name_template: "checksums.txt"

Makefile

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,19 @@
22

33
BINARY_NAME = workflow-plugin-gitlab
44
INSTALL_DIR ?= data/plugins/$(BINARY_NAME)
5+
GO_ENV = GOWORK=off GOPRIVATE=github.com/GoCodeAlone/*
56

67
build:
7-
GOPRIVATE=github.com/GoCodeAlone/* go build -o bin/$(BINARY_NAME) ./cmd/$(BINARY_NAME)
8+
$(GO_ENV) go build -o bin/$(BINARY_NAME) ./cmd/$(BINARY_NAME)
89

910
test:
10-
GOPRIVATE=github.com/GoCodeAlone/* go test ./... -v -race
11+
$(GO_ENV) go test ./... -v -race
1112

1213
install: build
13-
mkdir -p $(DESTDIR)/$(INSTALL_DIR)
14-
cp bin/$(BINARY_NAME) $(DESTDIR)/$(INSTALL_DIR)/
15-
cp plugin.json $(DESTDIR)/$(INSTALL_DIR)/
14+
mkdir -p $(DESTDIR)$(INSTALL_DIR)
15+
cp bin/$(BINARY_NAME) $(DESTDIR)$(INSTALL_DIR)/
16+
cp plugin.json $(DESTDIR)$(INSTALL_DIR)/
17+
cp plugin.contracts.json $(DESTDIR)$(INSTALL_DIR)/
1618

1719
clean:
1820
rm -rf bin/

go.mod

Lines changed: 35 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ module github.com/GoCodeAlone/workflow-plugin-gitlab
22

33
go 1.26.0
44

5-
require github.com/GoCodeAlone/workflow v0.5.2
5+
require (
6+
github.com/GoCodeAlone/workflow v0.19.0
7+
google.golang.org/protobuf v1.36.11
8+
)
69

710
require (
811
cel.dev/expr v0.25.1 // indirect
@@ -19,36 +22,36 @@ require (
1922
github.com/BurntSushi/toml v1.6.0 // indirect
2023
github.com/DataDog/datadog-go/v5 v5.8.3 // indirect
2124
github.com/GoCodeAlone/go-plugin v1.7.0 // indirect
22-
github.com/GoCodeAlone/modular v1.12.5 // indirect
25+
github.com/GoCodeAlone/modular v1.13.0 // indirect
2326
github.com/GoCodeAlone/modular/modules/auth v1.15.0 // indirect
2427
github.com/GoCodeAlone/modular/modules/eventbus/v2 v2.8.0 // indirect
2528
github.com/GoCodeAlone/yaegi v0.17.2 // indirect
26-
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.31.0 // indirect
29+
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.32.0 // indirect
2730
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.55.0 // indirect
2831
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.55.0 // indirect
2932
github.com/IBM/sarama v1.47.0 // indirect
3033
github.com/Microsoft/go-winio v0.6.2 // indirect
31-
github.com/aws/aws-sdk-go-v2 v1.41.4 // indirect
34+
github.com/aws/aws-sdk-go-v2 v1.41.5 // indirect
3235
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.7.8 // indirect
3336
github.com/aws/aws-sdk-go-v2/config v1.32.12 // indirect
3437
github.com/aws/aws-sdk-go-v2/credentials v1.19.12 // indirect
3538
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.18.20 // indirect
36-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.20 // indirect
37-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.20 // indirect
39+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.4.21 // indirect
40+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.7.21 // indirect
3841
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.6 // indirect
3942
github.com/aws/aws-sdk-go-v2/internal/v4a v1.4.21 // indirect
4043
github.com/aws/aws-sdk-go-v2/service/apigatewayv2 v1.33.8 // indirect
4144
github.com/aws/aws-sdk-go-v2/service/applicationautoscaling v1.41.13 // indirect
4245
github.com/aws/aws-sdk-go-v2/service/codebuild v1.68.12 // indirect
4346
github.com/aws/aws-sdk-go-v2/service/ec2 v1.296.0 // indirect
44-
github.com/aws/aws-sdk-go-v2/service/ecs v1.74.0 // indirect
45-
github.com/aws/aws-sdk-go-v2/service/eks v1.81.1 // indirect
47+
github.com/aws/aws-sdk-go-v2/service/ecs v1.76.0 // indirect
48+
github.com/aws/aws-sdk-go-v2/service/eks v1.81.2 // indirect
4649
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.7 // indirect
4750
github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.9.12 // indirect
4851
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.20 // indirect
4952
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.19.20 // indirect
5053
github.com/aws/aws-sdk-go-v2/service/kinesis v1.43.4 // indirect
51-
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.4 // indirect
54+
github.com/aws/aws-sdk-go-v2/service/route53 v1.62.5 // indirect
5255
github.com/aws/aws-sdk-go-v2/service/s3 v1.97.2 // indirect
5356
github.com/aws/aws-sdk-go-v2/service/signin v1.0.8 // indirect
5457
github.com/aws/aws-sdk-go-v2/service/sso v1.30.13 // indirect
@@ -64,6 +67,7 @@ require (
6467
github.com/containerd/errdefs v1.0.0 // indirect
6568
github.com/containerd/errdefs/pkg v0.3.0 // indirect
6669
github.com/containerd/log v0.1.0 // indirect
70+
github.com/danieljoos/wincred v1.2.3 // indirect
6771
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
6872
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
6973
github.com/digitalocean/godo v1.178.0 // indirect
@@ -80,9 +84,10 @@ require (
8084
github.com/fatih/color v1.19.0 // indirect
8185
github.com/felixge/httpsnoop v1.0.4 // indirect
8286
github.com/fsnotify/fsnotify v1.9.0 // indirect
83-
github.com/go-jose/go-jose/v4 v4.1.3 // indirect
87+
github.com/go-jose/go-jose/v4 v4.1.4 // indirect
8488
github.com/go-logr/logr v1.4.3 // indirect
8589
github.com/go-logr/stdr v1.2.2 // indirect
90+
github.com/godbus/dbus/v5 v5.2.2 // indirect
8691
github.com/golang-jwt/jwt/v5 v5.3.1 // indirect
8792
github.com/golobby/cast v1.3.3 // indirect
8893
github.com/google/go-querystring v1.2.0 // indirect
@@ -101,6 +106,7 @@ require (
101106
github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect
102107
github.com/hashicorp/go-sockaddr v1.0.7 // indirect
103108
github.com/hashicorp/go-uuid v1.0.3 // indirect
109+
github.com/hashicorp/golang-lru v1.0.2 // indirect
104110
github.com/hashicorp/hcl v1.0.1-vault-7 // indirect
105111
github.com/hashicorp/vault/api v1.23.0 // indirect
106112
github.com/hashicorp/yamux v0.1.2 // indirect
@@ -129,7 +135,7 @@ require (
129135
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
130136
github.com/morikuni/aec v1.1.0 // indirect
131137
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
132-
github.com/nats-io/nats.go v1.49.0 // indirect
138+
github.com/nats-io/nats.go v1.50.0 // indirect
133139
github.com/nats-io/nkeys v0.4.15 // indirect
134140
github.com/nats-io/nuid v1.0.1 // indirect
135141
github.com/ncruces/go-strftime v1.0.0 // indirect
@@ -151,35 +157,35 @@ require (
151157
github.com/xdg-go/pbkdf2 v1.0.0 // indirect
152158
github.com/xdg-go/scram v1.2.0 // indirect
153159
github.com/xdg-go/stringprep v1.0.4 // indirect
160+
github.com/zalando/go-keyring v0.2.8 // indirect
154161
go.opentelemetry.io/auto/sdk v1.2.1 // indirect
155-
go.opentelemetry.io/contrib/detectors/gcp v1.42.0 // indirect
156-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.67.0 // indirect
157-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.67.0 // indirect
158-
go.opentelemetry.io/otel v1.42.0 // indirect
159-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.42.0 // indirect
160-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.42.0 // indirect
161-
go.opentelemetry.io/otel/metric v1.42.0 // indirect
162-
go.opentelemetry.io/otel/sdk v1.42.0 // indirect
163-
go.opentelemetry.io/otel/sdk/metric v1.42.0 // indirect
164-
go.opentelemetry.io/otel/trace v1.42.0 // indirect
162+
go.opentelemetry.io/contrib/detectors/gcp v1.43.0 // indirect
163+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.68.0 // indirect
164+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.68.0 // indirect
165+
go.opentelemetry.io/otel v1.43.0 // indirect
166+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect
167+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect
168+
go.opentelemetry.io/otel/metric v1.43.0 // indirect
169+
go.opentelemetry.io/otel/sdk v1.43.0 // indirect
170+
go.opentelemetry.io/otel/sdk/metric v1.43.0 // indirect
171+
go.opentelemetry.io/otel/trace v1.43.0 // indirect
165172
go.opentelemetry.io/proto/otlp v1.10.0 // indirect
166173
go.uber.org/atomic v1.11.0 // indirect
167174
go.uber.org/multierr v1.11.0 // indirect
168175
go.uber.org/zap v1.27.1 // indirect
169176
go.yaml.in/yaml/v2 v2.4.4 // indirect
170-
golang.org/x/crypto v0.49.0 // indirect
171-
golang.org/x/net v0.52.0 // indirect
177+
golang.org/x/crypto v0.50.0 // indirect
178+
golang.org/x/net v0.53.0 // indirect
172179
golang.org/x/oauth2 v0.36.0 // indirect
173180
golang.org/x/sync v0.20.0 // indirect
174-
golang.org/x/sys v0.42.0 // indirect
175-
golang.org/x/text v0.35.0 // indirect
181+
golang.org/x/sys v0.43.0 // indirect
182+
golang.org/x/text v0.36.0 // indirect
176183
golang.org/x/time v0.15.0 // indirect
177184
google.golang.org/api v0.272.0 // indirect
178185
google.golang.org/genproto v0.0.0-20260319201613-d00831a3d3e7 // indirect
179-
google.golang.org/genproto/googleapis/api v0.0.0-20260319201613-d00831a3d3e7 // indirect
180-
google.golang.org/genproto/googleapis/rpc v0.0.0-20260319201613-d00831a3d3e7 // indirect
181-
google.golang.org/grpc v1.79.3 // indirect
182-
google.golang.org/protobuf v1.36.11 // indirect
186+
google.golang.org/genproto/googleapis/api v0.0.0-20260406210006-6f92a3bedf2d // indirect
187+
google.golang.org/genproto/googleapis/rpc v0.0.0-20260406210006-6f92a3bedf2d // indirect
188+
google.golang.org/grpc v1.80.0 // indirect
183189
gopkg.in/yaml.v3 v3.0.1 // indirect
184190
modernc.org/libc v1.70.0 // indirect
185191
modernc.org/mathutil v1.7.1 // indirect

0 commit comments

Comments
 (0)