Documentation ¶
Overview ¶
Package buildgo provides tools for pushing and building the Go distribution on buildlets.
Index ¶
- Variables
- func FetchSubrepo(ctx context.Context, sl spanlog.Logger, bc *buildlet.Client, ...) error
- func VersionTgz(rev string) io.Reader
- type BenchmarkItem
- type BuilderRev
- func (br BuilderRev) IsSubrepo() bool
- func (br BuilderRev) RepoOrGo() string
- func (br *BuilderRev) SnapshotExists(ctx context.Context, buildEnv *buildenv.Environment) bool
- func (br *BuilderRev) SnapshotObjectName() string
- func (br *BuilderRev) SnapshotURL(buildEnv *buildenv.Environment) string
- func (br BuilderRev) SubRevOrGoRev() string
- type Client
- type GoBuilder
Constants ¶
This section is empty.
Variables ¶
var TestHookSnapshotExists func(*BuilderRev) bool
Functions ¶
func FetchSubrepo ¶
func FetchSubrepo(ctx context.Context, sl spanlog.Logger, bc *buildlet.Client, repo, rev, importPath string) error
FetchSubrepo checks out the go.googlesource.com repository repo (for example, "net" or "oauth2") at git revision rev, and places it into the buildlet's GOPATH workspace at $GOPATH/src/<importPath>.
The GOPATH workspace is assumed to be the "gopath" directory in the buildlet's work directory.
func VersionTgz ¶
VersionTgz returns an io.Reader of a *.tar.gz file containing only a VERSION file containing the contents of the provided rev string.
Types ¶
type BenchmarkItem ¶
type BenchmarkItem struct { Output []string // benchmark output for each commit // contains filtered or unexported fields }
BenchmarkItem represents a single package's benchmarks, to be run on one or more commit. After Run is called, the output of each commit can be retrieved from the Output field.
func (*BenchmarkItem) Name ¶
func (b *BenchmarkItem) Name() string
Name returns a string that uniquely identifies this benchmark.
func (*BenchmarkItem) Run ¶
func (b *BenchmarkItem) Run(ctx context.Context, buildEnv *buildenv.Environment, sl spanlog.Logger, conf *dashboard.BuildConfig, bc *buildlet.Client, w io.Writer, revs []BuilderRev) (remoteErr, err error)
Run runs all the iterations of this benchmark on bc. Build output is sent to w. Benchmark output is stored in b.output. revs must contain exactly two revs. The first rev is assumed to be present in "go", and the second will be placed into "go-parent". TODO(quentin): Support len(revs) != 2.
type BuilderRev ¶
type BuilderRev struct { Name string // e.g. "linux-amd64-race" Rev string // lowercase hex core repo git hash // optional sub-repository details (both must be present) SubName string // e.g. "net" SubRev string // lowercase hex sub-repo git hash }
BuilderRev is a build configuration type and a revision.
func (BuilderRev) IsSubrepo ¶
func (br BuilderRev) IsSubrepo() bool
func (BuilderRev) RepoOrGo ¶
func (br BuilderRev) RepoOrGo() string
func (*BuilderRev) SnapshotExists ¶
func (br *BuilderRev) SnapshotExists(ctx context.Context, buildEnv *buildenv.Environment) bool
snapshotExists reports whether the snapshot exists in storage. It returns potentially false negatives on network errors. Callers must not depend on this as more than an optimization.
func (*BuilderRev) SnapshotObjectName ¶
func (br *BuilderRev) SnapshotObjectName() string
SnapshotObjectName is the cloud storage object name of the built Go tree for this builder and Go rev (not the sub-repo). The entries inside this tarball do not begin with "go/".
func (*BuilderRev) SnapshotURL ¶
func (br *BuilderRev) SnapshotURL(buildEnv *buildenv.Environment) string
SnapshotURL is the absolute URL of the snapshot object (see above).
func (BuilderRev) SubRevOrGoRev ¶
func (br BuilderRev) SubRevOrGoRev() string
type Client ¶
type Client struct { Env *buildenv.Environment // generally Production or Staging Creds *google.Credentials Client *http.Client // OAuth2 client Verbose bool // enable extra debug logging // contains filtered or unexported fields }
Client is an authenticated client to the Go build system.
func NewClient ¶
NewClient returns a new client for using the Go build system in the provided environment. The authentication information is discovered using env.Credentials.
func (*Client) AwaitOp ¶
AwaitOp waits for op to finish. It returns nil if the operating finished successfully.
func (*Client) MakeBasepinDisks ¶
MakeBasepinDisks looks at the list of all the project's VM images and creates (if needed) a disk for each one, named with the prefix "basepin-". The purpose of these "basepin" disks is to speed up GCE VM creations. When GCE creates a new disk for a new VM, it takes a fast path when creating the disk if there's another disk in the same zone for that image, and makes the new disk a thin Copy-on-Write shadow over the basepin disk. GCE also does this if there's been a VM created within the past N minutes of that type, but we want VMs to always create quickly.
type GoBuilder ¶
type GoBuilder struct { spanlog.Logger BuilderRev Conf *dashboard.BuildConfig // Goroot is a Unix-style path relative to the work directory of the builder (e.g. "go"). Goroot string }
A GoBuilder knows how to build a revision of Go with the given configuration.
func (GoBuilder) EnumerateBenchmarks ¶
func (gb GoBuilder) EnumerateBenchmarks(ctx context.Context, bc *buildlet.Client, benchmarksRev string, pkgs []string) ([]*BenchmarkItem, error)
EnumerateBenchmarks returns a slice of the benchmarks to be run for the built Go distribution found in gb.Goroot. If benchmarksRev is non-empty, it is the revision of x/benchmarks to check out for additional benchmarks. pkgs contains a list of possibly duplicate packages that will be searched for benchmarks.
func (GoBuilder) RunMake ¶
func (gb GoBuilder) RunMake(ctx context.Context, bc *buildlet.Client, w io.Writer) (remoteErr, err error)
RunMake builds the tool chain. goroot is relative to the workdir with forward slashes. w is the Writer to send build output to. remoteErr and err are as described at the top of this file.