| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521 |
- // Copyright 2016 Google Inc.
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- syntax = "proto3";
- package google.devtools.cloudbuild.v1;
- import "google/api/annotations.proto";
- import "google/devtools/source/v1/source_context.proto";
- import "google/longrunning/operations.proto";
- import "google/protobuf/duration.proto";
- import "google/protobuf/empty.proto";
- import "google/protobuf/timestamp.proto";
- option java_multiple_files = true;
- option java_package = "com.google.cloudbuild.v1";
- option objc_class_prefix = "GCB";
- // Manages container image build requests in the cloud.
- //
- // The main concept used by this API is a Build, which describes the location of
- // the source to build, how to build the source into a container image, and what
- // tag to apply to the built image when it is pushed to Google Container
- // Registry.
- //
- // A user can list previously-requested builds or get builds by their ID to
- // determine the status of the build.
- service CloudBuild {
- // Starts a build with the specified configuration.
- //
- // The long-running Operation returned by this method will include the ID of
- // the build, which can be passed to GetBuild to determine its status (e.g.,
- // success or failure).
- rpc CreateBuild(CreateBuildRequest) returns (google.longrunning.Operation) {
- option (google.api.http) = { post: "/v1/projects/{project_id}/builds" body: "build" };
- }
- // Returns information about a previously requested build.
- //
- // The Build that is returned includes its status (e.g., success or failure,
- // or in-progress), and timing information.
- rpc GetBuild(GetBuildRequest) returns (Build) {
- option (google.api.http) = { get: "/v1/projects/{project_id}/builds/{id}" };
- }
- // Lists previously requested builds.
- //
- // Previously requested builds may still be in-progress, or may have finished
- // successfully or unsuccessfully.
- rpc ListBuilds(ListBuildsRequest) returns (ListBuildsResponse) {
- option (google.api.http) = { get: "/v1/projects/{project_id}/builds" };
- }
- // Cancels a requested build in progress.
- rpc CancelBuild(CancelBuildRequest) returns (Build) {
- option (google.api.http) = { post: "/v1/projects/{project_id}/builds/{id}:cancel" body: "*" };
- }
- // Creates a new BuildTrigger.
- //
- // This API is experimental.
- rpc CreateBuildTrigger(CreateBuildTriggerRequest) returns (BuildTrigger) {
- option (google.api.http) = { post: "/v1/projects/{project_id}/triggers" body: "trigger" };
- }
- // Gets information about a BuildTrigger.
- //
- // This API is experimental.
- rpc GetBuildTrigger(GetBuildTriggerRequest) returns (BuildTrigger) {
- option (google.api.http) = { get: "/v1/projects/{project_id}/triggers/{trigger_id}" };
- }
- // Lists existing BuildTrigger.
- //
- // This API is experimental.
- rpc ListBuildTriggers(ListBuildTriggersRequest) returns (ListBuildTriggersResponse) {
- option (google.api.http) = { get: "/v1/projects/{project_id}/triggers" };
- }
- // Deletes an BuildTrigger by its project ID and trigger ID.
- //
- // This API is experimental.
- rpc DeleteBuildTrigger(DeleteBuildTriggerRequest) returns (google.protobuf.Empty) {
- option (google.api.http) = { delete: "/v1/projects/{project_id}/triggers/{trigger_id}" };
- }
- // Updates an BuildTrigger by its project ID and trigger ID.
- //
- // This API is experimental.
- rpc UpdateBuildTrigger(UpdateBuildTriggerRequest) returns (BuildTrigger) {
- option (google.api.http) = { patch: "/v1/projects/{project_id}/triggers/{trigger_id}" body: "trigger" };
- }
- }
- // StorageSource describes the location of the source in an archive file in
- // Google Cloud Storage.
- message StorageSource {
- // Google Cloud Storage bucket containing source (see
- // [Bucket Name
- // Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
- string bucket = 1;
- // Google Cloud Storage object containing source.
- //
- // This object must be a gzipped archive file (.tar.gz) containing source to
- // build.
- string object = 2;
- // Google Cloud Storage generation for the object. If the generation is
- // omitted, the latest generation will be used.
- int64 generation = 3;
- }
- // RepoSource describes the location of the source in a Google Cloud Source
- // Repository.
- message RepoSource {
- // ID of the project that owns the repo. If omitted, the project ID requesting
- // the build is assumed.
- string project_id = 1;
- // Name of the repo. If omitted, the name "default" is assumed.
- string repo_name = 2;
- // A revision within the source repository must be specified in
- // one of these ways.
- oneof revision {
- // Name of the branch to build.
- string branch_name = 3;
- // Name of the tag to build.
- string tag_name = 4;
- // Explicit commit SHA to build.
- string commit_sha = 5;
- }
- }
- // Source describes the location of the source in a supported storage
- // service.
- message Source {
- // Describes location of source.
- oneof source {
- // If provided, get the source from this location in in Google Cloud
- // Storage.
- StorageSource storage_source = 2;
- // If provided, get source from this location in a Cloud Repo.
- RepoSource repo_source = 3;
- }
- }
- // BuiltImage describes an image built by the pipeline.
- message BuiltImage {
- // Name used to push the container image to Google Container Registry, as
- // presented to `docker push`.
- string name = 1;
- // Docker Registry 2.0 digest.
- string digest = 3;
- }
- // BuildStep describes a step to perform in the build pipeline.
- message BuildStep {
- // Name of the container image to use for creating this stage in the
- // pipeline, as presented to `docker pull`.
- string name = 1;
- // Additional environment variables to set for this step's container.
- repeated string env = 2;
- // Command-line arguments to use when running this step's container.
- repeated string args = 3;
- // Working directory (relative to project source root) to use when running
- // this operation's container.
- string dir = 4;
- // Optional unique identifier for this build step, used in wait_for to
- // reference this build step as a dependency.
- string id = 5;
- // The ID(s) of the step(s) that this build step depends on.
- // This build step will not start until all the build steps in wait_for
- // have completed successfully. If wait_for is empty, this build step will
- // start when all previous build steps in the Build.Steps list have completed
- // successfully.
- repeated string wait_for = 6;
- }
- // Results describes the artifacts created by the build pipeline.
- message Results {
- // Images that were built as a part of the build.
- repeated BuiltImage images = 2;
- // List of build step digests, in order corresponding to build step indices.
- repeated string build_step_images = 3;
- }
- // A build resource in the Container Builder API.
- //
- // At a high level, a Build describes where to find source code, how to build
- // it (for example, the builder image to run on the source), and what tag to
- // apply to the built image when it is pushed to Google Container Registry.
- message Build {
- // Possible status of a build.
- enum Status {
- // Status of the build is unknown.
- STATUS_UNKNOWN = 0;
- // Build has been received and is being queued.
- QUEUING = 8;
- // Build is queued; work has not yet begun.
- QUEUED = 1;
- // Build is being executed.
- WORKING = 2;
- // Build finished successfully.
- SUCCESS = 3;
- // Build failed to complete successfully.
- FAILURE = 4;
- // Build failed due to an internal cause.
- INTERNAL_ERROR = 5;
- // Build took longer than was allowed.
- TIMEOUT = 6;
- // Build was canceled by a user.
- CANCELLED = 7;
- }
- // Unique identifier of the build.
- // @OutputOnly
- string id = 1;
- // ID of the project.
- // @OutputOnly.
- string project_id = 16;
- // Status of the build.
- // @OutputOnly
- Status status = 2;
- // Customer-readable message about the current status.
- // @OutputOnly
- string status_detail = 24;
- // Describes where to find the source files to build.
- Source source = 3;
- // Describes the operations to be performed on the workspace.
- repeated BuildStep steps = 11;
- // Results of the build.
- // @OutputOnly
- Results results = 10;
- // Time at which the build was created.
- // @OutputOnly
- google.protobuf.Timestamp create_time = 6;
- // Time at which execution of the build was started.
- // @OutputOnly
- google.protobuf.Timestamp start_time = 7;
- // Time at which execution of the build was finished.
- // @OutputOnly
- google.protobuf.Timestamp finish_time = 8;
- // Amount of time that this build should be allowed to run, to second
- // granularity. If this amount of time elapses, work on the build will cease
- // and the build status will be TIMEOUT.
- //
- // Default time is ten minutes.
- google.protobuf.Duration timeout = 12;
- // List of images expected to be built and pushed to Google Container
- // Registry. If an image is listed here and the image is not produced by
- // one of the build steps, the build will fail. Any images present when
- // the build steps are complete will be pushed to Container Registry.
- repeated string images = 13;
- // Google Cloud Storage bucket where logs should be written (see
- // [Bucket Name
- // Requirements](https://cloud.google.com/storage/docs/bucket-naming#requirements)).
- // Logs file names will be of the format `${logs_bucket}/log-${build_id}.txt`.
- string logs_bucket = 19;
- // A permanent fixed identifier for source.
- // @OutputOnly
- SourceProvenance source_provenance = 21;
- // Special options for this build.
- BuildOptions options = 23;
- // URL to logs for this build in Google Cloud Logging.
- // @OutputOnly
- string log_url = 25;
- }
- // Metadata for build operations.
- message BuildOperationMetadata {
- // The build that the operation is tracking.
- Build build = 1;
- }
- // Provenance of the source. Ways to find the original source, or verify that
- // some source was used for this build.
- message SourceProvenance {
- // A copy of the build's source.storage_source, if exists, with any
- // generations resolved.
- StorageSource resolved_storage_source = 3;
- // A copy of the build's source.repo_source, if exists, with any
- // revisions resolved.
- RepoSource resolved_repo_source = 6;
- // Hash(es) of the build source, which can be used to verify that the original
- // source integrity was maintained in the build. Note that FileHashes will
- // only be populated if BuildOptions has requested a SourceProvenanceHash.
- //
- // The keys to this map are file paths used as build source and the values
- // contain the hash values for those files.
- //
- // If the build source came in a single package such as a gzipped tarfile
- // (.tar.gz), the FileHash will be for the single path to that file.
- // @OutputOnly
- map<string, FileHashes> file_hashes = 4;
- }
- // Container message for hashes of byte content of files, used in
- // SourceProvenance messages to verify integrity of source input to the build.
- message FileHashes {
- // Collection of file hashes.
- repeated Hash file_hash = 1;
- }
- // Container message for hash values.
- message Hash {
- // Specifies the hash algorithm, if any.
- enum HashType {
- // No hash requested.
- NONE = 0;
- // Use a sha256 hash.
- SHA256 = 1;
- }
- // The type of hash that was performed.
- HashType type = 1;
- // The hash value.
- bytes value = 2;
- }
- // Request to create a new build.
- message CreateBuildRequest {
- // ID of the project.
- string project_id = 1;
- // Build resource to create.
- Build build = 2;
- }
- // Request to get a build.
- message GetBuildRequest {
- // ID of the project.
- string project_id = 1;
- // ID of the build.
- string id = 2;
- }
- // Request to list builds.
- message ListBuildsRequest {
- // ID of the project.
- string project_id = 1;
- // Number of results to return in the list.
- int32 page_size = 2;
- // Token to provide to skip to a particular spot in the list.
- string page_token = 3;
- }
- // Response including listed builds.
- message ListBuildsResponse {
- // Builds will be sorted by create_time, descending.
- repeated Build builds = 1;
- // Token to receive the next page of results.
- string next_page_token = 2;
- }
- // Request to cancel an ongoing build.
- message CancelBuildRequest {
- // ID of the project.
- string project_id = 1;
- // ID of the build.
- string id = 2;
- }
- // Configuration for an automated build in response to source repository
- // changes.
- message BuildTrigger {
- // Unique identifier of the trigger.
- //
- // @OutputOnly
- string id = 1;
- // Template describing the types of source changes to trigger a build.
- //
- // Branch and tag names in trigger templates are interpreted as regular
- // expressions. Any branch or tag change that matches that regular expression
- // will trigger a build.
- RepoSource trigger_template = 7;
- // Template describing the Build request to make when the trigger is matched.
- //
- // Fields can include the following variables which will be expanded when the
- // build is created:
- // - $PROJECT_ID: the project ID that owns the repo.
- // - $REPO_NAME: the name of the repo.
- // - $BRANCH_NAME: the branch name that triggered the build.
- // - $TAG_NAME: the tag name that triggered the build.
- // - $REVISION_ID: the commit SHA of the revision that triggered the build.
- oneof build_template {
- // Contents of the build template.
- Build build = 4;
- }
- // Time when the trigger was created.
- //
- // @OutputOnly
- google.protobuf.Timestamp create_time = 5;
- }
- // Request to create a new BuildTrigger.
- message CreateBuildTriggerRequest {
- // ID of the project for which to configure automatic builds.
- string project_id = 1;
- // BuildTrigger to create.
- BuildTrigger trigger = 2;
- }
- // Returns the BuildTrigger with the specified ID.
- message GetBuildTriggerRequest {
- // ID of the project that owns the trigger.
- string project_id = 1;
- // ID of the BuildTrigger to get.
- string trigger_id = 2;
- }
- // Request to list existing BuildTriggers.
- message ListBuildTriggersRequest {
- // ID of the project for which to list BuildTriggers.
- string project_id = 1;
- }
- // Response containing existing BuildTriggers.
- message ListBuildTriggersResponse {
- // BuildTriggers for the project, sorted by create_time descending.
- repeated BuildTrigger triggers = 1;
- }
- // Request to delete a BuildTrigger.
- message DeleteBuildTriggerRequest {
- // ID of the project that owns the trigger.
- string project_id = 1;
- // ID of the BuildTrigger to delete.
- string trigger_id = 2;
- }
- // Request to update an existing BuildTrigger.
- message UpdateBuildTriggerRequest {
- // ID of the project that owns the trigger.
- string project_id = 1;
- // ID of the BuildTrigger to update.
- string trigger_id = 2;
- // BuildTrigger to update.
- BuildTrigger trigger = 3;
- }
- // Optional arguments to enable specific features of builds.
- message BuildOptions {
- // Specifies the manner in which the build should be verified, if at all.
- enum VerifyOption {
- // Not a verifiable build. (default)
- NOT_VERIFIED = 0;
- // Verified build.
- VERIFIED = 1;
- }
- // Requested hash for SourceProvenance.
- repeated Hash.HashType source_provenance_hash = 1;
- // Options for a verifiable build with details uploaded to the Analysis API.
- VerifyOption requested_verify_option = 2;
- }
|