100
interface/proto/forest/v1/release_pipelines.proto
Normal file
100
interface/proto/forest/v1/release_pipelines.proto
Normal file
@@ -0,0 +1,100 @@
|
||||
syntax = "proto3";
|
||||
|
||||
package forest.v1;
|
||||
|
||||
import "forest/v1/releases.proto";
|
||||
|
||||
// ── Stage type enum (useful for UI dropdowns / filtering) ────────────
|
||||
|
||||
enum StageType {
|
||||
STAGE_TYPE_UNSPECIFIED = 0;
|
||||
STAGE_TYPE_DEPLOY = 1;
|
||||
STAGE_TYPE_WAIT = 2;
|
||||
}
|
||||
|
||||
// ── Per-type config messages ─────────────────────────────────────────
|
||||
|
||||
message DeployStageConfig {
|
||||
string environment = 1;
|
||||
}
|
||||
|
||||
message WaitStageConfig {
|
||||
int64 duration_seconds = 1;
|
||||
}
|
||||
|
||||
// ── A single pipeline stage ──────────────────────────────────────────
|
||||
|
||||
message PipelineStage {
|
||||
string id = 1;
|
||||
repeated string depends_on = 2;
|
||||
|
||||
oneof config {
|
||||
DeployStageConfig deploy = 10;
|
||||
WaitStageConfig wait = 11;
|
||||
}
|
||||
}
|
||||
|
||||
// ── Runtime stage status (for observing pipeline progress) ───────────
|
||||
|
||||
enum PipelineStageStatus {
|
||||
PIPELINE_STAGE_STATUS_UNSPECIFIED = 0;
|
||||
PIPELINE_STAGE_STATUS_PENDING = 1;
|
||||
PIPELINE_STAGE_STATUS_ACTIVE = 2;
|
||||
PIPELINE_STAGE_STATUS_SUCCEEDED = 3;
|
||||
PIPELINE_STAGE_STATUS_FAILED = 4;
|
||||
PIPELINE_STAGE_STATUS_CANCELLED = 5;
|
||||
}
|
||||
|
||||
// ── Pipeline resource ────────────────────────────────────────────────
|
||||
|
||||
message ReleasePipeline {
|
||||
string id = 1;
|
||||
string name = 2;
|
||||
bool enabled = 3;
|
||||
repeated PipelineStage stages = 4;
|
||||
string created_at = 5;
|
||||
string updated_at = 6;
|
||||
}
|
||||
|
||||
// ── CRUD messages ────────────────────────────────────────────────────
|
||||
|
||||
message CreateReleasePipelineRequest {
|
||||
Project project = 1;
|
||||
string name = 2;
|
||||
repeated PipelineStage stages = 3;
|
||||
}
|
||||
message CreateReleasePipelineResponse {
|
||||
ReleasePipeline pipeline = 1;
|
||||
}
|
||||
|
||||
message UpdateReleasePipelineRequest {
|
||||
Project project = 1;
|
||||
string name = 2;
|
||||
optional bool enabled = 3;
|
||||
// When set, replaces all stages. When absent, stages are unchanged.
|
||||
repeated PipelineStage stages = 4;
|
||||
bool update_stages = 5;
|
||||
}
|
||||
message UpdateReleasePipelineResponse {
|
||||
ReleasePipeline pipeline = 1;
|
||||
}
|
||||
|
||||
message DeleteReleasePipelineRequest {
|
||||
Project project = 1;
|
||||
string name = 2;
|
||||
}
|
||||
message DeleteReleasePipelineResponse {}
|
||||
|
||||
message ListReleasePipelinesRequest {
|
||||
Project project = 1;
|
||||
}
|
||||
message ListReleasePipelinesResponse {
|
||||
repeated ReleasePipeline pipelines = 1;
|
||||
}
|
||||
|
||||
service ReleasePipelineService {
|
||||
rpc CreateReleasePipeline(CreateReleasePipelineRequest) returns (CreateReleasePipelineResponse);
|
||||
rpc UpdateReleasePipeline(UpdateReleasePipelineRequest) returns (UpdateReleasePipelineResponse);
|
||||
rpc DeleteReleasePipeline(DeleteReleasePipelineRequest) returns (DeleteReleasePipelineResponse);
|
||||
rpc ListReleasePipelines(ListReleasePipelinesRequest) returns (ListReleasePipelinesResponse);
|
||||
}
|
||||
Reference in New Issue
Block a user