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.
runner-go/client/client.go

96 lines
3.0 KiB
Go

// Copyright 2019 Drone.IO Inc. All rights reserved.
// Use of this source code is governed by the Polyform License
// that can be found in the LICENSE file.
// Package client provides a client for using the runner API.
package client
import (
"context"
"errors"
"git.awesome-for.me/liuzhiguo/drone-go/drone"
)
// V1 is version 1 of the runner API
const V1 = "application/vnd.drone.runner.v1+json"
// ErrOptimisticLock is returned by if the struct being
// modified has a Version field and the value is not equal
// to the current value in the database
var ErrOptimisticLock = errors.New("Optimistic Lock Error")
type (
// Filter is used to filter the builds that are pulled
// from the queue.
Filter struct {
Kind string `json:"kind"`
Type string `json:"type"`
OS string `json:"os"`
Arch string `json:"arch"`
Variant string `json:"variant"`
Kernel string `json:"kernel"`
Labels map[string]string `json:"labels,omitempty"`
}
// File represents a file from the version control
// repository. It is used by the runner to provide the
// yaml configuration file to the runner.
File struct {
Data []byte
Hash []byte
}
// Context provides the runner with the build context and
// includes all environment data required to execute the
// build.
Context struct {
Build *drone.Build `json:"build"`
Stage *drone.Stage `json:"stage"`
Config *File `json:"config"`
Netrc *drone.Netrc `json:"netrc"`
Repo *drone.Repo `json:"repository"`
Secrets []*drone.Secret `json:"secrets"`
System *drone.System `json:"system"`
}
)
// A Client manages communication with the runner.
type Client interface {
// Join notifies the server the runner is joining the cluster.
Join(ctx context.Context, machine string) error
// Leave notifies the server the runner is leaving the cluster.
Leave(ctx context.Context, machine string) error
// Ping sends a ping message to the server to test connectivity.
Ping(ctx context.Context, machine string) error
// Request requests the next available build stage for execution.
Request(ctx context.Context, args *Filter) (*drone.Stage, error)
// Accept accepts the build stage for execution.
Accept(ctx context.Context, stage *drone.Stage) error
// Detail gets the build stage details for execution.
Detail(ctx context.Context, stage *drone.Stage) (*Context, error)
// Update updates the build stage.
Update(ctxt context.Context, step *drone.Stage) error
// UpdateStep updates the build step.
UpdateStep(ctx context.Context, stage *drone.Step) error
// Watch watches for build cancellation requests.
Watch(ctx context.Context, stage int64) (bool, error)
// Batch batch writes logs to the build logs.
Batch(ctx context.Context, step int64, lines []*drone.Line) error
// Upload uploads the full logs to the server.
Upload(ctx context.Context, step int64, lines []*drone.Line) error
// UploadCard uploads a card to drone server.
UploadCard(ctx context.Context, step int64, card *drone.CardInput) error
}