Documentation ¶
Index ¶
- Constants
- type CompositeContentProvider
- type Config
- type ContentProvider
- type FileProvider
- type LocalContentProvider
- type NoopRepositoryProvider
- func (NoopRepositoryProvider) ContentProvider(ctx context.Context, repo *v1.Repository, paths ...string) (ContentProvider, error)
- func (NoopRepositoryProvider) FileProvider(ctx context.Context, repo *v1.Repository) (FileProvider, error)
- func (NoopRepositoryProvider) RemoteAnnotations(ctx context.Context, repo *v1.Repository) (annotations map[string]string, err error)
- func (NoopRepositoryProvider) Resolve(ctx context.Context, repo *v1.Repository) error
- type RepositoryProvider
- type Service
- func (srv *Service) GetJob(ctx context.Context, req *v1.GetJobRequest) (resp *v1.GetJobResponse, err error)
- func (srv *Service) ListJobs(ctx context.Context, req *v1.ListJobsRequest) (resp *v1.ListJobsResponse, err error)
- func (srv *Service) Listen(req *v1.ListenRequest, ls v1.PiroService_ListenServer) error
- func (srv *Service) RegisterPrometheusMetrics(reg prometheus.Registerer)
- func (srv *Service) RunJob(ctx context.Context, name string, metadata v1.JobMetadata, spec v1.JobSpec, ...) (status *v1.JobStatus, err error)
- func (srv *Service) Start() error
- func (srv *Service) StartFromPreviousJob(ctx context.Context, req *v1.StartFromPreviousJobRequest) (*v1.StartJobResponse, error)
- func (srv *Service) StartGitHubJob(ctx context.Context, req *v1.StartGitHubJobRequest) (resp *v1.StartJobResponse, err error)
- func (srv *Service) StartJob(ctx context.Context, req *v1.StartJobRequest) (resp *v1.StartJobResponse, err error)
- func (srv *Service) StartJob2(ctx context.Context, req *v1.StartJobRequest2) (resp *v1.StartJobResponse, err error)
- func (srv *Service) StartLocalJob(inc v1.PiroService_StartLocalJobServer) error
- func (srv *Service) StopJob(ctx context.Context, req *v1.StopJobRequest) (*v1.StopJobResponse, error)
- func (srv *Service) Subscribe(req *v1.SubscribeRequest, resp v1.PiroService_SubscribeServer) (err error)
- type SideloadingContentProvider
- type UIService
Constants ¶
const (
// PathPiroConfig is the path relative to the repo root where we expect to find the Piro config YAML
PathPiroConfig = ".piro/config.yaml"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CompositeContentProvider ¶
type CompositeContentProvider []ContentProvider
func (CompositeContentProvider) InitContainer ¶
func (c CompositeContentProvider) InitContainer() ([]corev1.Container, error)
InitContainer builds the container that will initialize the job content. The VolumeMount for /workspace is added by the caller. Name and ImagePullPolicy will be overwriten.
func (CompositeContentProvider) Serve ¶
func (c CompositeContentProvider) Serve(jobName string) error
Serve provides additional services required during initialization. This function is expected to return immediately.
type Config ¶
type Config struct { // BaseURL is the URL this service is available on (e.g. https://piro.some-domain.com) BaseURL string `yaml:"baseURL,omitempty"` // WorkspaceNodePathPrefix is the location on the node where we place the builds WorkspaceNodePathPrefix string `yaml:"workspaceNodePathPrefix,omitempty"` // CleanupJobSpec is a podspec YAML which forms the basis for cleanup jobs. // Can be empty, in which clean up jobs will use a default. CleanupJobSpec *configPodSpec `yaml:"cleanupJobSpec,omitempty"` // GCOlderThan enables the garbage collector which collects all jobs and // logs older than the configured duration. GCOlderThan *executor.Duration `yaml:"gcOlderThan,omitempty"` // Enables the webui debug proxy pointing to this address DebugProxy string }
Config configures the behaviour of the service
type ContentProvider ¶
type ContentProvider interface { // InitContainer builds the container that will initialize the job content. // The VolumeMount for /workspace is added by the caller. // Name and ImagePullPolicy will be overwriten. InitContainer() ([]corev1.Container, error) // Serve provides additional services required during initialization. // This function is expected to return immediately. Serve(jobName string) error }
ContentProvider provides access to job workspace content
type FileProvider ¶
type FileProvider interface { // Download provides access to a single file Download(ctx context.Context, path string) (io.ReadCloser, error) // ListFiles lists all files in a directory. If path is not a directory // an error may be returned or just an empty list of paths. The paths returned // are all relative to the repo root. ListFiles(ctx context.Context, path string) (paths []string, err error) }
FileProvider provides access to a single file
type LocalContentProvider ¶
type LocalContentProvider struct { TarStream io.Reader Namespace string Kubeconfig *rest.Config Clientset kubernetes.Interface }
LocalContentProvider provides access to local files
func (*LocalContentProvider) InitContainer ¶
func (lcp *LocalContentProvider) InitContainer() ([]corev1.Container, error)
InitContainer builds the container that will initialize the job content.
func (*LocalContentProvider) Serve ¶
func (lcp *LocalContentProvider) Serve(jobName string) error
Serve provides additional services required during initialization.
type NoopRepositoryProvider ¶
type NoopRepositoryProvider struct{}
NoopRepositoryProvider provides no access to no repository
func (NoopRepositoryProvider) ContentProvider ¶
func (NoopRepositoryProvider) ContentProvider(ctx context.Context, repo *v1.Repository, paths ...string) (ContentProvider, error)
ContentProvider produces a content provider for a particular repo
func (NoopRepositoryProvider) FileProvider ¶
func (NoopRepositoryProvider) FileProvider(ctx context.Context, repo *v1.Repository) (FileProvider, error)
FileProvider provides direct access to repository content
func (NoopRepositoryProvider) RemoteAnnotations ¶
func (NoopRepositoryProvider) RemoteAnnotations(ctx context.Context, repo *v1.Repository) (annotations map[string]string, err error)
RemoteAnnotations extracts Piro annotations form information associated with a particular commit, e.g. the commit message, PRs or merge requests. Implementors can expect the revision of the repo object to be set.
func (NoopRepositoryProvider) Resolve ¶
func (NoopRepositoryProvider) Resolve(ctx context.Context, repo *v1.Repository) error
Resolve resolves the repo's revision based on its ref(erence). If the revision is already set, this operation does nothing.
type RepositoryProvider ¶
type RepositoryProvider interface { // Resolve resolves the repo's revision based on its ref(erence). // If the revision is already set, this operation does nothing. Resolve(ctx context.Context, repo *v1.Repository) error // RemoteAnnotations extracts Piro annotations form information associated // with a particular commit, e.g. the commit message, PRs or merge requests. // Implementors can expect the revision of the repo object to be set. RemoteAnnotations(ctx context.Context, repo *v1.Repository) (annotations map[string]string, err error) // ContentProvider produces a content provider for a particular repo ContentProvider(ctx context.Context, repo *v1.Repository, path ...string) (ContentProvider, error) // FileProvider provides direct access to repository content FileProvider(ctx context.Context, repo *v1.Repository) (FileProvider, error) }
RepositoryProvider provides access to a repository
type Service ¶
type Service struct { v1.UnimplementedPiroServiceServer Logs store.Logs Jobs store.Jobs Groups store.NumberGroup Executor *executor.Executor Cutter logcutter.Cutter RepositoryProvider RepositoryProvider Config Config // contains filtered or unexported fields }
Service ties everything together
func (*Service) GetJob ¶
func (srv *Service) GetJob(ctx context.Context, req *v1.GetJobRequest) (resp *v1.GetJobResponse, err error)
GetJob returns the information about a particular job
func (*Service) ListJobs ¶
func (srv *Service) ListJobs(ctx context.Context, req *v1.ListJobsRequest) (resp *v1.ListJobsResponse, err error)
ListJobs lists jobs
func (*Service) Listen ¶
func (srv *Service) Listen(req *v1.ListenRequest, ls v1.PiroService_ListenServer) error
Listen listens to logs
func (*Service) RegisterPrometheusMetrics ¶
func (srv *Service) RegisterPrometheusMetrics(reg prometheus.Registerer)
RegisterPrometheusMetrics registers the service metrics on the registerer with MustRegister
func (*Service) RunJob ¶
func (srv *Service) RunJob(ctx context.Context, name string, metadata v1.JobMetadata, spec v1.JobSpec, cp ContentProvider, jobYAML []byte, canReplay bool) (status *v1.JobStatus, err error)
RunJob starts a build job from some context
func (*Service) Start ¶
Start sets up everything to run this Piro instance, including executor config
func (*Service) StartFromPreviousJob ¶
func (srv *Service) StartFromPreviousJob(ctx context.Context, req *v1.StartFromPreviousJobRequest) (*v1.StartJobResponse, error)
StartFromPreviousJob starts a new job based on an old one
func (*Service) StartGitHubJob ¶
func (srv *Service) StartGitHubJob(ctx context.Context, req *v1.StartGitHubJobRequest) (resp *v1.StartJobResponse, err error)
StartGitHubJob starts a job on a Git context, possibly with a custom job.
func (*Service) StartJob ¶
func (srv *Service) StartJob(ctx context.Context, req *v1.StartJobRequest) (resp *v1.StartJobResponse, err error)
StartJob starts a new job based on its specification.
func (*Service) StartJob2 ¶
func (srv *Service) StartJob2(ctx context.Context, req *v1.StartJobRequest2) (resp *v1.StartJobResponse, err error)
func (*Service) StartLocalJob ¶
func (srv *Service) StartLocalJob(inc v1.PiroService_StartLocalJobServer) error
StartLocalJob starts a job whoose content is uploaded
func (*Service) StopJob ¶
func (srv *Service) StopJob(ctx context.Context, req *v1.StopJobRequest) (*v1.StopJobResponse, error)
StopJob stops a running job
func (*Service) Subscribe ¶
func (srv *Service) Subscribe(req *v1.SubscribeRequest, resp v1.PiroService_SubscribeServer) (err error)
Subscribe listens to job updates
type SideloadingContentProvider ¶
type SideloadingContentProvider struct { TarStream io.Reader Namespace string Kubeconfig *rest.Config Clientset kubernetes.Interface }
SideloadingContentProvider first runs the delegate and then sideloads files
func (*SideloadingContentProvider) InitContainer ¶
func (s *SideloadingContentProvider) InitContainer() ([]corev1.Container, error)
InitContainer adds the sideload init container
func (*SideloadingContentProvider) Serve ¶
func (s *SideloadingContentProvider) Serve(jobName string) error
Serve serves the actual sideload
type UIService ¶
type UIService struct { v1.UnimplementedPiroUIServer RepositoryProvider RepositoryProvider Repos []string Readonly bool // contains filtered or unexported fields }
UIService implements api/v1/PiroUIServer
func NewUIService ¶
func NewUIService(repoprov RepositoryProvider, repos []string, readonly bool, updateInterval time.Duration) (*UIService, error)
NewUIService produces a new UI service and initializes its repo list
func (*UIService) IsReadOnly ¶
func (uis *UIService) IsReadOnly(context.Context, *v1.IsReadOnlyRequest) (*v1.IsReadOnlyResponse, error)
IsReadOnly returns true if the UI is readonly.
func (*UIService) ListJobSpecs ¶
func (uis *UIService) ListJobSpecs(req *v1.ListJobSpecsRequest, srv v1.PiroUI_ListJobSpecsServer) error
ListJobSpecs returns a list of jobs that can be started through the UI.