bazel: add buf as protobuf formatter to //:tidy (#1511)

Signed-off-by: Paul Meyer <49727155+katexochen@users.noreply.github.com>
This commit is contained in:
Paul Meyer 2023-03-23 13:08:49 -04:00 committed by GitHub
parent 55067b12cd
commit e7fc541a57
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 190 additions and 114 deletions

View File

@ -236,6 +236,27 @@ sh_template(
template = "golangci.sh.in", template = "golangci.sh.in",
) )
alias(
name = "com_github_bufbuild_buf",
actual = select({
"@io_bazel_rules_go//go/platform:darwin_amd64": "@com_github_bufbuild_buf_darwin_amd64//:bin/buf",
"@io_bazel_rules_go//go/platform:darwin_arm64": "@com_github_bufbuild_buf_darwin_arm64//:bin/buf",
"@io_bazel_rules_go//go/platform:linux_amd64": "@com_github_bufbuild_buf_linux_amd64//:bin/buf",
"@io_bazel_rules_go//go/platform:linux_arm64": "@com_github_bufbuild_buf_linux_arm64//:bin/buf",
}),
)
sh_template(
name = "buf_fmt",
data = [
":com_github_bufbuild_buf",
],
substitutions = {
"@@BUF@@": "$(rootpath :com_github_bufbuild_buf)",
},
template = "buf.sh.in",
)
multirun( multirun(
name = "tidy", name = "tidy",
commands = [ commands = [
@ -246,6 +267,7 @@ multirun(
":gazelle_generate", ":gazelle_generate",
":buildifier_fix", ":buildifier_fix",
":terraform_fmt", ":terraform_fmt",
":buf_fmt",
], ],
jobs = 1, # execute sequentially jobs = 1, # execute sequentially
visibility = ["//visibility:public"], visibility = ["//visibility:public"],

25
bazel/ci/buf.sh.in Normal file
View File

@ -0,0 +1,25 @@
#!/usr/bin/env bash
lib=$(realpath @@BASE_LIB@@) || exit 1
buf=$(realpath @@BUF@@) || exit 1
# shellcheck source=../sh/lib.bash
if ! source "${lib}"; then
echo "Error: could not find import"
exit 1
fi
cd "${BUILD_WORKSPACE_DIRECTORY}" || exit 1
readarray -t <<< "$(find "$(pwd)" -type f -name "*.proto")"
protos=("${MAPFILE[@]}")
statuscode=0
echo "Formatting the following protobuf files with buf:"
for proto in "${protos[@]}"; do
echo " ${proto}"
${buf} format -w "${proto}" || statuscode=$?
done
exit "${statuscode}"

View File

@ -10,6 +10,7 @@ def ci_deps():
_gofumpt_deps() _gofumpt_deps()
_tfsec_deps() _tfsec_deps()
_golangci_lint_deps() _golangci_lint_deps()
_buf_deps()
def _shellcheck_deps(): def _shellcheck_deps():
http_archive( http_archive(
@ -213,3 +214,33 @@ def _golangci_lint_deps():
strip_prefix = "golangci-lint-1.51.2-darwin-arm64", strip_prefix = "golangci-lint-1.51.2-darwin-arm64",
sha256 = "36e69882205a0e42a63ad57ec3015639c11051e03f0beb9cf7949c6451408960", sha256 = "36e69882205a0e42a63ad57ec3015639c11051e03f0beb9cf7949c6451408960",
) )
def _buf_deps():
http_archive(
name = "com_github_bufbuild_buf_linux_amd64",
sha256 = "39b58126938e265a7dd60fc4716a4a43931896e62db3d69c704d7dd63d5889dd",
url = "https://github.com/bufbuild/buf/releases/download/v1.15.1/buf-Linux-x86_64.tar.gz",
strip_prefix = "buf",
build_file_content = """exports_files(["bin/buf"], visibility = ["//visibility:public"])""",
)
http_archive(
name = "com_github_bufbuild_buf_linux_aarch64",
sha256 = "6c1e7258b79273c60085df8825a52a5ee306530e7327942c91ec84545cd2d40a",
url = "https://github.com/bufbuild/buf/releases/download/v1.15.1/buf-Linux-aarch64.tar.gz",
strip_prefix = "buf",
build_file_content = """exports_files(["bin/buf"], visibility = ["//visibility:public"])""",
)
http_archive(
name = "com_github_bufbuild_buf_darwin_amd64",
sha256 = "6c1e7258b79273c60085df8825a52a5ee306530e7327942c91ec84545cd2d40a",
url = "https://github.com/bufbuild/buf/releases/download/v1.15.1/buf-Darwin-x86_64.tar.gz",
strip_prefix = "buf",
build_file_content = """exports_files(["bin/buf"], visibility = ["//visibility:public"])""",
)
http_archive(
name = "com_github_bufbuild_buf_darwin_arm64",
sha256 = "6c1e7258b79273c60085df8825a52a5ee306530e7327942c91ec84545cd2d40a",
url = "https://github.com/bufbuild/buf/releases/download/v1.15.1/buf-Darwin-arm64.tar.gz",
strip_prefix = "buf",
build_file_content = """exports_files(["bin/buf"], visibility = ["//visibility:public"])""",
)

View File

@ -1,87 +1,87 @@
syntax = "proto3"; syntax = "proto3";
option go_package = "github.com/edgelesssys/constellation/v2/debugd/service";
package debugd; package debugd;
option go_package = "github.com/edgelesssys/constellation/v2/debugd/service";
service Debugd { service Debugd {
rpc SetInfo (SetInfoRequest) returns (SetInfoResponse) {} rpc SetInfo(SetInfoRequest) returns (SetInfoResponse) {}
rpc GetInfo (GetInfoRequest) returns (GetInfoResponse) {} rpc GetInfo(GetInfoRequest) returns (GetInfoResponse) {}
rpc UploadFiles(stream FileTransferMessage) returns (UploadFilesResponse) {} rpc UploadFiles(stream FileTransferMessage) returns (UploadFilesResponse) {}
rpc DownloadFiles(DownloadFilesRequest) returns (stream FileTransferMessage) {} rpc DownloadFiles(DownloadFilesRequest) returns (stream FileTransferMessage) {}
rpc UploadSystemServiceUnits(UploadSystemdServiceUnitsRequest) returns (UploadSystemdServiceUnitsResponse) {} rpc UploadSystemServiceUnits(UploadSystemdServiceUnitsRequest) returns (UploadSystemdServiceUnitsResponse) {}
} }
message SetInfoRequest { message SetInfoRequest {
repeated Info info = 1; repeated Info info = 1;
} }
message SetInfoResponse { message SetInfoResponse {
SetInfoStatus status = 1; SetInfoStatus status = 1;
} }
enum SetInfoStatus { enum SetInfoStatus {
SET_INFO_SUCCESS = 0; SET_INFO_SUCCESS = 0;
SET_INFO_ALREADY_SET = 1; SET_INFO_ALREADY_SET = 1;
} }
message GetInfoRequest {} message GetInfoRequest {}
message GetInfoResponse { message GetInfoResponse {
repeated Info info = 1; repeated Info info = 1;
} }
message Info { message Info {
string key = 1; string key = 1;
string value = 2; string value = 2;
} }
message DownloadFilesRequest {} message DownloadFilesRequest {}
message FileTransferMessage { message FileTransferMessage {
oneof kind { oneof kind {
FileTransferHeader header = 1; // start of transfer FileTransferHeader header = 1; // start of transfer
Chunk chunk = 2; // file content as chunks Chunk chunk = 2; // file content as chunks
} }
} }
message FileTransferHeader { message FileTransferHeader {
string targetPath = 1; string targetPath = 1;
uint32 mode = 3; uint32 mode = 3;
optional string overrideServiceUnit = 4; optional string overrideServiceUnit = 4;
} }
message Chunk { message Chunk {
bytes content = 1; bytes content = 1;
bool last = 2; bool last = 2;
} }
message UploadFilesResponse { message UploadFilesResponse {
UploadFilesStatus status = 1; UploadFilesStatus status = 1;
} }
enum UploadFilesStatus { enum UploadFilesStatus {
UPLOAD_FILES_SUCCESS = 0; UPLOAD_FILES_SUCCESS = 0;
UPLOAD_FILES_UPLOAD_FAILED = 1; UPLOAD_FILES_UPLOAD_FAILED = 1;
UPLOAD_FILES_ALREADY_STARTED = 2; UPLOAD_FILES_ALREADY_STARTED = 2;
UPLOAD_FILES_ALREADY_FINISHED = 3; UPLOAD_FILES_ALREADY_FINISHED = 3;
UPLOAD_FILES_START_FAILED = 4; UPLOAD_FILES_START_FAILED = 4;
} }
message ServiceUnit { message ServiceUnit {
string name = 1; string name = 1;
string contents = 2; string contents = 2;
} }
message UploadSystemdServiceUnitsRequest { message UploadSystemdServiceUnitsRequest {
repeated ServiceUnit units = 1; repeated ServiceUnit units = 1;
} }
message UploadSystemdServiceUnitsResponse { message UploadSystemdServiceUnitsResponse {
UploadSystemdServiceUnitsStatus status = 1; UploadSystemdServiceUnitsStatus status = 1;
} }
enum UploadSystemdServiceUnitsStatus { enum UploadSystemdServiceUnitsStatus {
UPLOAD_SYSTEMD_SERVICE_UNITS_SUCCESS = 0; UPLOAD_SYSTEMD_SERVICE_UNITS_SUCCESS = 0;
UPLOAD_SYSTEMD_SERVICE_UNITS_FAILURE = 1; UPLOAD_SYSTEMD_SERVICE_UNITS_FAILURE = 1;
} }

View File

@ -5,19 +5,19 @@ package recoverproto;
option go_package = "github.com/edgelesssys/constellation/v2/disk-mapper/recoverproto"; option go_package = "github.com/edgelesssys/constellation/v2/disk-mapper/recoverproto";
service API { service API {
// Recover sends the necessary information to the recoveryserver to initiate recovery of a node. // Recover sends the necessary information to the recoveryserver to initiate recovery of a node.
rpc Recover(RecoverMessage) returns (RecoverResponse) {} rpc Recover(RecoverMessage) returns (RecoverResponse) {}
} }
message RecoverMessage { message RecoverMessage {
// bytes state_disk_key = 1; removed // bytes state_disk_key = 1; removed
// bytes measurement_secret = 2; removed // bytes measurement_secret = 2; removed
// kms_uri is the URI of the KMS the recoveryserver should use to decrypt DEKs. // kms_uri is the URI of the KMS the recoveryserver should use to decrypt DEKs.
string kms_uri = 3; string kms_uri = 3;
// storage_uri is the URI of the storage location the recoveryserver should use to fetch DEKs. // storage_uri is the URI of the storage location the recoveryserver should use to fetch DEKs.
string storage_uri = 4; string storage_uri = 4;
} }
message RecoverResponse { message RecoverResponse {
// string disk_uuid = 1; removed // string disk_uuid = 1; removed
} }

View File

@ -5,75 +5,74 @@ package join;
option go_package = "github.com/edgelesssys/constellation/v2/joinservice/joinproto"; option go_package = "github.com/edgelesssys/constellation/v2/joinservice/joinproto";
service API { service API {
// IssueJoinTicket issues a join ticket for a new node. // IssueJoinTicket issues a join ticket for a new node.
rpc IssueJoinTicket(IssueJoinTicketRequest) returns (IssueJoinTicketResponse); rpc IssueJoinTicket(IssueJoinTicketRequest) returns (IssueJoinTicketResponse);
// IssueRejoinTicket issues a join ticket for a node that has previously joined the cluster. // IssueRejoinTicket issues a join ticket for a node that has previously joined the cluster.
rpc IssueRejoinTicket(IssueRejoinTicketRequest) returns (IssueRejoinTicketResponse); rpc IssueRejoinTicket(IssueRejoinTicketRequest) returns (IssueRejoinTicketResponse);
} }
message IssueJoinTicketRequest { message IssueJoinTicketRequest {
// disk_uuid is the UUID of a node's state disk. // disk_uuid is the UUID of a node's state disk.
string disk_uuid = 1; string disk_uuid = 1;
// certificate_request is a certificate request for the node's kubelet certificate. // certificate_request is a certificate request for the node's kubelet certificate.
bytes certificate_request = 2; bytes certificate_request = 2;
// is_control_plane indicates whether the node is a control-plane node. // is_control_plane indicates whether the node is a control-plane node.
bool is_control_plane = 3; bool is_control_plane = 3;
} }
message IssueJoinTicketResponse { message IssueJoinTicketResponse {
// state_disk_key is the key used to encrypt the state disk. // state_disk_key is the key used to encrypt the state disk.
bytes state_disk_key = 1; bytes state_disk_key = 1;
// measurement_salt is a salt used to derive the node's ClusterID. // measurement_salt is a salt used to derive the node's ClusterID.
// This value is persisted on the state disk. // This value is persisted on the state disk.
bytes measurement_salt = 2; bytes measurement_salt = 2;
// measurement_secret is a secret used to derive the node's ClusterID. // measurement_secret is a secret used to derive the node's ClusterID.
// This value is NOT persisted on the state disk. // This value is NOT persisted on the state disk.
bytes measurement_secret = 3; bytes measurement_secret = 3;
// kubelet_cert is the certificate to be used by the kubelet. // kubelet_cert is the certificate to be used by the kubelet.
bytes kubelet_cert = 4; bytes kubelet_cert = 4;
// api_server_endpoint is the endpoint of Constellation's API server. // api_server_endpoint is the endpoint of Constellation's API server.
string api_server_endpoint = 5; string api_server_endpoint = 5;
// token is the Kubernetes Join Token to be used by the node to join the cluster. // token is the Kubernetes Join Token to be used by the node to join the cluster.
string token = 6; string token = 6;
// discovery_token_ca_cert_hash is a hash of the root certificate authority presented by the Kubernetes control-plane. // discovery_token_ca_cert_hash is a hash of the root certificate authority presented by the Kubernetes control-plane.
string discovery_token_ca_cert_hash = 7; string discovery_token_ca_cert_hash = 7;
// control_plane_files is a list of control-plane certificates and keys. // control_plane_files is a list of control-plane certificates and keys.
repeated control_plane_cert_or_key control_plane_files = 8; repeated control_plane_cert_or_key control_plane_files = 8;
// kubernetes_version is the Kubernetes version to install on the node. // kubernetes_version is the Kubernetes version to install on the node.
string kubernetes_version = 9; string kubernetes_version = 9;
// kubernetes_components is a list of components to install on the node. // kubernetes_components is a list of components to install on the node.
repeated KubernetesComponent kubernetes_components = 10; repeated KubernetesComponent kubernetes_components = 10;
} }
message control_plane_cert_or_key { message control_plane_cert_or_key {
// name of the certificate or key. // name of the certificate or key.
string name = 1; string name = 1;
// data of the certificate or key. // data of the certificate or key.
bytes data = 2; bytes data = 2;
} }
message IssueRejoinTicketRequest { message IssueRejoinTicketRequest {
// disk_uuid is the UUID of a node's state disk. // disk_uuid is the UUID of a node's state disk.
string disk_uuid = 1; string disk_uuid = 1;
} }
message IssueRejoinTicketResponse { message IssueRejoinTicketResponse {
// state_disk_key is the key to decrypt the state disk. // state_disk_key is the key to decrypt the state disk.
bytes state_disk_key = 1; bytes state_disk_key = 1;
// measurement_secret is a secret used to derive the node's ClusterID. // measurement_secret is a secret used to derive the node's ClusterID.
// This value is NOT persisted on the state disk. // This value is NOT persisted on the state disk.
bytes measurement_secret = 2; bytes measurement_secret = 2;
} }
// Discuss if we want to import the init proto instead of duplicating it // Discuss if we want to import the init proto instead of duplicating it
message KubernetesComponent { message KubernetesComponent {
// url to download the component from. // url to download the component from.
string url = 1; string url = 1;
// hash of the component. // hash of the component.
string hash = 2; string hash = 2;
// install_path is the path to install the component to. // install_path is the path to install the component to.
string install_path = 3; string install_path = 3;
// extract indicates whether the component is an archive and needs to be extracted. // extract indicates whether the component is an archive and needs to be extracted.
bool extract = 4; bool extract = 4;
} }

View File

@ -5,14 +5,14 @@ package kms;
option go_package = "github.com/edgelesssys/constellation/v2/keyservice/keyserviceproto"; option go_package = "github.com/edgelesssys/constellation/v2/keyservice/keyserviceproto";
service API { service API {
rpc GetDataKey(GetDataKeyRequest) returns (GetDataKeyResponse); rpc GetDataKey(GetDataKeyRequest) returns (GetDataKeyResponse);
} }
message GetDataKeyRequest { message GetDataKeyRequest {
string data_key_id = 1; string data_key_id = 1;
uint32 length = 2; uint32 length = 2;
} }
message GetDataKeyResponse { message GetDataKeyResponse {
bytes data_key = 1; bytes data_key = 1;
} }

View File

@ -5,14 +5,13 @@ package upgrade;
option go_package = "github.com/edgelesssys/constellation/v2/upgrade-agent/upgradeproto"; option go_package = "github.com/edgelesssys/constellation/v2/upgrade-agent/upgradeproto";
service Update { service Update {
rpc ExecuteUpdate(ExecuteUpdateRequest) returns (ExecuteUpdateResponse); rpc ExecuteUpdate(ExecuteUpdateRequest) returns (ExecuteUpdateResponse);
} }
message ExecuteUpdateRequest { message ExecuteUpdateRequest {
string kubeadm_url = 1; string kubeadm_url = 1;
string kubeadm_hash = 2; string kubeadm_hash = 2;
string wanted_kubernetes_version = 3; string wanted_kubernetes_version = 3;
} }
message ExecuteUpdateResponse { message ExecuteUpdateResponse {}
}

View File

@ -5,17 +5,17 @@ package verify;
option go_package = "github.com/edgelesssys/constellation/v2/verify/verifyproto"; option go_package = "github.com/edgelesssys/constellation/v2/verify/verifyproto";
service API { service API {
// GetAttestation returns an attestation for the given user data and nonce. // GetAttestation returns an attestation for the given user data and nonce.
rpc GetAttestation(GetAttestationRequest) returns (GetAttestationResponse); rpc GetAttestation(GetAttestationRequest) returns (GetAttestationResponse);
} }
message GetAttestationRequest { message GetAttestationRequest {
// bytes user_data = 1; removed // bytes user_data = 1; removed
// nonce is a random nonce to prevent replay attacks. // nonce is a random nonce to prevent replay attacks.
bytes nonce = 2; bytes nonce = 2;
} }
message GetAttestationResponse { message GetAttestationResponse {
// attestation is the attestation for the given user data and nonce. // attestation is the attestation for the given user data and nonce.
bytes attestation = 1; bytes attestation = 1;
} }