blob: 7863bde9f921ad4c87aa36185d06201de22bc4bd [file] [log] [blame]
// Copyright 2022 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
syntax = "proto3";
package protos;
option go_package = "golang.org/x/build/internal/relui/protos";
// ReleaseService enables the signing of release artifacts.
service ReleaseService {
// UpdateSigningStatus is a bidirectional connection where server is requesting that the client:
// - Sign a release artifact.
// - Provide an update on a previous request to sign a release artifact.
// - Consider a previous request to sign a release artifact as obsolete.
// The client initiates a connection with the server and waits for the server to issue a request
// such as:
// - An update on the status of a signing request (either running or completed).
// - An acknowledgement that a request to sign a release artifact has been accepted and initiated.
rpc UpdateSigningStatus (stream SigningStatus) returns (stream SigningRequest) {}
}
// Request an action from the signing client.
message SigningRequest {
// unique identifier for the request. This would normally reside within
// the metadata. This is primarily used to route requests between
// caller/responder. The server and client must use the same id for each
// corresponging request.
string message_id = 1;
// Request type for the signing client.
oneof request_oneof {
SignArtifactRequest sign = 2;
SignArtifactStatusRequest status = 3;
SignArtifactCancelRequest cancel = 4;
}
}
// Request to sign a release artifact.
message SignArtifactRequest {
// The type of artifact signing request.
enum BuildType {
BUILD_TYPE_UNSPECIFIED = 0;
BUILD_TYPE_MACOS = 1;
BUILD_TYPE_WINDOWS = 2;
BUILD_TYPE_GPG = 3;
}
BuildType build_type = 1;
// The GCS URI for the artifact that should be signed.
// This artifact must reside in the agreed upon private
// GCS bucket.
//
// There must be at least one entry, and
// each one points to an individual file.
// For example, "gs://golang-release-staging/relui-scratch/<...>/go123.linux-amd64.tar.gz".
repeated string gcs_uri = 2;
}
// Request for an update on an existing signing request.
message SignArtifactStatusRequest {
// unique identifier for the signing job.
string job_id = 1;
}
// Request to stop a previous signing request sooner if possible.
message SignArtifactCancelRequest {
// unique identifier for the signing job.
string job_id = 1;
}
// The status of the signing request.
message SigningStatus {
// unique identifier for the request. This would normally reside within
// the metadata. This is primarily used to route requests between
// caller/responder. The server and client must use the same id for each
// corresponging request.
string message_id = 1;
// The status type of the signing request.
oneof status_oneof {
StatusNotFound not_found = 3;
StatusStarted started = 4;
StatusRunning running = 5;
StatusFailed failed = 6;
StatusCompleted completed = 7;
}
}
// The signing status for a signing request which does not exist.
message StatusNotFound {}
// The signing status for an in progress signing request.
message StatusStarted {
// unique identifier for the signing job that started.
string job_id = 1;
}
message StatusRunning {
// Details about the signing request status.
string description = 1;
}
// The signing status for a failed signing request.
message StatusFailed {
// Details about the signing request status.
string description = 1;
}
// The signing status for a successfully completed signing request.
message StatusCompleted {
// The GCS URIs of the signed artifact(s),
// each one pointing to an individual file.
// For example, "gs://golang-release-staging/relui-scratch/<...>/go123.linux-amd64.tar.gz".
repeated string gcs_uri = 1;
}