Skip to content

Commit 33a74fc

Browse files
authored
generate go code from protos (#392)
* generate go code from protos * bazel * check gencode without git * dont get workspace status when checking gen go * SOURCE_VERSION is a file not an env-var
1 parent f39969c commit 33a74fc

Some content is hidden

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

41 files changed

+15973
-398
lines changed

Makefile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,13 @@ build-arm:
2828
.PHONY: docker-release-arm
2929
docker-release-arm:
3030
cd ci && docker build -f Dockerfile-arm -t $(REGISTRY)/envoy-gloo-arm:$(VERSION) . && docker push $(REGISTRY)/envoy-gloo-arm:$(VERSION)
31+
32+
gengo:
33+
./ci/gen_go.sh
34+
cd go; go mod tidy
35+
cd go; go build ./...
36+
37+
check-gencode:
38+
touch SOURCE_VERSION
39+
CHECK=1 ./ci/gen_go.sh
40+
rm SOURCE_VERSION

api/envoy/config/filter/http/aws_lambda/v2/aws_lambda.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package envoy.config.filter.http.aws_lambda.v2;
55
option java_package = "io.envoyproxy.envoy.config.filter.http.aws_lambda.v2";
66
option java_outer_classname = "AwsLambdaProto";
77
option java_multiple_files = true;
8+
option go_package = "github.com/solo-io/envoy-gloo/go/config/filter/http/aws_lambda/v2;v2";
89
import "google/protobuf/wrappers.proto";
910
import "google/protobuf/duration.proto";
1011
import "validate/validate.proto";

api/envoy/config/filter/http/nats/streaming/v2/nats_streaming.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ package envoy.config.filter.http.nats.streaming.v2;
55
option java_package = "io.envoyproxy.envoy.config.filter.http.nats.streaming.v2";
66
option java_outer_classname = "NatsStreamingProto";
77
option java_multiple_files = true;
8+
option go_package = "github.com/solo-io/envoy-gloo/go/config/filter/http/nats/streaming/v2;v2";
9+
810
import "google/protobuf/duration.proto";
911
import "validate/validate.proto";
1012

api/envoy/config/filter/http/nats/streaming/v2/payload.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ package pb;
44
option java_package = "io.envoyproxy.pb";
55
option java_outer_classname = "PayloadProto";
66
option java_multiple_files = true;
7+
option go_package = "github.com/solo-io/envoy-gloo/go/config/filter/http/nats/streaming/v2;v2";
8+
79
message Payload {
810
map<string, string> headers = 1;
911
bytes body = 2;

api/envoy/config/filter/http/transformation/v2/transformation_filter.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ package envoy.api.v2.filter.http;
55
option java_package = "io.envoyproxy.envoy.api.v2.filter.http";
66
option java_outer_classname = "TransformationFilterProto";
77
option java_multiple_files = true;
8-
option go_package = "transformation";
8+
option go_package = "github.com/solo-io/envoy-gloo/go/config/filter/http/transformation/v2;v2";
99

1010
import "google/protobuf/empty.proto";
1111
import "google/protobuf/wrappers.proto";

api/envoy/config/filter/http/upstream_wait/v2/upstream_wait_filter.proto

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,6 @@ package envoy.config.filter.http.upstream_wait.v2;
55
option java_package = "io.envoyproxy.envoy.config.filter.http.upstream_wait.v2";
66
option java_outer_classname = "UpstreamWaitFilterProto";
77
option java_multiple_files = true;
8-
option go_package = "upstream_wait";
8+
option go_package = "github.com/solo-io/envoy-gloo/go/config/filter/http/upstream_wait/v2;v2";
99

1010
message UpstreamWaitFilterConfig {}

api/envoy/config/filter/network/consul_connect/v2/BUILD

Lines changed: 0 additions & 14 deletions
This file was deleted.

api/envoy/config/filter/network/consul_connect/v2/authorize.proto

Lines changed: 0 additions & 23 deletions
This file was deleted.

api/envoy/config/filter/network/consul_connect/v2/consul_connect.proto

Lines changed: 0 additions & 34 deletions
This file was deleted.

api/envoy/type/streaming/protocol.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
syntax = "proto3";
22
package pb;
33

4+
option go_package = "github.com/solo-io/envoy-gloo/go/type/streaming;streaming";
5+
46
// import "github.com/gogo/protobuf/gogoproto/gogo.proto";
57

68
// option (gogoproto.marshaler_all) = true;

ci/cloudbuild.yaml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
11
steps:
2+
- name: 'envoyproxy/envoy-build-ubuntu:f94a38f62220a2b017878b790b6ea98a0f6c5f9c'
3+
id: 'gengo'
4+
args: ['make', 'check-gencode']
5+
volumes:
6+
- name: 'vol-build'
7+
path: '/build'
8+
env:
9+
- 'COMMIT_SHA=$COMMIT_SHA'
10+
- 'BAZEL_REMOTE_CACHE=https://storage.googleapis.com/envoy-build-cache-solo-io'
11+
- 'BUILD_TYPE=$_BUILD_TYPE'
12+
secretEnv:
13+
- 'GCP_SERVICE_ACCOUNT_KEY'
14+
215
- name: 'envoyproxy/envoy-build-ubuntu:f94a38f62220a2b017878b790b6ea98a0f6c5f9c'
316
id: 'do_ci'
417
args: ['ci/do_ci.sh', 'release', '//test/extensions/...', '//test/common/...', '//test/integration/...']

ci/gen_go.sh

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
#!/bin/bash
2+
set -e
3+
set -x
4+
5+
# copied from bazel_envoy_api_go_build in envoy's do_ci.sh
6+
7+
# TODO: if we ever have protos using other protos from our repos, we'll need to fix this to not be envoyproxy
8+
GO_IMPORT_BASE="github.com/envoyproxy/go-control-plane/api/envoy"
9+
GO_TARGETS=(//api/envoy/...)
10+
read -r -a GO_PROTOS <<< "$(bazel query "${BAZEL_GLOBAL_OPTIONS[@]}" "kind('go_proto_library', ${GO_TARGETS[*]})" | tr '\n' ' ')"
11+
bazel build "${BAZEL_BUILD_OPTIONS[@]}" \
12+
--experimental_proto_descriptor_sets_include_source_info \
13+
--remote_download_outputs=all \
14+
"${GO_PROTOS[@]}"
15+
rm -rf build_go
16+
mkdir -p build_go
17+
echo "Copying go protos -> build_go"
18+
BAZEL_BIN="$(bazel info "${BAZEL_BUILD_OPTIONS[@]}" bazel-bin)"
19+
for GO_PROTO in "${GO_PROTOS[@]}"; do
20+
# strip @envoy_api//
21+
RULE_DIR="$(echo "${GO_PROTO:12}" | cut -d: -f1)"
22+
PROTO="$(echo "${GO_PROTO:12}" | cut -d: -f2)"
23+
INPUT_DIR="${BAZEL_BIN}/api/envoy/${RULE_DIR}/${PROTO}_/${GO_IMPORT_BASE}/${RULE_DIR}"
24+
OUTPUT_DIR="build_go/${RULE_DIR}"
25+
mkdir -p "$OUTPUT_DIR"
26+
if [[ ! -e "$INPUT_DIR" ]]; then
27+
echo "Unable to find input ${INPUT_DIR}" >&2
28+
exit 1
29+
fi
30+
# echo "Copying go files ${INPUT_DIR} -> ${OUTPUT_DIR}"
31+
while read -r GO_FILE; do
32+
if [[ "$GO_FILE" = *.validate.go ]]; then
33+
sed -i '1s;^;//go:build !disable_pgv\n;' "$GO_FILE"
34+
fi
35+
36+
# if check is not empty, then we will check diff; otherwise we will just copy
37+
if [ -n "$CHECK" ]; then
38+
diff "$GO_FILE" "go/${RULE_DIR}/$(basename "$GO_FILE")"
39+
else
40+
cp -a "$GO_FILE" "$OUTPUT_DIR"
41+
fi
42+
done <<< "$(find "$INPUT_DIR" -name "*.go")"
43+
done
44+
45+
# remove all folders from the `go` folder
46+
if [ -z "$CHECK" ]; then
47+
rm -rf ./go/config
48+
rm -rf ./go/type
49+
cp -r build_go/* ./go
50+
fi
51+
52+
rm -rf build_go

e2e/extensions/filters/network/consul_connect/BUILD

Lines changed: 0 additions & 30 deletions
This file was deleted.

e2e/extensions/filters/network/consul_connect/__init__.py

Whitespace-only changes.

e2e/extensions/filters/network/consul_connect/authorize_endpoint.py

Lines changed: 0 additions & 47 deletions
This file was deleted.

0 commit comments

Comments
 (0)