You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
drone-go/drone/types.go

400 lines
14 KiB
Go

// Copyright 2018 Drone.IO 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.
package drone
import "encoding/json"
type (
// User represents a user account.
User struct {
ID int64 `json:"id"`
Login string `json:"login"`
Email string `json:"email"`
Avatar string `json:"avatar_url"`
Active bool `json:"active"`
Admin bool `json:"admin"`
Machine bool `json:"machine"`
Syncing bool `json:"syncing"`
Synced int64 `json:"synced"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
LastLogin int64 `json:"last_login"`
Token string `json:"token"`
}
// UserPatch defines a user patch request.
UserPatch struct {
Active *bool `json:"active,omitempty"`
Admin *bool `json:"admin,omitempty"`
Machine *bool `json:"machine,omitempty"`
Token *string `json:"token,omitempty"`
}
// Repo represents a repository.
Repo struct {
ID int64 `json:"id"`
UID string `json:"uid"`
UserID int64 `json:"user_id"`
Namespace string `json:"namespace"`
Name string `json:"name"`
Slug string `json:"slug"`
SCM string `json:"scm"`
HTTPURL string `json:"git_http_url"`
SSHURL string `json:"git_ssh_url"`
Link string `json:"link"`
Branch string `json:"default_branch"`
Private bool `json:"private"`
Visibility string `json:"visibility"`
Active bool `json:"active"`
Config string `json:"config_path"`
Trusted bool `json:"trusted"`
Protected bool `json:"protected"`
IgnoreForks bool `json:"ignore_forks"`
IgnorePulls bool `json:"ignore_pull_requests"`
CancelPulls bool `json:"auto_cancel_pull_requests"`
CancelPush bool `json:"auto_cancel_pushes"`
CancelRunning bool `json:"auto_cancel_running"`
Throttle int64 `json:"throttle"`
Timeout int64 `json:"timeout"`
Counter int64 `json:"counter"`
Synced int64 `json:"synced"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
Version int64 `json:"version"`
Signer string `json:"signer,omitempty"`
Secret string `json:"secret,omitempty"`
Build Build `json:"build,omitempty"`
}
RepoBuildStage struct {
RepoNamespace string `json:"repo_namespace"`
RepoName string `json:"repo_name"`
RepoSlug string `json:"repo_slug"`
BuildNumber int64 `json:"build_number"`
BuildAuthor string `json:"build_author"`
BuildAuthorName string `json:"build_author_name"`
BuildAuthorEmail string `json:"build_author_email"`
BuildAuthorAvatar string `json:"build_author_avatar"`
BuildSender string `json:"build_sender"`
BuildStarted int64 `json:"build_started"`
BuildFinished int64 `json:"build_finished"`
BuildCreated int64 `json:"build_created"`
BuildUpdated int64 `json:"build_updated"`
StageName string `json:"stage_name"`
StageKind string `json:"stage_kind"`
StageType string `json:"stage_type"`
StageStatus string `json:"stage_status"`
StageMachine string `json:"stage_machine"`
StageOS string `json:"stage_os"`
StageArch string `json:"stage_arch"`
StageVariant string `json:"stage_variant"`
StageKernel string `json:"stage_kernel"`
StageLimit string `json:"stage_limit"`
StageLimitRepo string `json:"stage_limit_repo"`
StageStarted int64 `json:"stage_started"`
StageStopped int64 `json:"stage_stopped"`
}
// RepoPatch defines a repository patch request.
RepoPatch struct {
Config *string `json:"config_path,omitempty"`
Protected *bool `json:"protected,omitempty"`
Trusted *bool `json:"trusted,omitempty"`
Throttle *int64 `json:"throttle,omitempty"`
Timeout *int64 `json:"timeout,omitempty"`
Visibility *string `json:"visibility,omitempty"`
IgnoreForks *bool `json:"ignore_forks"`
IgnorePulls *bool `json:"ignore_pull_requests"`
CancelPulls *bool `json:"auto_cancel_pull_requests"`
CancelPush *bool `json:"auto_cancel_pushes"`
CancelRunning *bool `json:"auto_cancel_running"`
Counter *int64 `json:"counter,omitempty"`
}
// Build defines a build object.
Build struct {
ID int64 `json:"id"`
RepoID int64 `json:"repo_id"`
Trigger string `json:"trigger"`
Number int64 `json:"number"`
Parent int64 `json:"parent,omitempty"`
Status string `json:"status"`
Error string `json:"error,omitempty"`
Event string `json:"event"`
Action string `json:"action"`
Link string `json:"link"`
Timestamp int64 `json:"timestamp"`
Title string `json:"title,omitempty"`
Message string `json:"message"`
Before string `json:"before"`
After string `json:"after"`
Ref string `json:"ref"`
Fork string `json:"source_repo"`
Source string `json:"source"`
Target string `json:"target"`
Author string `json:"author_login"`
AuthorName string `json:"author_name"`
AuthorEmail string `json:"author_email"`
AuthorAvatar string `json:"author_avatar"`
Sender string `json:"sender"`
Params map[string]string `json:"params,omitempty"`
Cron string `json:"cron,omitempty"`
Deploy string `json:"deploy_to,omitempty"`
DeployID int64 `json:"deploy_id,omitempty"`
Debug bool `json:"debug"`
Started int64 `json:"started"`
Finished int64 `json:"finished"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
Version int64 `json:"version"`
Stages []*Stage `json:"stages,omitempty"`
}
// Stage represents a stage of build execution.
Stage struct {
ID int64 `json:"id"`
BuildID int64 `json:"build_id"`
Number int `json:"number"`
Name string `json:"name"`
Kind string `json:"kind,omitempty"`
Type string `json:"type,omitempty"`
Status string `json:"status"`
Error string `json:"error,omitempty"`
ErrIgnore bool `json:"errignore"`
ExitCode int `json:"exit_code"`
Machine string `json:"machine,omitempty"`
OS string `json:"os"`
Arch string `json:"arch"`
Variant string `json:"variant,omitempty"`
Kernel string `json:"kernel,omitempty"`
Limit int `json:"limit,omitempty"`
LimitRepo int `json:"throttle,omitempty"`
Started int64 `json:"started"`
Stopped int64 `json:"stopped"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
Version int64 `json:"version"`
OnSuccess bool `json:"on_success"`
OnFailure bool `json:"on_failure"`
DependsOn []string `json:"depends_on,omitempty"`
Labels map[string]string `json:"labels,omitempty"`
Steps []*Step `json:"steps,omitempty"`
}
// Step represents an individual step in the stage.
Step struct {
ID int64 `json:"id"`
StageID int64 `json:"step_id"`
Number int `json:"number"`
Name string `json:"name"`
Status string `json:"status"`
Error string `json:"error,omitempty"`
ErrIgnore bool `json:"errignore,omitempty"`
ExitCode int `json:"exit_code"`
Started int64 `json:"started,omitempty"`
Stopped int64 `json:"stopped,omitempty"`
Version int64 `json:"version"`
DependsOn []string `json:"depends_on,omitempty"`
Image string `json:"image,omitempty"`
Detached bool `json:"detached,omitempty"`
Schema string `json:"schema,omitempty"`
}
// Registry represents a docker registry with credentials.
// DEPRECATED
Registry struct {
Address string `json:"address"`
Username string `json:"username"`
Password string `json:"password,omitempty"`
Email string `json:"email"`
Token string `json:"token"`
Policy string `json:"policy,omitempty"`
}
// Secret represents a secret variable, such as a password or token.
Secret struct {
Namespace string `json:"namespace,omitempty"`
Name string `json:"name,omitempty"`
Data string `json:"data,omitempty"`
PullRequest bool `json:"pull_request,omitempty"`
PullRequestPush bool `json:"pull_request_push,omitempty"`
// Deprecated.
Pull bool `json:"pull,omitempty"`
Fork bool `json:"fork,omitempty"`
}
Template struct {
Name string `json:"name,omitempty"`
Data string `json:"data,omitempty"`
}
// Server represents a server node.
Server struct {
ID string `json:"id"`
Provider string `json:"provider"`
State string `json:"state"`
Name string `json:"name"`
Image string `json:"image"`
Region string `json:"region"`
Size string `json:"size"`
Address string `json:"address"`
Capacity int `json:"capacity"`
Secret string `json:"secret"`
Error string `json:"error"`
CAKey []byte `json:"ca_key"`
CACert []byte `json:"ca_cert"`
TLSKey []byte `json:"tls_key"`
TLSCert []byte `json:"tls_cert"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
Started int64 `json:"started"`
Stopped int64 `json:"stopped"`
}
// Cron represents a cron job.
Cron struct {
ID int64 `json:"id"`
RepoID int64 `json:"repo_id"`
Name string `json:"name"`
Expr string `json:"expr"`
Next int64 `json:"next"`
Prev int64 `json:"prev"`
Event string `json:"event"`
Branch string `json:"branch"`
Target string `json:"target"`
Disabled bool `json:"disabled"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
}
// CronPatch defines a cron patch request.
CronPatch struct {
Event *string `json:"event"`
Branch *string `json:"branch"`
Target *string `json:"target"`
Disabled *bool `json:"disabled"`
}
// Line represents a line of container logs.
Line struct {
Number int `json:"pos"`
Message string `json:"out"`
Timestamp int64 `json:"time"`
}
// Config represents a config file.
Config struct {
Data string `json:"data"`
Kind string `json:"kind"`
}
// Version provides system version details.
Version struct {
Source string `json:"source,omitempty"`
Version string `json:"version,omitempty"`
Commit string `json:"commit,omitempty"`
}
// System stores system information.
System struct {
Proto string `json:"proto,omitempty"`
Host string `json:"host,omitempty"`
Link string `json:"link,omitempty"`
Version string `json:"version,omitempty"`
}
// Node provides node details.
Node struct {
ID int64 `json:"id"`
UID string `json:"uid"`
Provider string `json:"provider"`
State string `json:"state"`
Name string `json:"name"`
Image string `json:"image"`
Region string `json:"region"`
Size string `json:"size"`
OS string `json:"os"`
Arch string `json:"arch"`
Kernel string `json:"kernel"`
Variant string `json:"variant"`
Address string `json:"address"`
Capacity int `json:"capacity"`
Filters []string `json:"filters"`
Labels map[string]string `json:"labels"`
Error string `json:"error"`
CAKey []byte `json:"ca_key"`
CACert []byte `json:"ca_cert"`
TLSKey []byte `json:"tls_key"`
TLSCert []byte `json:"tls_cert"`
TLSName string `json:"tls_name"`
Paused bool `json:"paused"`
Protected bool `json:"protected"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
}
// NodePatch defines a node patch request.
NodePatch struct {
UID *string `json:"uid"`
Provider *string `json:"provider"`
State *string `json:"state"`
Image *string `json:"image"`
Region *string `json:"region"`
Size *string `json:"size"`
Address *string `json:"address"`
Capacity *int `json:"capacity"`
Filters *[]string `json:"filters"`
Labels *map[string]string `json:"labels"`
Error *string `json:"error"`
CAKey *[]byte `json:"ca_key"`
CACert *[]byte `json:"ca_cert"`
TLSKey *[]byte `json:"tls_key"`
TLSCert *[]byte `json:"tls_cert"`
Paused *bool `json:"paused"`
Protected *bool `json:"protected"`
}
// Netrc contains login and initialization information used
// by an automated login process.
Netrc struct {
Machine string `json:"machine"`
Login string `json:"login"`
Password string `json:"password"`
}
// Token provides an access and refresh token.
Token struct {
Access string `json:"access"`
Refresh string `json:"refresh"`
}
// CardInput provides adaptive card schema and data.
CardInput struct {
Schema string `json:"schema"`
Data json.RawMessage `json:"data"`
}
)
// Error represents a json-encoded API error.
type Error struct {
Code int `json:"code"`
Message string `json:"message"`
}
func (e *Error) Error() string {
return e.Message
}