Documentation
¶
Index ¶
- Constants
- Variables
- type AcquirableJob
- type AcquirableJobList
- type ActionsServiceAdminInfoRequest
- type ActionsServiceAdminInfoResponse
- func (a ActionsServiceAdminInfoResponse) ExiresAt() (time.Time, error)
- func (a ActionsServiceAdminInfoResponse) ExpiresIn(t time.Duration) bool
- func (a ActionsServiceAdminInfoResponse) GetURL() (*url.URL, error)
- func (a ActionsServiceAdminInfoResponse) IsExpired() bool
- func (a ActionsServiceAdminInfoResponse) TimeRemaining() (time.Duration, error)
- type AgentCapabilities
- type BootstrapInstance
- type CertificateBundle
- type ControllerInfo
- type CreateEnterpriseParams
- type CreateFileObjectParams
- type CreateGARMToolParams
- type CreateGiteaCredentialsParams
- type CreateGiteaEndpointParams
- type CreateGithubCredentialsParams
- type CreateGithubEndpointParams
- type CreateInstanceParams
- type CreateOrgParams
- type CreatePoolParams
- type CreateRepoParams
- type CreateScaleSetParams
- type CreateTemplateParams
- type CreationDateGetter
- type Credentials
- type EndpointType
- type Enterprise
- type EnterpriseFilter
- type Enterprises
- type EntityEvent
- type EntityGetter
- type Event
- type EventLevel
- type EventType
- type FileObject
- type FileObjectPaginatedResponse
- type ForgeAuthType
- type ForgeCredentials
- type ForgeCredentialsGetter
- type ForgeEndpoint
- type ForgeEndpoints
- type ForgeEntity
- func (g ForgeEntity) ForgeURL() string
- func (g ForgeEntity) GetCreatedAt() time.Time
- func (g ForgeEntity) GetForgeType() (EndpointType, error)
- func (g ForgeEntity) GetIDAsUUID() (uuid.UUID, error)
- func (g ForgeEntity) GetPoolBalancerType() PoolBalancerType
- func (g ForgeEntity) LabelScope() string
- func (g ForgeEntity) String() string
- type ForgeEntityType
- type GARMAgentTool
- type GARMAgentToolsPaginatedResponse
- type GARMToolsManager
- type GithubApp
- type GithubPAT
- type GithubRateLimit
- type HookInfo
- type IDGetter
- type InstallWebhookParams
- type Instance
- type InstanceMetadata
- type InstanceRequest
- type InstanceUpdateMessage
- type Instances
- type JWTResponse
- type Job
- type JobStatus
- type Jobs
- type Label
- type MetadataServiceAccessDetails
- type NewUserParams
- type Organization
- type OrganizationFilter
- type Organizations
- type PaginatedResponse
- type PasswordLoginParams
- type Pool
- func (p Pool) BelongsTo(entity ForgeEntity) bool
- func (p Pool) GetCreatedAt() time.Time
- func (p Pool) GetEntity() (ForgeEntity, error)
- func (p Pool) GetID() string
- func (p *Pool) HasRequiredLabels(set []string) bool
- func (p Pool) MaxRunnersAsInt() int
- func (p Pool) MinIdleRunnersAsInt() int
- func (p *Pool) PoolType() ForgeEntityType
- func (p *Pool) RunnerTimeout() uint
- type PoolBalancerType
- type PoolManagerStatus
- type Pools
- type Provider
- type ProviderType
- type Providers
- type Repositories
- type Repository
- func (r Repository) CreationDateGetter() time.Time
- func (r Repository) GetBalancerType() PoolBalancerType
- func (r Repository) GetCredentialsName() string
- func (r Repository) GetEntity() (ForgeEntity, error)
- func (r Repository) GetID() string
- func (r Repository) GetName() string
- func (r Repository) String() string
- type RepositoryFilter
- type RestoreTemplateRequest
- type RunnerGroup
- type RunnerGroupList
- type RunnerInfo
- type RunnerPrefix
- type RunnerReference
- type RunnerReferenceList
- type RunnerScaleSet
- type RunnerScaleSetJitRunnerConfig
- type RunnerScaleSetMessage
- type RunnerScaleSetSession
- type RunnerScaleSetStatistic
- type RunnerScaleSetsResponse
- type RunnerSetting
- type RunnerStatus
- type ScaleSet
- type ScaleSetJobMessage
- type ScaleSetMessageType
- type ScaleSetState
- type ScaleSets
- type StatusMessage
- type Tag
- type Template
- type Templates
- type UpdateControllerParams
- type UpdateEntityParams
- type UpdateFileObjectParams
- type UpdateGiteaCredentialsParams
- type UpdateGiteaEndpointParams
- type UpdateGithubCredentialsParams
- type UpdateGithubEndpointParams
- type UpdateInstanceParams
- type UpdatePoolParams
- type UpdateScaleSetParams
- type UpdateSystemInfoParams
- type UpdateTemplateParams
- type UpdateUserParams
- type User
- type UserDataOptions
- type WebhookEndpointType
- type WorkflowJob
Constants ¶
const ( MetricsLabelEnterpriseScope = "Enterprise" MetricsLabelRepositoryScope = "Repository" MetricsLabelOrganizationScope = "Organization" )
const ( MessageTypeJobAssigned = "JobAssigned" MessageTypeJobCompleted = "JobCompleted" MessageTypeJobStarted = "JobStarted" MessageTypeJobAvailable = "JobAvailable" )
const ( // ToolSourceLocal indicates the tool is stored in the internal object store. ToolSourceLocal = "local" // ToolSourceUpstream indicates the tool is only available from the upstream // cached release and has not been downloaded locally. ToolSourceUpstream = "upstream" )
const (
DefaultRunnerPrefix string = "garm"
)
const (
// SystemUser is a virtual user that identifies the system itself.
SystemUser = "system"
)
Variables ¶
var InstanceStatusTransitions = map[commonParams.InstanceStatus][]commonParams.InstanceStatus{ commonParams.InstanceRunning: { commonParams.InstancePendingDelete, commonParams.InstancePendingForceDelete, commonParams.InstanceStopped, commonParams.InstanceStatusUnknown, }, commonParams.InstanceStopped: { commonParams.InstancePendingDelete, commonParams.InstancePendingForceDelete, commonParams.InstanceRunning, commonParams.InstanceStatusUnknown, }, commonParams.InstanceError: { commonParams.InstancePendingDelete, commonParams.InstancePendingForceDelete, commonParams.InstanceStatusUnknown, commonParams.InstanceDeleting, }, commonParams.InstancePendingDelete: { commonParams.InstanceDeleting, commonParams.InstancePendingForceDelete, }, commonParams.InstancePendingForceDelete: { commonParams.InstanceDeleting, }, commonParams.InstanceDeleting: { commonParams.InstanceError, commonParams.InstanceDeleted, }, commonParams.InstanceDeleted: {}, commonParams.InstancePendingCreate: { commonParams.InstancePendingDelete, commonParams.InstanceCreating, commonParams.InstancePendingForceDelete, }, commonParams.InstanceCreating: { commonParams.InstanceError, commonParams.InstanceRunning, }, commonParams.InstanceStatusUnknown: { commonParams.InstanceRunning, commonParams.InstanceStopped, commonParams.InstanceError, commonParams.InstancePendingDelete, commonParams.InstancePendingForceDelete, commonParams.InstanceDeleting, commonParams.InstanceDeleted, commonParams.InstancePendingCreate, commonParams.InstanceCreating, }, }
var RunnerStatusTransitions = map[RunnerStatus][]RunnerStatus{ RunnerPending: { RunnerFailed, RunnerInstalling, RunnerTerminated, RunnerPending, }, RunnerInstalling: { RunnerFailed, RunnerIdle, RunnerTerminated, RunnerInstalling, }, RunnerIdle: { RunnerOffline, RunnerActive, RunnerTerminated, RunnerIdle, }, RunnerActive: { RunnerTerminated, RunnerActive, }, RunnerFailed: { RunnerTerminated, RunnerFailed, }, RunnerOffline: { RunnerIdle, RunnerActive, RunnerTerminated, RunnerOffline, }, RunnerTerminated: { RunnerTerminated, }, }
Functions ¶
This section is empty.
Types ¶
type AcquirableJob ¶
type AcquirableJob struct {
AcquireJobURL string `json:"acquireJobUrl"`
MessageType string `json:"messageType"`
RunnerRequestID int64 `json:"run0ne00rRequestId"`
RepositoryName string `json:"repositoryName"`
OwnerName string `json:"ownerName"`
JobWorkflowRef string `json:"jobWorkflowRef"`
EventName string `json:"eventName"`
RequestLabels []string `json:"requestLabels"`
}
type AcquirableJobList ¶
type AcquirableJobList struct {
Count int `json:"count"`
Jobs []AcquirableJob `json:"value"`
}
type ActionsServiceAdminInfoResponse ¶
type ActionsServiceAdminInfoResponse struct {
URL string `json:"url,omitempty"`
Token string `json:"token,omitempty"`
}
func (ActionsServiceAdminInfoResponse) ExiresAt ¶
func (a ActionsServiceAdminInfoResponse) ExiresAt() (time.Time, error)
func (ActionsServiceAdminInfoResponse) ExpiresIn ¶
func (a ActionsServiceAdminInfoResponse) ExpiresIn(t time.Duration) bool
func (ActionsServiceAdminInfoResponse) GetURL ¶
func (a ActionsServiceAdminInfoResponse) GetURL() (*url.URL, error)
func (ActionsServiceAdminInfoResponse) IsExpired ¶
func (a ActionsServiceAdminInfoResponse) IsExpired() bool
func (ActionsServiceAdminInfoResponse) TimeRemaining ¶
func (a ActionsServiceAdminInfoResponse) TimeRemaining() (time.Duration, error)
type AgentCapabilities ¶
type AgentCapabilities struct {
Shell bool `json:"has_shell"`
}
swagger:model AgentCapabilities
type BootstrapInstance ¶
type BootstrapInstance struct {
Name string `json:"name,omitempty"`
Tools []*github.RunnerApplicationDownload `json:"tools,omitempty"`
// RepoURL is the URL the github runner agent needs to configure itself.
RepoURL string `json:"repo_url,omitempty"`
// CallbackUrl is the URL where the instance can send a post, signaling
// progress or status.
CallbackURL string `json:"callback-url,omitempty"`
// MetadataURL is the URL where instances can fetch information needed to set themselves up.
MetadataURL string `json:"metadata-url,omitempty"`
// InstanceToken is the token that needs to be set by the instance in the headers
// in order to send updated back to the garm via CallbackURL.
InstanceToken string `json:"instance-token,omitempty"`
// SSHKeys are the ssh public keys we may want to inject inside the runners, if the
// provider supports it.
SSHKeys []string `json:"ssh-keys,omitempty"`
// ExtraSpecs is an opaque raw json that gets sent to the provider
// as part of the bootstrap params for instances. It can contain
// any kind of data needed by providers. The contents of this field means
// nothing to garm itself. We don't act on the information in this field at
// all. We only validate that it's a proper json.
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
// GitHubRunnerGroup is the github runner group in which the newly installed runner
// should be added to. The runner group must be created by someone with access to the
// enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
// CACertBundle is a CA certificate bundle which will be sent to instances and which
// will tipically be installed as a system wide trusted root CA. by either cloud-init
// or whatever mechanism the provider will use to set up the runner.
CACertBundle []byte `json:"ca-cert-bundle,omitempty"`
// OSArch is the target OS CPU architecture of the runner.
OSArch commonParams.OSArch `json:"arch,omitempty"`
// OSType is the target OS platform of the runner (windows, linux).
OSType commonParams.OSType `json:"os_type,omitempty"`
// Flavor is the platform specific abstraction that defines what resources will be allocated
// to the runner (CPU, RAM, disk space, etc). This field is meaningful to the provider which
// handles the actual creation.
Flavor string `json:"flavor,omitempty"`
// Image is the platform specific identifier of the operating system template that will be used
// to spin up a new machine.
Image string `json:"image,omitempty"`
// Labels are a list of github runner labels that will be added to the runner.
Labels []string `json:"labels,omitempty"`
// PoolID is the ID of the garm pool to which this runner belongs.
PoolID string `json:"pool_id,omitempty"`
// UserDataOptions are the options for the user data generation.
UserDataOptions UserDataOptions `json:"user_data_options,omitempty"`
}
type CertificateBundle ¶ added in v0.1.4
type ControllerInfo ¶
type ControllerInfo struct {
// ControllerID is the unique ID of this controller. This ID gets generated
// automatically on controller init.
ControllerID uuid.UUID `json:"controller_id,omitempty"`
// Hostname is the hostname of the machine that runs this controller. In the
// future, this field will be migrated to a separate table that will keep track
// of each the controller nodes that are part of a cluster. This will happen when
// we implement controller scale-out capability.
Hostname string `json:"hostname,omitempty"`
// MetadataURL is the public metadata URL of the GARM instance. This URL is used
// by instances to fetch information they need to set themselves up. The URL itself
// may be made available to runners via a reverse proxy or a load balancer. That
// means that the user is responsible for telling GARM what the public URL is, by
// setting this field.
MetadataURL string `json:"metadata_url,omitempty"`
// CallbackURL is the URL where instances can send updates back to the controller.
// This URL is used by instances to send status updates back to the controller. The
// URL itself may be made available to instances via a reverse proxy or a load balancer.
// That means that the user is responsible for telling GARM what the public URL is, by
// setting this field.
CallbackURL string `json:"callback_url,omitempty"`
// WebhookURL is the base URL where the controller will receive webhooks from github.
// When webhook management is used, this URL is used as a base to which the controller
// UUID is appended and which will receive the webhooks.
// The URL itself may be made available to instances via a reverse proxy or a load balancer.
// That means that the user is responsible for telling GARM what the public URL is, by
// setting this field.
WebhookURL string `json:"webhook_url,omitempty"`
// ControllerWebhookURL is the controller specific URL where webhooks will be received.
// This field holds the WebhookURL defined above to which we append the ControllerID.
// Functionally it is the same as WebhookURL, but it allows us to safely manage webhooks
// from GARM without accidentally removing webhooks from other services or GARM controllers.
ControllerWebhookURL string `json:"controller_webhook_url,omitempty"`
// AgentURL is the URL where the GARM agent will connect. If set behind a reverse proxy, this
// URL must be configured to allow websocket connections.
AgentURL string `json:"agent_url,omitempty"`
// GARMAgentReleasesURL is the URL from where GARM can fetch garm-agent binaries. This URL must
// have an API response compatible with the github releases API.
// The default value for this field is: https://api.github.com/repos/cloudbase/garm-agent/releases
GARMAgentReleasesURL string `json:"garm_agent_releases_url"`
// SyncGARMAgentTools enables or disables automatic sync of garm-agent tools.
SyncGARMAgentTools bool `json:"enable_agent_tools_sync"`
// MinimumJobAgeBackoff is the minimum time in seconds that a job must be in queued state
// before GARM will attempt to allocate a runner for it. When set to a non zero value,
// GARM will ignore the job until the job's age is greater than this value. When using
// the min_idle_runners feature of a pool, this gives enough time for potential idle
// runners to pick up the job before GARM attempts to allocate a new runner, thus avoiding
// the need to potentially scale down runners later.
MinimumJobAgeBackoff uint `json:"minimum_job_age_backoff,omitempty"`
// Version is the version of the GARM controller.
Version string `json:"version,omitempty"`
// CACertBundle holds a certificate bundle meant to validate the certificate
// used by GARM itself. This can be just the root certificate that can validate
// the GARM TLS certificate, a chain or multiple root CAs.
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
// CachedGARMAgentReleaseFetchedAt is the timestamp when the release data was last fetched from GARMAgentReleasesURL
CachedGARMAgentReleaseFetchedAt *time.Time `json:"cached_garm_agent_release_fetched_at,omitempty"`
// CachedGARMAgentRelease stores the cached JSON response from GARMAgentReleasesURL.
// This field is not serialized to JSON (internal use only).
CachedGARMAgentRelease []byte `json:"-"`
// CachedGARMAgentTools stores the parsed tools from CachedGARMAgentRelease, indexed by "os_type/os_arch".
// This field is not serialized to JSON (internal use only).
CachedGARMAgentTools map[string]GARMAgentTool `json:"-"`
}
swagger:model ControllerInfo
func (*ControllerInfo) GetCachedAgentTool ¶
func (c *ControllerInfo) GetCachedAgentTool(osType, osArch string) *GARMAgentTool
GetCachedAgentTool returns the cached GARM agent tool for the specified OS type and architecture. Returns nil if no cache exists, if the cache is older than 24 hours, or if the tool is not found.
func (*ControllerInfo) JobBackoff ¶
func (c *ControllerInfo) JobBackoff() time.Duration
type CreateEnterpriseParams ¶
type CreateEnterpriseParams struct {
Name string `json:"name,omitempty"`
CredentialsName string `json:"credentials_name,omitempty"`
WebhookSecret string `json:"webhook_secret,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancer_type,omitempty"`
AgentMode bool `json:"agent_mode,omitempty"`
}
swagger:model CreateEnterpriseParams
func (*CreateEnterpriseParams) Validate ¶
func (c *CreateEnterpriseParams) Validate() error
type CreateFileObjectParams ¶
type CreateFileObjectParams struct {
Name string `json:"name"`
Description string `json:"description"`
Size int64 `json:"size"`
Tags []string `json:"tags"`
}
swagger:model CreateFileObjectParams
type CreateGARMToolParams ¶
type CreateGARMToolParams struct {
Name string `json:"name"`
Description string `json:"description"`
Size int64 `json:"size"`
OSType commonParams.OSType `json:"os_type"`
OSArch commonParams.OSArch `json:"os_arch"`
Version string `json:"version"`
Origin string `json:"origin,omitempty"`
}
swagger:model CreateGARMToolParams
type CreateGiteaCredentialsParams ¶
type CreateGiteaCredentialsParams struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Endpoint string `json:"endpoint,omitempty"`
AuthType ForgeAuthType `json:"auth_type,omitempty"`
PAT GithubPAT `json:"pat,omitempty"`
App GithubApp `json:"app,omitempty"`
}
swagger:model CreateGiteaCredentialsParams
func (CreateGiteaCredentialsParams) Validate ¶
func (c CreateGiteaCredentialsParams) Validate() error
type CreateGiteaEndpointParams ¶
type CreateGiteaEndpointParams struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
APIBaseURL string `json:"api_base_url,omitempty"`
BaseURL string `json:"base_url,omitempty"`
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
ToolsMetadataURL string `json:"tools_metadata_url,omitempty"`
UseInternalToolsMetadata *bool `json:"use_internal_tools_metadata,omitempty"`
}
swagger:model CreateGiteaEndpointParams
func (CreateGiteaEndpointParams) Validate ¶
func (c CreateGiteaEndpointParams) Validate() error
type CreateGithubCredentialsParams ¶ added in v0.1.5
type CreateGithubCredentialsParams struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Endpoint string `json:"endpoint,omitempty"`
AuthType ForgeAuthType `json:"auth_type,omitempty"`
PAT GithubPAT `json:"pat,omitempty"`
App GithubApp `json:"app,omitempty"`
}
swagger:model CreateGithubCredentialsParams
func (CreateGithubCredentialsParams) Validate ¶ added in v0.1.5
func (c CreateGithubCredentialsParams) Validate() error
type CreateGithubEndpointParams ¶ added in v0.1.5
type CreateGithubEndpointParams struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
APIBaseURL string `json:"api_base_url,omitempty"`
UploadBaseURL string `json:"upload_base_url,omitempty"`
BaseURL string `json:"base_url,omitempty"`
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
}
swagger:model CreateGithubEndpointParams
func (CreateGithubEndpointParams) Validate ¶ added in v0.1.5
func (c CreateGithubEndpointParams) Validate() error
type CreateInstanceParams ¶
type CreateInstanceParams struct {
Name string `json:"name,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
Status commonParams.InstanceStatus `json:"status,omitempty"`
RunnerStatus RunnerStatus `json:"runner_status,omitempty"`
CallbackURL string `json:"callback_url,omitempty"`
MetadataURL string `json:"metadata_url,omitempty"`
// GithubRunnerGroup is the github runner group to which the runner belongs.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
CreateAttempt int `json:"-"`
AgentID int64 `json:"-"`
AditionalLabels []string `json:"aditional_labels,omitempty"`
JitConfiguration map[string]string `json:"jit_configuration,omitempty"`
Generation uint64 `json:"generation"`
}
type CreateOrgParams ¶
type CreateOrgParams struct {
Name string `json:"name,omitempty"`
CredentialsName string `json:"credentials_name,omitempty"`
WebhookSecret string `json:"webhook_secret,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancer_type,omitempty"`
ForgeType EndpointType `json:"forge_type,omitempty"`
AgentMode bool `json:"agent_mode,omitempty"`
}
swagger:model CreateOrgParams
func (*CreateOrgParams) Validate ¶
func (c *CreateOrgParams) Validate() error
type CreatePoolParams ¶
type CreatePoolParams struct {
RunnerPrefix
ProviderName string `json:"provider_name,omitempty"`
MaxRunners uint `json:"max_runners,omitempty"`
MinIdleRunners uint `json:"min_idle_runners,omitempty"`
Image string `json:"image,omitempty"`
Flavor string `json:"flavor,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
Tags []string `json:"tags,omitempty"`
Enabled bool `json:"enabled,omitempty"`
RunnerBootstrapTimeout uint `json:"runner_bootstrap_timeout,omitempty"`
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
EnableShell bool `json:"enable_shell"`
// GithubRunnerGroup is the github runner group in which the runners of this
// pool will be added to.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
Priority uint `json:"priority,omitempty"`
TemplateID *uint `json:"template_id,omitempty"`
}
swagger:model CreatePoolParams
func (*CreatePoolParams) Validate ¶
func (p *CreatePoolParams) Validate() error
type CreateRepoParams ¶
type CreateRepoParams struct {
Owner string `json:"owner,omitempty"`
Name string `json:"name,omitempty"`
CredentialsName string `json:"credentials_name,omitempty"`
WebhookSecret string `json:"webhook_secret,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancer_type,omitempty"`
ForgeType EndpointType `json:"forge_type,omitempty"`
AgentMode bool `json:"agent_mode,omitempty"`
}
swagger:model CreateRepoParams
func (*CreateRepoParams) Validate ¶
func (c *CreateRepoParams) Validate() error
type CreateScaleSetParams ¶
type CreateScaleSetParams struct {
RunnerPrefix
Name string `json:"name"`
DisableUpdate bool `json:"disable_update"`
ScaleSetID int `json:"scale_set_id"`
ProviderName string `json:"provider_name,omitempty"`
MaxRunners uint `json:"max_runners,omitempty"`
MinIdleRunners uint `json:"min_idle_runners,omitempty"`
Image string `json:"image,omitempty"`
Flavor string `json:"flavor,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
Enabled bool `json:"enabled,omitempty"`
RunnerBootstrapTimeout uint `json:"runner_bootstrap_timeout,omitempty"`
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
EnableShell bool `json:"enable_shell"`
// GithubRunnerGroup is the github runner group in which the runners of this
// pool will be added to.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
TemplateID *uint `json:"template_id,omitempty"`
Labels []string `json:"labels,omitempty"`
}
swagger:model CreateScaleSetParams
func (CreateScaleSetParams) GitHubLabels ¶
func (s CreateScaleSetParams) GitHubLabels() []Label
GitHubLabels returns the label list for GitHub scale set API calls. The scale set name is always included as the first "System" label, matching actions-runner-controller behavior. Additional labels are appended with deduplication.
func (*CreateScaleSetParams) Validate ¶
func (s *CreateScaleSetParams) Validate() error
type CreateTemplateParams ¶
type CreateTemplateParams struct {
Name string `json:"name"`
Description string `json:"description"`
Data []byte `json:"data"`
OSType commonParams.OSType `json:"os_type"`
ForgeType EndpointType `json:"forge_type,omitempty"`
IsSystem bool `json:"-"`
}
swagger:model CreateTemplateParams
func (*CreateTemplateParams) Validate ¶
func (c *CreateTemplateParams) Validate() error
type CreationDateGetter ¶
type Credentials ¶ added in v0.1.3
type Credentials []ForgeCredentials
used by swagger client generated code swagger:model Credentials
type EndpointType ¶
type EndpointType string
const ( AutoEndpointType EndpointType = "" GithubEndpointType EndpointType = "github" GiteaEndpointType EndpointType = "gitea" )
type Enterprise ¶
type Enterprise struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Pools []Pool `json:"pool,omitempty"`
// CredentialName is the name of the credentials associated with the enterprise.
// This field is now deprecated. Use CredentialsID instead. This field will be
// removed in v0.2.0.
CredentialsName string `json:"credentials_name,omitempty"`
Credentials ForgeCredentials `json:"credentials,omitempty"`
CredentialsID uint `json:"credentials_id,omitempty"`
PoolManagerStatus PoolManagerStatus `json:"pool_manager_status,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancing_type,omitempty"`
Endpoint ForgeEndpoint `json:"endpoint,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
Events []EntityEvent `json:"events,omitempty"`
AgentMode bool `json:"agent_mode"`
// Do not serialize sensitive info.
WebhookSecret string `json:"-"`
}
swagger:model Enterprise
func (Enterprise) GetBalancerType ¶ added in v0.1.5
func (e Enterprise) GetBalancerType() PoolBalancerType
func (Enterprise) GetCreatedAt ¶
func (e Enterprise) GetCreatedAt() time.Time
func (Enterprise) GetEntity ¶ added in v0.1.5
func (e Enterprise) GetEntity() (ForgeEntity, error)
func (Enterprise) GetID ¶
func (e Enterprise) GetID() string
func (Enterprise) GetName ¶
func (e Enterprise) GetName() string
type EnterpriseFilter ¶
type Enterprises ¶ added in v0.1.3
type Enterprises []Enterprise
used by swagger client generated code swagger:model Enterprises
type EntityEvent ¶
type EntityEvent struct {
ID uint `json:"id,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
EventType EventType `json:"event_type,omitempty"`
EventLevel EventLevel `json:"event_level,omitempty"`
Message string `json:"message,omitempty"`
}
swagger:model EntityEvent
type EntityGetter ¶
type EntityGetter interface {
GetEntity() (ForgeEntity, error)
}
EntityGetter is implemented by all github entities (repositories, organizations and enterprises). It defines the GetEntity() function which returns a github entity.
type EventLevel ¶
type EventLevel string
const ( EventInfo EventLevel = "info" EventWarning EventLevel = "warning" EventError EventLevel = "error" )
type FileObject ¶
type FileObject struct {
ID uint `json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Name string `json:"name"`
Description string `json:"description,omitempty"`
Size int64 `json:"size"`
Tags []string `json:"tags"`
SHA256 string `json:"sha256,omitempty"`
FileType string `json:"file_type"`
}
swagger:model FileObject
type FileObjectPaginatedResponse ¶
type FileObjectPaginatedResponse = PaginatedResponse[FileObject]
swagger:model FileObjectPaginatedResponse
type ForgeAuthType ¶
type ForgeAuthType string
const ( // ForgeAuthTypePAT is the OAuth token based authentication ForgeAuthTypePAT ForgeAuthType = "pat" // ForgeAuthTypeApp is the GitHub App based authentication ForgeAuthTypeApp ForgeAuthType = "app" )
type ForgeCredentials ¶
type ForgeCredentials struct {
ID uint `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
APIBaseURL string `json:"api_base_url,omitempty"`
UploadBaseURL string `json:"upload_base_url,omitempty"`
BaseURL string `json:"base_url,omitempty"`
CABundle []byte `json:"ca_bundle,omitempty"`
AuthType ForgeAuthType `json:"auth-type,omitempty"`
ForgeType EndpointType `json:"forge_type,omitempty"`
Repositories []Repository `json:"repositories,omitempty"`
Organizations []Organization `json:"organizations,omitempty"`
Enterprises []Enterprise `json:"enterprises,omitempty"`
Endpoint ForgeEndpoint `json:"endpoint,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
RateLimit *GithubRateLimit `json:"rate_limit,omitempty"`
// Do not serialize sensitive info.
CredentialsPayload []byte `json:"-"`
}
swagger:model ForgeCredentials
func (ForgeCredentials) GetHTTPClient ¶
func (ForgeCredentials) GetID ¶
func (g ForgeCredentials) GetID() uint
func (ForgeCredentials) RootCertificateBundle ¶
func (g ForgeCredentials) RootCertificateBundle() (CertificateBundle, error)
type ForgeCredentialsGetter ¶
type ForgeCredentialsGetter interface {
GetForgeCredentials() ForgeCredentials
}
type ForgeEndpoint ¶
type ForgeEndpoint struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
APIBaseURL string `json:"api_base_url,omitempty"`
UploadBaseURL string `json:"upload_base_url,omitempty"`
BaseURL string `json:"base_url,omitempty"`
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
ToolsMetadataURL string `json:"tools_metadata_url,omitempty"`
UseInternalToolsMetadata *bool `json:"use_internal_tools_metadata,omitempty"`
EndpointType EndpointType `json:"endpoint_type,omitempty"`
}
swagger:model ForgeEndpoint
type ForgeEndpoints ¶
type ForgeEndpoints []ForgeEndpoint
used by swagger client generated code swagger:model ForgeEndpoints
type ForgeEntity ¶
type ForgeEntity struct {
Owner string `json:"owner,omitempty"`
Name string `json:"name,omitempty"`
ID string `json:"id,omitempty"`
EntityType ForgeEntityType `json:"entity_type,omitempty"`
Credentials ForgeCredentials `json:"credentials,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancing_type,omitempty"`
PoolManagerStatus PoolManagerStatus `json:"pool_manager_status,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
AgentMode bool `json:"agent_mode"`
WebhookSecret string `json:"-"`
}
swagger:model ForgeEntity
func (ForgeEntity) ForgeURL ¶
func (g ForgeEntity) ForgeURL() string
func (ForgeEntity) GetCreatedAt ¶
func (g ForgeEntity) GetCreatedAt() time.Time
func (ForgeEntity) GetForgeType ¶
func (g ForgeEntity) GetForgeType() (EndpointType, error)
func (ForgeEntity) GetIDAsUUID ¶
func (g ForgeEntity) GetIDAsUUID() (uuid.UUID, error)
func (ForgeEntity) GetPoolBalancerType ¶
func (g ForgeEntity) GetPoolBalancerType() PoolBalancerType
func (ForgeEntity) LabelScope ¶
func (g ForgeEntity) LabelScope() string
func (ForgeEntity) String ¶
func (g ForgeEntity) String() string
type ForgeEntityType ¶
type ForgeEntityType string
const ( ForgeEntityTypeRepository ForgeEntityType = "repository" ForgeEntityTypeOrganization ForgeEntityType = "organization" ForgeEntityTypeEnterprise ForgeEntityType = "enterprise" )
func (ForgeEntityType) String ¶
func (e ForgeEntityType) String() string
type GARMAgentTool ¶
type GARMAgentTool struct {
ID uint `json:"id"`
Name string `json:"name"`
Size int64 `json:"size"`
SHA256SUM string `json:"sha256sum"`
Description string `json:"description"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
FileType string `json:"file_type"`
Version string `json:"version"`
OSType commonParams.OSType `json:"os_type"`
OSArch commonParams.OSArch `json:"os_arch"`
DownloadURL string `json:"download_url"`
// Origin defines where the GARM agent tool originated from.
// When manually uploaded, this field is set to "manual". When synced
// from a release URL, this will hold the release URL where the tools
// originated from.
Origin string `json:"origin"`
// Source indicates where this tool is currently stored.
// "local" means the tool is stored in the internal object store.
// "upstream" means the tool is only available from the upstream
// cached release and has not been downloaded locally.
Source string `json:"source"`
}
swagger:model GARMAgentTool
type GARMAgentToolsPaginatedResponse ¶
type GARMAgentToolsPaginatedResponse = PaginatedResponse[GARMAgentTool]
swagger:model GARMAgentToolsPaginatedResponse
type GARMToolsManager ¶
type GARMToolsManager interface {
ListAllGARMTools(ctx context.Context) ([]GARMAgentTool, error)
CreateGARMTool(ctx context.Context, param CreateGARMToolParams, reader io.Reader) (FileObject, error)
DeleteGarmTool(ctx context.Context, osType, osArch string) error
}
type GithubApp ¶ added in v0.1.5
type GithubApp struct {
AppID int64 `json:"app_id,omitempty"`
InstallationID int64 `json:"installation_id,omitempty"`
PrivateKeyBytes []byte `json:"private_key_bytes,omitempty"`
}
swagger:model GithubApp
type GithubPAT ¶ added in v0.1.5
type GithubPAT struct {
OAuth2Token string `json:"oauth2_token,omitempty"`
}
swagger:model GithubPAT
type GithubRateLimit ¶
type GithubRateLimit struct {
Limit int `json:"limit,omitempty"`
Used int `json:"used,omitempty"`
Remaining int `json:"remaining,omitempty"`
Reset int64 `json:"reset,omitempty"`
}
swagger:model GithubRateLimit
func (GithubRateLimit) ResetAt ¶
func (g GithubRateLimit) ResetAt() time.Time
func (GithubRateLimit) ResetIn ¶
func (g GithubRateLimit) ResetIn() time.Duration
type HookInfo ¶ added in v0.1.4
type HookInfo struct {
ID int64 `json:"id,omitempty"`
URL string `json:"url,omitempty"`
Events []string `json:"events,omitempty"`
Active bool `json:"active,omitempty"`
InsecureSSL bool `json:"insecure_ssl,omitempty"`
}
swagger:model HookInfo
type InstallWebhookParams ¶ added in v0.1.4
type InstallWebhookParams struct {
WebhookEndpointType WebhookEndpointType `json:"webhook_endpoint_type,omitempty"`
InsecureSSL bool `json:"insecure_ssl,omitempty"`
}
swagger:model InstallWebhookParams
type Instance ¶
type Instance struct {
// ID is the database ID of this instance.
ID string `json:"id,omitempty"`
// PeoviderID is the unique ID the provider associated
// with the compute instance. We use this to identify the
// instance in the provider.
ProviderID string `json:"provider_id,omitempty"`
// ProviderName is the name of the IaaS where the instance was
// created.
ProviderName string `json:"provider_name"`
// AgentID is the github runner agent ID.
AgentID int64 `json:"agent_id,omitempty"`
// Name is the name associated with an instance. Depending on
// the provider, this may or may not be useful in the context of
// the provider, but we can use it internally to identify the
// instance.
Name string `json:"name,omitempty"`
// OSType is the operating system type. For now, only Linux and
// Windows are supported.
OSType commonParams.OSType `json:"os_type,omitempty"`
// OSName is the name of the OS. Eg: ubuntu, centos, etc.
OSName string `json:"os_name,omitempty"`
// OSVersion is the version of the operating system.
OSVersion string `json:"os_version,omitempty"`
// OSArch is the operating system architecture.
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
// Addresses is a list of IP addresses the provider reports
// for this instance.
Addresses []commonParams.Address `json:"addresses,omitempty"`
// Status is the status of the instance inside the provider (eg: running, stopped, etc)
Status commonParams.InstanceStatus `json:"status,omitempty"`
// RunnerStatus is the github runner status as it appears on GitHub.
RunnerStatus RunnerStatus `json:"runner_status,omitempty"`
// PoolID is the ID of the garm pool to which a runner belongs.
PoolID string `json:"pool_id,omitempty"`
// ScaleSetID is the ID of the scale set to which a runner belongs.
ScaleSetID uint `json:"scale_set_id,omitempty"`
// ProviderFault holds any error messages captured from the IaaS provider that is
// responsible for managing the lifecycle of the runner.
ProviderFault []byte `json:"provider_fault,omitempty"`
// StatusMessages is a list of status messages sent back by the runner as it sets itself
// up.
StatusMessages []StatusMessage `json:"status_messages,omitempty"`
// CreatedAt is the timestamp of the creation of this runner.
CreatedAt time.Time `json:"created_at,omitempty"`
// UpdatedAt is the timestamp of the last update to this runner.
UpdatedAt time.Time `json:"updated_at,omitempty"`
// GithubRunnerGroup is the github runner group to which the runner belongs.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
// Job is the current job that is being serviced by this runner.
Job *Job `json:"job,omitempty"`
// Heartbeat is the last recorded heartbeat from the runner
Heartbeat time.Time `json:"heartbeat"`
Capabilities AgentCapabilities `json:"capabilities"`
// Generation is the pool generation at the time of creating this instance.
// This field is to track a divergence between when the instance was created
// and the settings currently set on a pool. We can then use this field to know
// if the instance is out of date with the pool, allowing us to remove it if we
// need to.
Generation uint64 `json:"generation"`
// Do not serialize sensitive info.
CallbackURL string `json:"-"`
MetadataURL string `json:"-"`
CreateAttempt int `json:"-"`
TokenFetched bool `json:"-"`
AditionalLabels []string `json:"-"`
JitConfiguration map[string]string `json:"-"`
}
swagger:model Instance
func (Instance) GetCreatedAt ¶
type InstanceMetadata ¶
type InstanceMetadata struct {
MetadataAccess MetadataServiceAccessDetails `json:"metadata_access"`
ForgeType EndpointType `json:"forge_type"`
// RunnerRegistrationURL is the URL the runner needs to configure itself
// against. This can be a repository, organization, enterprise (github)
// or system (gitea)
RunnerRegistrationURL string `json:"runner_registration_url"`
RunnerName string `json:"runner_name"`
RunnerLabels []string `json:"runner_labels,omitempty"`
CABundle map[string][]byte `json:"ca_bundles,omitempty"`
// ExtraSpecs represents the extra specs set on the pool or scale set. No secrets should
// be set in extra specs.
// Also, the instance metadata should never be saved to disk, and the metadata URL is only
// accessible during setup of the runner. The API returns unauthorized once the runner
// transitions to failed/idle.
ExtraSpecs map[string]any `json:"extra_specs,omitempty"`
// Agent mode indicates whether or not we need to install the GARM agent on the runner.
AgentMode bool `json:"agent_mode"`
// AgentTools represents the garm agent download details.
AgentTools *GARMAgentTool `json:"agent_tools,omitempty"`
AgentToken string `json:"agent_token,omitempty"`
AgentShellEnabled bool `json:"agent_shell_enabled,omitempty"`
JITEnabled bool `json:"jit_enabled"`
RunnerTools commonParams.RunnerApplicationDownload `json:"runner_tools"`
}
swagger:model InstanceMetadata
type InstanceRequest ¶
type InstanceRequest struct {
Name string `json:"name"`
OSType commonParams.OSType `json:"os_type"`
OSVersion string `json:"os_version"`
}
type InstanceUpdateMessage ¶
type InstanceUpdateMessage struct {
Status RunnerStatus `json:"status,omitempty"`
Message string `json:"message,omitempty"`
AgentID *int64 `json:"agent_id,omitempty"`
}
type Instances ¶ added in v0.1.2
type Instances []Instance
used by swagger client generated code swagger:model Instances
type JWTResponse ¶
type JWTResponse struct {
Token string `json:"token,omitempty"`
}
JWTResponse holds the JWT token returned as a result of a successful auth swagger:model JWTResponse
type Job ¶ added in v0.1.2
type Job struct {
// ID is the ID of the job.
ID int64 `json:"id,omitempty"`
WorkflowJobID int64 `json:"workflow_job_id,omitempty"`
// ScaleSetJobID is the job ID when generated for a scale set.
ScaleSetJobID string `json:"scaleset_job_id,omitempty"`
// RunID is the ID of the workflow run. A run may have multiple jobs.
RunID int64 `json:"run_id,omitempty"`
// Action is the specific activity that triggered the event.
Action string `json:"action,omitempty"`
// Conclusion is the outcome of the job.
// Possible values: "success", "failure", "neutral", "cancelled", "skipped",
// "timed_out", "action_required"
Conclusion string `json:"conclusion,omitempty"`
// Status is the phase of the lifecycle that the job is currently in.
// "queued", "in_progress" and "completed".
Status string `json:"status,omitempty"`
// Name is the name if the job that was triggered.
Name string `json:"name,omitempty"`
StartedAt time.Time `json:"started_at,omitempty"`
CompletedAt time.Time `json:"completed_at,omitempty"`
GithubRunnerID int64 `json:"runner_id,omitempty"`
RunnerName string `json:"runner_name,omitempty"`
RunnerGroupID int64 `json:"runner_group_id,omitempty"`
RunnerGroupName string `json:"runner_group_name,omitempty"`
// repository in which the job was triggered.
RepositoryName string `json:"repository_name,omitempty"`
RepositoryOwner string `json:"repository_owner,omitempty"`
WorkflowRunURL string `json:"workflow_run_url,omitempty"`
Labels []string `json:"labels,omitempty"`
// The entity that received the hook.
//
// Webhooks may be configured on the repo, the org and/or the enterprise.
// If we only configure a repo to use garm, we'll only ever receive a
// webhook from the repo. But if we configure the parent org of the repo and
// the parent enterprise of the org to use garm, a webhook will be sent for each
// entity type, in response to one workflow event. Thus, we will get 3 webhooks
// with the same run_id and job id. Record all involved entities in the same job
// if we have them configured in garm.
RepoID *uuid.UUID `json:"repo_id,omitempty"`
OrgID *uuid.UUID `json:"org_id,omitempty"`
EnterpriseID *uuid.UUID `json:"enterprise_id,omitempty"`
LockedBy uuid.UUID `json:"locked_by,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
}
swagger:model Job
func (Job) BelongsTo ¶
func (j Job) BelongsTo(entity ForgeEntity) bool
type Jobs ¶ added in v0.1.3
type Jobs []Job
swagger:model Jobs used by swagger client generated code
type MetadataServiceAccessDetails ¶
type MetadataServiceAccessDetails struct {
CallbackURL string `json:"callback_url"`
MetadataURL string `json:"metadata_url"`
AgentURL string `json:"agent_url"`
}
swagger:model MetadataServiceAccessDetails
type NewUserParams ¶
type NewUserParams struct {
Email string `json:"email,omitempty"`
Username string `json:"username,omitempty"`
FullName string `json:"full_name,omitempty"`
Password string `json:"password,omitempty"`
IsAdmin bool `json:"-"`
Enabled bool `json:"-"`
}
NewUserParams holds the needed information to create a new user swagger:model NewUserParams
type Organization ¶
type Organization struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Pools []Pool `json:"pool,omitempty"`
// CredentialName is the name of the credentials associated with the enterprise.
// This field is now deprecated. Use CredentialsID instead. This field will be
// removed in v0.2.0.
CredentialsName string `json:"credentials_name,omitempty"`
Credentials ForgeCredentials `json:"credentials,omitempty"`
CredentialsID uint `json:"credentials_id,omitempty"`
PoolManagerStatus PoolManagerStatus `json:"pool_manager_status,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancing_type,omitempty"`
Endpoint ForgeEndpoint `json:"endpoint,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
Events []EntityEvent `json:"events,omitempty"`
AgentMode bool `json:"agent_mode"`
// Do not serialize sensitive info.
WebhookSecret string `json:"-"`
}
swagger:model Organization
func (Organization) GetBalancerType ¶ added in v0.1.5
func (o Organization) GetBalancerType() PoolBalancerType
func (Organization) GetCreatedAt ¶
func (o Organization) GetCreatedAt() time.Time
func (Organization) GetEntity ¶ added in v0.1.5
func (o Organization) GetEntity() (ForgeEntity, error)
func (Organization) GetID ¶
func (o Organization) GetID() string
func (Organization) GetName ¶
func (o Organization) GetName() string
type OrganizationFilter ¶
type Organizations ¶ added in v0.1.3
type Organizations []Organization
used by swagger client generated code swagger:model Organizations
type PaginatedResponse ¶
type PasswordLoginParams ¶
type PasswordLoginParams struct {
Username string `json:"username,omitempty"`
Password string `json:"password,omitempty"`
}
swagger:model PasswordLoginParams PasswordLoginParams holds information used during password authentication, that will be passed to a password login function
func (PasswordLoginParams) Validate ¶
func (p PasswordLoginParams) Validate() error
Validate checks if the username and password are set
type Pool ¶
type Pool struct {
RunnerPrefix
ID string `json:"id,omitempty"`
ProviderName string `json:"provider_name,omitempty"`
MaxRunners uint `json:"max_runners,omitempty"`
MinIdleRunners uint `json:"min_idle_runners,omitempty"`
Image string `json:"image,omitempty"`
Flavor string `json:"flavor,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
Tags []Tag `json:"tags,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Instances []Instance `json:"instances,omitempty"`
EnableShell bool `json:"enable_shell"`
// Generation holds the numeric generation of the pool. This number
// will be incremented, every time certain settings of the pool, which
// may influence how runners are created (flavor, specs, image) are changed.
// When a runner is created, this generation will be copied to the runners as
// well. That way if some settings diverge, we can target those runners
// to be recreated.
Generation uint64 `json:"generation"`
RepoID string `json:"repo_id,omitempty"`
RepoName string `json:"repo_name,omitempty"`
OrgID string `json:"org_id,omitempty"`
OrgName string `json:"org_name,omitempty"`
EnterpriseID string `json:"enterprise_id,omitempty"`
EnterpriseName string `json:"enterprise_name,omitempty"`
Endpoint ForgeEndpoint `json:"endpoint,omitempty"`
RunnerBootstrapTimeout uint `json:"runner_bootstrap_timeout,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
// ExtraSpecs is an opaque raw json that gets sent to the provider
// as part of the bootstrap params for instances. It can contain
// any kind of data needed by providers. The contents of this field means
// nothing to garm itself. We don't act on the information in this field at
// all. We only validate that it's a proper json.
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
// GithubRunnerGroup is the github runner group in which the runners will be added.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
// Priority is the priority of the pool. The higher the number, the higher the priority.
// When fetching matching pools for a set of tags, the result will be sorted in descending
// order of priority.
Priority uint `json:"priority,omitempty"`
TemplateID uint `json:"template_id,omitempty"`
TemplateName string `json:"template_name,omitempty"`
}
swagger:model Pool
func (Pool) BelongsTo ¶
func (p Pool) BelongsTo(entity ForgeEntity) bool
func (Pool) GetCreatedAt ¶
func (Pool) GetEntity ¶
func (p Pool) GetEntity() (ForgeEntity, error)
func (*Pool) HasRequiredLabels ¶ added in v0.1.4
func (Pool) MaxRunnersAsInt ¶
func (Pool) MinIdleRunnersAsInt ¶
func (*Pool) PoolType ¶
func (p *Pool) PoolType() ForgeEntityType
func (*Pool) RunnerTimeout ¶
type PoolBalancerType ¶ added in v0.1.5
type PoolBalancerType string
const ( // PoolBalancerTypeRoundRobin will try to cycle through the pools of an entity // in a round robin fashion. For example, if a repository has multiple pools that // match a certain set of labels, and the entity is configured to use round robin // balancer, the pool manager will attempt to create instances in each pool in turn // for each job that needs to be serviced. So job1 in pool1, job2 in pool2 and so on. PoolBalancerTypeRoundRobin PoolBalancerType = "roundrobin" // PoolBalancerTypePack will try to create instances in the first pool that matches // the required labels. If the pool is full, it will move on to the next pool and so on. PoolBalancerTypePack PoolBalancerType = "pack" // PoolBalancerTypeNone denotes to the default behavior of the pool manager, which is // to use the round robin balancer. PoolBalancerTypeNone PoolBalancerType = "" )
type PoolManagerStatus ¶
type PoolManagerStatus struct {
IsRunning bool `json:"running,omitempty"`
FailureReason string `json:"failure_reason,omitempty"`
}
swagger:model PoolManagerStatus
type Pools ¶ added in v0.1.2
type Pools []Pool
used by swagger client generated code swagger:model Pools
type Provider ¶
type Provider struct {
Name string `json:"name,omitempty"`
ProviderType ProviderType `json:"type,omitempty"`
Description string `json:"description,omitempty"`
}
swagger:model Provider
type ProviderType ¶
type ProviderType string
const ( // LXDProvider represents the LXD provider. LXDProvider ProviderType = "lxd" // ExternalProvider represents an external provider. ExternalProvider ProviderType = "external" )
type Providers ¶ added in v0.1.3
type Providers []Provider
used by swagger client generated code swagger:model Providers
type Repositories ¶ added in v0.1.2
type Repositories []Repository
used by swagger client generated code swagger:model Repositories
type Repository ¶
type Repository struct {
ID string `json:"id,omitempty"`
Owner string `json:"owner,omitempty"`
Name string `json:"name,omitempty"`
Pools []Pool `json:"pool,omitempty"`
// CredentialName is the name of the credentials associated with the enterprise.
// This field is now deprecated. Use CredentialsID instead. This field will be
// removed in v0.2.0.
CredentialsName string `json:"credentials_name,omitempty"`
CredentialsID uint `json:"credentials_id,omitempty"`
Credentials ForgeCredentials `json:"credentials,omitempty"`
AgentMode bool `json:"agent_mode"`
PoolManagerStatus PoolManagerStatus `json:"pool_manager_status,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancing_type,omitempty"`
Endpoint ForgeEndpoint `json:"endpoint,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
Events []EntityEvent `json:"events,omitempty"`
// Do not serialize sensitive info.
WebhookSecret string `json:"-"`
}
swagger:model Repository
func (Repository) CreationDateGetter ¶
func (r Repository) CreationDateGetter() time.Time
func (Repository) GetBalancerType ¶ added in v0.1.5
func (r Repository) GetBalancerType() PoolBalancerType
func (Repository) GetCredentialsName ¶
func (r Repository) GetCredentialsName() string
func (Repository) GetEntity ¶ added in v0.1.5
func (r Repository) GetEntity() (ForgeEntity, error)
func (Repository) GetID ¶
func (r Repository) GetID() string
func (Repository) GetName ¶
func (r Repository) GetName() string
func (Repository) String ¶ added in v0.1.5
func (r Repository) String() string
type RepositoryFilter ¶
type RestoreTemplateRequest ¶
type RestoreTemplateRequest struct {
Forge EndpointType `json:"forge"`
OSType commonParams.OSType `json:"os_type"`
// RestoreAll indicates whether or not to restore all known
// system owned templates. If set, the Forge and OSType params
// are ignored.
RestoreAll bool `json:"restore_all"`
}
swagger:model RestoreTemplateRequest
type RunnerGroup ¶
type RunnerGroupList ¶
type RunnerGroupList struct {
Count int `json:"count"`
RunnerGroups []RunnerGroup `json:"value"`
}
type RunnerInfo ¶
type RunnerPrefix ¶
type RunnerPrefix struct {
Prefix string `json:"runner_prefix,omitempty"`
}
func (RunnerPrefix) GetRunnerPrefix ¶
func (p RunnerPrefix) GetRunnerPrefix() string
type RunnerReference ¶
type RunnerReference struct {
ID int64 `json:"id"`
Name string `json:"name"`
OS string `json:"os"`
RunnerScaleSetID int `json:"runnerScaleSetId"`
CreatedOn any `json:"createdOn"`
RunnerGroupID uint64 `json:"runnerGroupId"`
RunnerGroupName string `json:"runnerGroupName"`
Version string `json:"version"`
Enabled bool `json:"enabled"`
Ephemeral bool `json:"ephemeral"`
Status any `json:"status"`
DisableUpdate bool `json:"disableUpdate"`
ProvisioningState string `json:"provisioningState"`
Busy bool `json:"busy"`
Labels []Label `json:"labels,omitempty"`
}
func (RunnerReference) GetStatus ¶
func (r RunnerReference) GetStatus() RunnerStatus
type RunnerReferenceList ¶
type RunnerReferenceList struct {
Count int `json:"count"`
RunnerReferences []RunnerReference `json:"value"`
}
type RunnerScaleSet ¶
type RunnerScaleSet struct {
ID int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
RunnerGroupID int64 `json:"runnerGroupId,omitempty"`
RunnerGroupName string `json:"runnerGroupName,omitempty"`
Labels []Label `json:"labels,omitempty"`
RunnerSetting RunnerSetting `json:"RunnerSetting,omitempty"`
CreatedOn time.Time `json:"createdOn,omitempty"`
RunnerJitConfigURL string `json:"runnerJitConfigUrl,omitempty"`
GetAcquirableJobsURL string `json:"getAcquirableJobsUrl,omitempty"`
AcquireJobsURL string `json:"acquireJobsUrl,omitempty"`
Statistics *RunnerScaleSetStatistic `json:"statistics,omitempty"`
Status interface{} `json:"status,omitempty"`
Enabled *bool `json:"enabled,omitempty"`
}
type RunnerScaleSetJitRunnerConfig ¶
type RunnerScaleSetJitRunnerConfig struct {
Runner *RunnerReference `json:"runner"`
EncodedJITConfig string `json:"encodedJITConfig"`
}
func (RunnerScaleSetJitRunnerConfig) DecodedJITConfig ¶
func (r RunnerScaleSetJitRunnerConfig) DecodedJITConfig() (map[string]string, error)
type RunnerScaleSetMessage ¶
type RunnerScaleSetMessage struct {
MessageID int64 `json:"messageId"`
MessageType string `json:"messageType"`
Body string `json:"body"`
Statistics *RunnerScaleSetStatistic `json:"statistics"`
}
func (RunnerScaleSetMessage) GetJobsFromBody ¶
func (r RunnerScaleSetMessage) GetJobsFromBody() ([]ScaleSetJobMessage, error)
func (RunnerScaleSetMessage) IsNil ¶
func (r RunnerScaleSetMessage) IsNil() bool
type RunnerScaleSetSession ¶
type RunnerScaleSetSession struct {
SessionID *uuid.UUID `json:"sessionId,omitempty"`
OwnerName string `json:"ownerName,omitempty"`
RunnerScaleSet *RunnerScaleSet `json:"runnerScaleSet,omitempty"`
MessageQueueURL string `json:"messageQueueUrl,omitempty"`
MessageQueueAccessToken string `json:"messageQueueAccessToken,omitempty"`
Statistics *RunnerScaleSetStatistic `json:"statistics,omitempty"`
}
func (RunnerScaleSetSession) ExiresAt ¶
func (a RunnerScaleSetSession) ExiresAt() (time.Time, error)
func (RunnerScaleSetSession) ExpiresIn ¶
func (a RunnerScaleSetSession) ExpiresIn(t time.Duration) bool
func (RunnerScaleSetSession) IsExpired ¶
func (a RunnerScaleSetSession) IsExpired() bool
func (RunnerScaleSetSession) TimeRemaining ¶
func (a RunnerScaleSetSession) TimeRemaining() (time.Duration, error)
type RunnerScaleSetStatistic ¶
type RunnerScaleSetStatistic struct {
TotalAvailableJobs int `json:"totalAvailableJobs"`
TotalAcquiredJobs int `json:"totalAcquiredJobs"`
TotalAssignedJobs int `json:"totalAssignedJobs"`
TotalRunningJobs int `json:"totalRunningJobs"`
TotalRegisteredRunners int `json:"totalRegisteredRunners"`
TotalBusyRunners int `json:"totalBusyRunners"`
TotalIdleRunners int `json:"totalIdleRunners"`
}
type RunnerScaleSetsResponse ¶
type RunnerScaleSetsResponse struct {
Count int `json:"count"`
RunnerScaleSets []RunnerScaleSet `json:"value"`
}
type RunnerSetting ¶
type RunnerStatus ¶ added in v0.1.3
type RunnerStatus string
const ( RunnerIdle RunnerStatus = "idle" RunnerPending RunnerStatus = "pending" RunnerTerminated RunnerStatus = "terminated" RunnerInstalling RunnerStatus = "installing" RunnerFailed RunnerStatus = "failed" RunnerActive RunnerStatus = "active" RunnerOffline RunnerStatus = "offline" RunnerOnline RunnerStatus = "online" RunnerUnknown RunnerStatus = "unknown" )
func (RunnerStatus) IsValid ¶
func (s RunnerStatus) IsValid() bool
type ScaleSet ¶
type ScaleSet struct {
RunnerPrefix
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
ID uint `json:"id,omitempty"`
ScaleSetID int `json:"scale_set_id,omitempty"`
Name string `json:"name,omitempty"`
DisableUpdate bool `json:"disable_update"`
State ScaleSetState `json:"state"`
ExtendedState string `json:"extended_state,omitempty"`
ProviderName string `json:"provider_name,omitempty"`
MaxRunners uint `json:"max_runners,omitempty"`
MinIdleRunners uint `json:"min_idle_runners,omitempty"`
Image string `json:"image,omitempty"`
Flavor string `json:"flavor,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
Enabled bool `json:"enabled,omitempty"`
Instances []Instance `json:"instances,omitempty"`
DesiredRunnerCount int `json:"desired_runner_count,omitempty"`
EnableShell bool `json:"enable_shell"`
// Generation holds the numeric generation of the scaleset. This number
// will be incremented, every time certain settings of the scaleset, which
// may influence how runners are created (flavor, specs, image) are changed.
// When a runner is created, this generation will be copied to the runners as
// well. That way if some settings diverge, we can target those runners
// to be recreated.
Generation uint64 `json:"generation"`
Endpoint ForgeEndpoint `json:"endpoint,omitempty"`
RunnerBootstrapTimeout uint `json:"runner_bootstrap_timeout,omitempty"`
// ExtraSpecs is an opaque raw json that gets sent to the provider
// as part of the bootstrap params for instances. It can contain
// any kind of data needed by providers. The contents of this field means
// nothing to garm itself. We don't act on the information in this field at
// all. We only validate that it's a proper json.
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
// GithubRunnerGroup is the github runner group in which the runners will be added.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup string `json:"github-runner-group,omitempty"`
Tags []Tag `json:"tags,omitempty"`
StatusMessages []StatusMessage `json:"status_messages"`
RepoID string `json:"repo_id,omitempty"`
RepoName string `json:"repo_name,omitempty"`
OrgID string `json:"org_id,omitempty"`
OrgName string `json:"org_name,omitempty"`
EnterpriseID string `json:"enterprise_id,omitempty"`
EnterpriseName string `json:"enterprise_name,omitempty"`
TemplateID uint `json:"template_id,omitempty"`
TemplateName string `json:"template_name,omitempty"`
LastMessageID int64 `json:"-"`
}
swagger:model ScaleSet
func (ScaleSet) BelongsTo ¶
func (p ScaleSet) BelongsTo(entity ForgeEntity) bool
func (ScaleSet) GetEntity ¶
func (p ScaleSet) GetEntity() (ForgeEntity, error)
func (ScaleSet) GitHubLabels ¶
GitHubLabels returns the label list for GitHub scale set API calls. The scale set name is always included as the first "System" label, matching actions-runner-controller behavior. Additional tag names are appended with deduplication.
func (*ScaleSet) RunnerTimeout ¶
func (*ScaleSet) ScaleSetType ¶
func (p *ScaleSet) ScaleSetType() ForgeEntityType
type ScaleSetJobMessage ¶
type ScaleSetJobMessage struct {
MessageType string `json:"messageType,omitempty"`
JobID string `json:"jobId,omitempty"`
RunnerRequestID int64 `json:"runnerRequestId,omitempty"`
RepositoryName string `json:"repositoryName,omitempty"`
OwnerName string `json:"ownerName,omitempty"`
JobWorkflowRef string `json:"jobWorkflowRef,omitempty"`
JobDisplayName string `json:"jobDisplayName,omitempty"`
WorkflowRunID int64 `json:"workflowRunId,omitempty"`
EventName string `json:"eventName,omitempty"`
RequestLabels []string `json:"requestLabels,omitempty"`
QueueTime time.Time `json:"queueTime,omitempty"`
ScaleSetAssignTime time.Time `json:"scaleSetAssignTime,omitempty"`
RunnerAssignTime time.Time `json:"runnerAssignTime,omitempty"`
FinishTime time.Time `json:"finishTime,omitempty"`
Result string `json:"result,omitempty"`
RunnerID int64 `json:"runnerId,omitempty"`
RunnerName string `json:"runnerName,omitempty"`
AcquireJobURL string `json:"acquireJobUrl,omitempty"`
}
func (ScaleSetJobMessage) MessageTypeToStatus ¶
func (s ScaleSetJobMessage) MessageTypeToStatus() JobStatus
func (ScaleSetJobMessage) ToJob ¶
func (s ScaleSetJobMessage) ToJob() Job
type ScaleSetMessageType ¶
type ScaleSetMessageType string
const (
MessageTypeRunnerScaleSetJobMessages ScaleSetMessageType = "RunnerScaleSetJobMessages"
)
type ScaleSetState ¶
type ScaleSetState string
const ( ScaleSetPendingCreate ScaleSetState = "pending_create" ScaleSetCreated ScaleSetState = "created" ScaleSetError ScaleSetState = "error" ScaleSetPendingDelete ScaleSetState = "pending_delete" ScaleSetPendingForceDelete ScaleSetState = "pending_force_delete" )
type ScaleSets ¶
type ScaleSets []ScaleSet
used by swagger client generated code swagger:model ScaleSets
type StatusMessage ¶
type StatusMessage struct {
CreatedAt time.Time `json:"created_at,omitempty"`
Message string `json:"message,omitempty"`
EventType EventType `json:"event_type,omitempty"`
EventLevel EventLevel `json:"event_level,omitempty"`
}
swagger:model StatusMessage
type Template ¶
type Template struct {
ID uint `json:"id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Name string `json:"name"`
Description string `json:"description"`
OSType commonParams.OSType `json:"os_type"`
ForgeType EndpointType `json:"forge_type,omitempty"`
Data []byte `json:"data"`
Owner string `json:"owner_id,omitempty"`
}
swagger:model Template
type Templates ¶
type Templates []Template
used by swagger client generated code swagger:model Templates
type UpdateControllerParams ¶ added in v0.1.5
type UpdateControllerParams struct {
MetadataURL *string `json:"metadata_url,omitempty"`
CallbackURL *string `json:"callback_url,omitempty"`
WebhookURL *string `json:"webhook_url,omitempty"`
AgentURL *string `json:"agent_url,omitempty"`
GARMAgentReleasesURL *string `json:"garm_agent_releases_url,omitempty"`
SyncGARMAgentTools *bool `json:"enable_agent_tools_sync,omitempty"`
MinimumJobAgeBackoff *uint `json:"minimum_job_age_backoff,omitempty"`
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
ClearCACertBundle *bool `json:"clear_ca_cert_bundle,omitempty"`
}
swagger:model UpdateControllerParams
func (UpdateControllerParams) Validate ¶ added in v0.1.5
func (u UpdateControllerParams) Validate() error
type UpdateEntityParams ¶ added in v0.1.2
type UpdateEntityParams struct {
CredentialsName string `json:"credentials_name,omitempty"`
WebhookSecret string `json:"webhook_secret,omitempty"`
PoolBalancerType PoolBalancerType `json:"pool_balancer_type,omitempty"`
AgentMode *bool `json:"agent_mode,omitempty"`
PoolManagerStatus *PoolManagerStatus `json:"-"`
}
swagger:model UpdateEntityParams
type UpdateFileObjectParams ¶
type UpdateFileObjectParams struct {
Name *string `json:"name"`
Description *string `json:"description"`
Tags []string `json:"tags"`
}
swagger:model UpdateFileObjectParams
func (*UpdateFileObjectParams) Validate ¶
func (u *UpdateFileObjectParams) Validate() error
type UpdateGiteaCredentialsParams ¶
type UpdateGiteaCredentialsParams struct {
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
PAT *GithubPAT `json:"pat,omitempty"`
}
swagger:model UpdateGiteaCredentialsParams
func (UpdateGiteaCredentialsParams) Validate ¶
func (u UpdateGiteaCredentialsParams) Validate() error
type UpdateGiteaEndpointParams ¶
type UpdateGiteaEndpointParams struct {
Description *string `json:"description,omitempty"`
APIBaseURL *string `json:"api_base_url,omitempty"`
BaseURL *string `json:"base_url,omitempty"`
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
ToolsMetadataURL string `json:"tools_metadata_url,omitempty"`
UseInternalToolsMetadata *bool `json:"use_internal_tools_metadata,omitempty"`
}
swagger:model UpdateGiteaEndpointParams
func (UpdateGiteaEndpointParams) Validate ¶
func (u UpdateGiteaEndpointParams) Validate() error
type UpdateGithubCredentialsParams ¶ added in v0.1.5
type UpdateGithubCredentialsParams struct {
Name *string `json:"name,omitempty"`
Description *string `json:"description,omitempty"`
PAT *GithubPAT `json:"pat,omitempty"`
App *GithubApp `json:"app,omitempty"`
}
swagger:model UpdateGithubCredentialsParams
func (UpdateGithubCredentialsParams) Validate ¶ added in v0.1.5
func (u UpdateGithubCredentialsParams) Validate() error
type UpdateGithubEndpointParams ¶ added in v0.1.5
type UpdateGithubEndpointParams struct {
Description *string `json:"description,omitempty"`
APIBaseURL *string `json:"api_base_url,omitempty"`
UploadBaseURL *string `json:"upload_base_url,omitempty"`
BaseURL *string `json:"base_url,omitempty"`
CACertBundle []byte `json:"ca_cert_bundle,omitempty"`
}
swagger:model UpdateGithubEndpointParams
func (UpdateGithubEndpointParams) Validate ¶ added in v0.1.5
func (u UpdateGithubEndpointParams) Validate() error
type UpdateInstanceParams ¶
type UpdateInstanceParams struct {
ProviderID string `json:"provider_id,omitempty"`
// OSName is the name of the OS. Eg: ubuntu, centos, etc.
OSName string `json:"os_name,omitempty"`
// OSVersion is the version of the operating system.
OSVersion string `json:"os_version,omitempty"`
// Addresses is a list of IP addresses the provider reports
// for this instance.
Addresses []commonParams.Address `json:"addresses,omitempty"`
// Status is the status of the instance inside the provider (eg: running, stopped, etc)
Status commonParams.InstanceStatus `json:"status,omitempty"`
RunnerStatus RunnerStatus `json:"runner_status,omitempty"`
ProviderFault []byte `json:"provider_fault,omitempty"`
Heartbeat *time.Time `json:"heartbeat,omitempty"`
AgentID int64 `json:"-"`
CreateAttempt int `json:"-"`
TokenFetched *bool `json:"-"`
JitConfiguration map[string]string `json:"-"`
Capabilities *AgentCapabilities `json:"-"`
}
type UpdatePoolParams ¶
type UpdatePoolParams struct {
RunnerPrefix
Tags []string `json:"tags,omitempty"`
Enabled *bool `json:"enabled,omitempty"`
MaxRunners *uint `json:"max_runners,omitempty"`
MinIdleRunners *uint `json:"min_idle_runners,omitempty"`
RunnerBootstrapTimeout *uint `json:"runner_bootstrap_timeout,omitempty"`
Image string `json:"image,omitempty"`
Flavor string `json:"flavor,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
EnableShell *bool `json:"enable_shell"`
// GithubRunnerGroup is the github runner group in which the runners of this
// pool will be added to.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup *string `json:"github-runner-group,omitempty"`
Priority *uint `json:"priority,omitempty"`
TemplateID *uint `json:"template_id,omitempty"`
}
swagger:model UpdatePoolParams
type UpdateScaleSetParams ¶
type UpdateScaleSetParams struct {
RunnerPrefix
Name string `json:"name,omitempty"`
Enabled *bool `json:"enabled,omitempty"`
MaxRunners *uint `json:"max_runners,omitempty"`
MinIdleRunners *uint `json:"min_idle_runners,omitempty"`
RunnerBootstrapTimeout *uint `json:"runner_bootstrap_timeout,omitempty"`
Image string `json:"image,omitempty"`
Flavor string `json:"flavor,omitempty"`
OSType commonParams.OSType `json:"os_type,omitempty"`
OSArch commonParams.OSArch `json:"os_arch,omitempty"`
ExtraSpecs json.RawMessage `json:"extra_specs,omitempty"`
EnableShell *bool `json:"enable_shell"`
// GithubRunnerGroup is the github runner group in which the runners of this
// pool will be added to.
// The runner group must be created by someone with access to the enterprise.
GitHubRunnerGroup *string `json:"runner_group,omitempty"`
State *ScaleSetState `json:"state"`
ExtendedState *string `json:"extended_state"`
TemplateID *uint `json:"template_id,omitempty"`
ScaleSetID int `json:"-"`
}
swagger:model UpdateScaleSetParams
type UpdateSystemInfoParams ¶ added in v0.1.4
type UpdateTemplateParams ¶
type UpdateTemplateParams struct {
Name *string `json:"name"`
Description *string `json:"description"`
Data []byte `json:"data"`
}
swagger:model UpdateTemplateParams
func (*UpdateTemplateParams) Validate ¶
func (u *UpdateTemplateParams) Validate() error
type UpdateUserParams ¶
type User ¶
type User struct {
ID string `json:"id,omitempty"`
CreatedAt time.Time `json:"created_at,omitempty"`
UpdatedAt time.Time `json:"updated_at,omitempty"`
Email string `json:"email,omitempty"`
Username string `json:"username,omitempty"`
FullName string `json:"full_name,omitempty"`
Enabled bool `json:"enabled,omitempty"`
IsAdmin bool `json:"is_admin,omitempty"`
// Do not serialize sensitive info.
Password string `json:"-"`
Generation uint `json:"-"`
}
Users holds information about a particular user swagger:model User
type UserDataOptions ¶
type WebhookEndpointType ¶ added in v0.1.4
type WebhookEndpointType string
const ( // WebhookEndpointDirect instructs garm that it should attempt to create a webhook // in the target entity, using the callback URL defined in the config as a target. WebhookEndpointDirect WebhookEndpointType = "direct" // WebhookEndpointTunnel instructs garm that it should attempt to create a webhook // in the target entity, using the tunnel URL as a base for the webhook URL. // This is defined for future use. WebhookEndpointTunnel WebhookEndpointType = "tunnel" )
type WorkflowJob ¶
type WorkflowJob struct {
Action string `json:"action"`
WorkflowJob struct {
ID int64 `json:"id"`
RunID int64 `json:"run_id"`
RunURL string `json:"run_url"`
RunAttempt int64 `json:"run_attempt"`
NodeID string `json:"node_id"`
HeadSha string `json:"head_sha"`
URL string `json:"url"`
HTMLURL string `json:"html_url"`
Status string `json:"status"`
Conclusion string `json:"conclusion"`
StartedAt time.Time `json:"started_at"`
CompletedAt time.Time `json:"completed_at"`
Name string `json:"name"`
Steps []struct {
Name string `json:"name"`
Status string `json:"status"`
Conclusion string `json:"conclusion"`
Number int64 `json:"number"`
StartedAt time.Time `json:"started_at"`
CompletedAt time.Time `json:"completed_at"`
} `json:"steps"`
CheckRunURL string `json:"check_run_url"`
Labels []string `json:"labels"`
RunnerID int64 `json:"runner_id"`
RunnerName string `json:"runner_name"`
RunnerGroupID int64 `json:"runner_group_id"`
RunnerGroupName string `json:"runner_group_name"`
} `json:"workflow_job"`
Repository struct {
ID int64 `json:"id"`
NodeID string `json:"node_id"`
Name string `json:"name"`
FullName string `json:"full_name"`
Private bool `json:"private"`
Owner struct {
Login string `json:"login"`
ID int64 `json:"id"`
NodeID string `json:"node_id"`
AvatarURL string `json:"avatar_url"`
GravatarID string `json:"gravatar_id"`
URL string `json:"url"`
HTMLURL string `json:"html_url"`
FollowersURL string `json:"followers_url"`
FollowingURL string `json:"following_url"`
GistsURL string `json:"gists_url"`
StarredURL string `json:"starred_url"`
SubscriptionsURL string `json:"subscriptions_url"`
OrganizationsURL string `json:"organizations_url"`
ReposURL string `json:"repos_url"`
EventsURL string `json:"events_url"`
ReceivedEventsURL string `json:"received_events_url"`
Type string `json:"type"`
SiteAdmin bool `json:"site_admin"`
} `json:"owner"`
HTMLURL string `json:"html_url"`
Description string `json:"description"`
Fork bool `json:"fork"`
URL string `json:"url"`
ForksURL string `json:"forks_url"`
KeysURL string `json:"keys_url"`
CollaboratorsURL string `json:"collaborators_url"`
TeamsURL string `json:"teams_url"`
HooksURL string `json:"hooks_url"`
IssueEventsURL string `json:"issue_events_url"`
EventsURL string `json:"events_url"`
AssigneesURL string `json:"assignees_url"`
BranchesURL string `json:"branches_url"`
TagsURL string `json:"tags_url"`
BlobsURL string `json:"blobs_url"`
GitTagsURL string `json:"git_tags_url"`
GitRefsURL string `json:"git_refs_url"`
TreesURL string `json:"trees_url"`
StatusesURL string `json:"statuses_url"`
LanguagesURL string `json:"languages_url"`
StargazersURL string `json:"stargazers_url"`
ContributorsURL string `json:"contributors_url"`
SubscribersURL string `json:"subscribers_url"`
SubscriptionURL string `json:"subscription_url"`
CommitsURL string `json:"commits_url"`
GitCommitsURL string `json:"git_commits_url"`
CommentsURL string `json:"comments_url"`
IssueCommentURL string `json:"issue_comment_url"`
ContentsURL string `json:"contents_url"`
CompareURL string `json:"compare_url"`
MergesURL string `json:"merges_url"`
ArchiveURL string `json:"archive_url"`
DownloadsURL string `json:"downloads_url"`
IssuesURL string `json:"issues_url"`
PullsURL string `json:"pulls_url"`
MilestonesURL string `json:"milestones_url"`
NotificationsURL string `json:"notifications_url"`
LabelsURL string `json:"labels_url"`
ReleasesURL string `json:"releases_url"`
DeploymentsURL string `json:"deployments_url"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
PushedAt time.Time `json:"pushed_at"`
GitURL string `json:"git_url"`
SSHURL string `json:"ssh_url"`
CloneURL string `json:"clone_url"`
SvnURL string `json:"svn_url"`
Homepage *string `json:"homepage"`
Size int64 `json:"size"`
StargazersCount int64 `json:"stargazers_count"`
WatchersCount int64 `json:"watchers_count"`
Language *string `json:"language"`
HasIssues bool `json:"has_issues"`
HasProjects bool `json:"has_projects"`
HasDownloads bool `json:"has_downloads"`
HasWiki bool `json:"has_wiki"`
HasPages bool `json:"has_pages"`
ForksCount int64 `json:"forks_count"`
MirrorURL *string `json:"mirror_url"`
Archived bool `json:"archived"`
Disabled bool `json:"disabled"`
OpenIssuesCount int64 `json:"open_issues_count"`
License struct {
Key string `json:"key"`
Name string `json:"name"`
SpdxID string `json:"spdx_id"`
URL string `json:"url"`
NodeID string `json:"node_id"`
} `json:"license"`
AllowForking bool `json:"allow_forking"`
IsTemplate bool `json:"is_template"`
// Topics []interface{} `json:"topics"`
Visibility string `json:"visibility"`
Forks int64 `json:"forks"`
OpenIssues int64 `json:"open_issues"`
Watchers int64 `json:"watchers"`
DefaultBranch string `json:"default_branch"`
} `json:"repository"`
Organization struct {
Login string `json:"login"`
// Name is a gitea specific field
Name string `json:"name"`
ID int64 `json:"id"`
NodeID string `json:"node_id"`
URL string `json:"url"`
ReposURL string `json:"repos_url"`
EventsURL string `json:"events_url"`
HooksURL string `json:"hooks_url"`
IssuesURL string `json:"issues_url"`
MembersURL string `json:"members_url"`
PublicMembersURL string `json:"public_members_url"`
AvatarURL string `json:"avatar_url"`
Description string `json:"description"`
} `json:"organization"`
Enterprise struct {
ID int64 `json:"id"`
Slug string `json:"slug"`
Name string `json:"name"`
NodeID string `json:"node_id"`
AvatarURL string `json:"avatar_url"`
// Description interface{} `json:"description"`
// WebsiteURL interface{} `json:"website_url"`
HTMLURL string `json:"html_url"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
} `json:"enterprise"`
Sender struct {
Login string `json:"login"`
ID int64 `json:"id"`
NodeID string `json:"node_id"`
AvatarURL string `json:"avatar_url"`
GravatarID string `json:"gravatar_id"`
URL string `json:"url"`
HTMLURL string `json:"html_url"`
FollowersURL string `json:"followers_url"`
FollowingURL string `json:"following_url"`
GistsURL string `json:"gists_url"`
StarredURL string `json:"starred_url"`
SubscriptionsURL string `json:"subscriptions_url"`
OrganizationsURL string `json:"organizations_url"`
ReposURL string `json:"repos_url"`
EventsURL string `json:"events_url"`
ReceivedEventsURL string `json:"received_events_url"`
Type string `json:"type"`
SiteAdmin bool `json:"site_admin"`
} `json:"sender"`
}
WorkflowJob holds the payload sent by github when a workload_job is sent.
func (WorkflowJob) GetOrgName ¶
func (w WorkflowJob) GetOrgName(forgeType EndpointType) string