Documentation ¶
Overview ¶
Package buildenv contains definitions for the environments the Go build system can run in.
Index ¶
- Variables
- func CheckUserCredentials()
- func RegisterFlags()
- func RegisterStagingFlag()
- type Environment
- func (e Environment) ComputePrefix() string
- func (e Environment) Credentials(ctx context.Context) (*google.Credentials, error)
- func (e Environment) DashBase() string
- func (e Environment) IAPServiceID(backendServiceName string) string
- func (e Environment) RandomVMZone() string
- func (e Environment) SnapshotURL(builderType, rev string) string
- type KubeConfig
Constants ¶
This section is empty.
Variables ¶
var Development = &Environment{ GoProjectName: "golang-org", IsProd: false, StaticIP: "127.0.0.1", PerfDataURL: "http://localhost:8081", }
var LUCIProduction = &Environment{ ProjectName: "golang-ci-luci", ProjectNumber: 257595674695, IsProd: true, GomoteTransferBucket: "gomote-luci-transfer", }
var Production = &Environment{ ProjectName: "symbolic-datum-552", ProjectNumber: 872405196845, GoProjectName: "golang-org", IsProd: true, VMRegion: "us-central1", VMZones: []string{"us-central1-a", "us-central1-b", "us-central1-f"}, StaticIP: "107.178.219.46", KubeServices: KubeConfig{ Region: "us-central1", Name: "services", Namespace: "prod", }, DashURL: "https://build.golang.org/", PerfDataURL: "https://perfdata.golang.org", CoordinatorName: "farmer", BuildletBucket: "go-builder-data", LogBucket: "go-build-log", SnapBucket: "go-build-snap", COSServiceAccount: "linux-cos-builders@symbolic-datum-552.iam.gserviceaccount.com", AWSSecurityGroup: "go-builders", AWSRegion: "us-east-2", iapServiceIDs: map[string]string{ "coordinator-internal-iap": "7963570695201399464", "relui-internal": "155577380958854618", }, GomoteTransferBucket: "gomote-transfer", }
Production defines the environment that the coordinator and build infrastructure is deployed to for production usage at build.golang.org.
var Staging = &Environment{ ProjectName: "go-dashboard-dev", ProjectNumber: 302018677728, GoProjectName: "go-dashboard-dev", IsProd: true, VMRegion: "us-central1", VMZones: []string{"us-central1-a", "us-central1-b", "us-central1-c", "us-central1-f"}, StaticIP: "104.154.113.235", KubeServices: KubeConfig{ Zone: "us-central1-f", Region: "us-central1", Name: "go", Namespace: "default", }, DashURL: "https://build-staging.golang.org/", PerfDataURL: "https://perfdata.golang.org", CoordinatorName: "farmer", BuildletBucket: "dev-go-builder-data", LogBucket: "dev-go-build-log", SnapBucket: "dev-go-build-snap", COSServiceAccount: "linux-cos-builders@go-dashboard-dev.iam.gserviceaccount.com", AWSSecurityGroup: "staging-go-builders", AWSRegion: "us-east-1", iapServiceIDs: map[string]string{}, }
Staging defines the environment that the coordinator and build infrastructure is deployed to before it is released to production. For local dev, override the project with the program's flag to set a custom project.
Functions ¶
func CheckUserCredentials ¶
func CheckUserCredentials()
CheckUserCredentials warns if the gcloud Application Default Credentials file doesn't exist and says how to log in properly.
func RegisterFlags ¶
func RegisterFlags()
RegisterFlags registers the "staging" and "localdev" flags.
func RegisterStagingFlag ¶
func RegisterStagingFlag()
RegisterStagingFlag registers the "staging" flag.
Types ¶
type Environment ¶
type Environment struct { // The GCP project name that the build infrastructure will be provisioned in. // This field may be overridden as necessary without impacting other fields. ProjectName string // ProjectNumber is the GCP build infrastructure project's number, as visible // in the admin console. This is used for things such as constructing the // "email" of the default service account. ProjectNumber int64 // The GCP project name for the Go project, where build status is stored. // This field may be overridden as necessary without impacting other fields. GoProjectName string // The IsProd flag indicates whether production functionality should be // enabled. When true, GCE and Kubernetes builders are enabled and the // coordinator serves on 443. Otherwise, GCE and Kubernetes builders are // disabled and the coordinator serves on 8119. IsProd bool // VMRegion is the region we deploy build VMs to. VMRegion string // VMZones are the GCE zones that the VMs will be deployed to. These // GCE zones will be periodically cleaned by deleting old VMs. The zones // should all exist within VMRegion. VMZones []string // StaticIP is the public, static IP address that will be attached to the // coordinator instance. The zero value means the address will be looked // up by name. This field is optional. StaticIP string // KubeServices is the cluster that runs the coordinator and other services. KubeServices KubeConfig // DashURL is the base URL of the build dashboard, ending in a slash. DashURL string // PerfDataURL is the base URL of the benchmark storage server. PerfDataURL string // CoordinatorName is the hostname of the coordinator instance. CoordinatorName string // BuildletBucket is the GCS bucket that stores buildlet binaries. // TODO: rename. this is not just for buildlets; also for bootstrap. BuildletBucket string // LogBucket is the GCS bucket to which logs are written. LogBucket string // SnapBucket is the GCS bucket to which snapshots of // completed builds (after make.bash, before tests) are // written. SnapBucket string // MaxBuilds is the maximum number of concurrent builds that // can run. Zero means unlimited. This is typically only used // in a development or staging environment. MaxBuilds int // COSServiceAccount (Container Optimized OS) is the service // account that will be assigned to a VM instance that hosts // a container when the instance is created. COSServiceAccount string // AWSSecurityGroup is the security group name that any VM instance // created on EC2 should contain. These security groups are // collections of firewall rules to be applied to the VM. AWSSecurityGroup string // AWSRegion is the region where AWS resources are deployed. AWSRegion string // GomoteTransferBucket is the bucket used by the gomote GRPC service // to transfer files between gomote clients and the gomote instances. GomoteTransferBucket string // contains filtered or unexported fields }
Environment describes the configuration of the infrastructure for a coordinator and its buildlet resources running on Google Cloud Platform. Staging and Production are the two common build environments.
func ByProjectID ¶
func ByProjectID(projectID string) *Environment
ByProjectID returns an Environment for the specified project ID. It is currently limited to the symbolic-datum-552 and go-dashboard-dev projects. ByProjectID will panic if the project ID is not known.
func FromFlags ¶
func FromFlags() *Environment
FromFlags returns the build environment specified from flags, as registered by RegisterFlags or RegisterStagingFlag. By default it returns the production environment.
func (Environment) ComputePrefix ¶
func (e Environment) ComputePrefix() string
ComputePrefix returns the URI prefix for Compute Engine resources in a project.
func (Environment) Credentials ¶
func (e Environment) Credentials(ctx context.Context) (*google.Credentials, error)
Credentials returns the credentials required to access the GCP environment with the necessary scopes.
func (Environment) DashBase ¶
func (e Environment) DashBase() string
DashBase returns the base URL of the build dashboard, ending in a slash.
func (Environment) IAPServiceID ¶
func (e Environment) IAPServiceID(backendServiceName string) string
IAPServiceID returns the service id for the backend service. If a path does not exist for a backend, the service id will be an empty string.
func (Environment) RandomVMZone ¶
func (e Environment) RandomVMZone() string
RandomVMZone returns a randomly selected zone from the zones in VMZones.
func (Environment) SnapshotURL ¶
func (e Environment) SnapshotURL(builderType, rev string) string
SnapshotURL returns the absolute URL of the .tar.gz containing a built Go tree for the builderType and Go rev (40 character Git commit hash). The tarball is suitable for passing to (buildlet.Client).PutTarFromURL.
type KubeConfig ¶
type KubeConfig struct { // The zone of the cluster. Autopilot clusters have no single zone. Zone string // The region of the cluster. Region string // Name is the name of the Kubernetes cluster that will be used. Name string // Namespace is the Kubernetes namespace to use within the cluster. Namespace string }
KubeConfig describes the configuration of a Kubernetes cluster.
func (KubeConfig) Location ¶
func (kc KubeConfig) Location() string
Location returns the zone or if unset, the region of the cluster. This is the string to use as the "zone" of the cluster when connecting to it with kubectl.