data "google_compute_image" "runner_image" { # Aspect's GCP aspect-workflows-images project provides public Aspect Workflows GCP images for # getting started during the trial period. We recommend that all Workflows users build their own # GCP images and keep up-to date with patches. See # https://docs.aspect.build/v/workflows/install/packer for more info and/or # https://github.com/aspect-build/workflows-images for example packer scripts and BUILD targets # for building GCP images for Workflows. project = "aspect-workflows-images" name = "aspect-workflows-debian-11-minimal-amd64-1-6-0" } module "aspect_workflows" { # Project & region configuration. This is optional. Alternately, you may configure a global # provider project & region and the Workflows module will default to that. project = local.project region = local.region # Aspect Workflows terraform module source = "https://s3.us-east-2.amazonaws.com/static.aspect.build/aspect/5.9.0-rc.15/workflows-gcp/terraform-gcp-aspect-workflows.zip" # Network properties network = google_compute_network.workflows_network.id subnetwork = google_compute_subnetwork.workflows_subnet.id # Number of nodes & machine type in the kubernetes cluster where the remote cache & observability # services run. k8s_cluster = { # Kubernetes cluster on this deploymemt is tuned for cost. A high-performance deployment should # use a minimum of e2-standard-2 and multiple nodes so that the cache can be sharded. node_count = 1 machine_type = "e2-medium" } # Delivery properties delivery_enabled = true # Remote cache properties remote = { # Kubernetes cluster on this deploymemt is tuned for cost. A high-performance deployment should # use a use multiple cache shards. cache_shards = 1 cache_size_gb = 384 load_balancer_replicas = 1 replicate_cache = false } # CI properties hosts = ["cci"] # Warming set definitions warming_sets = { default = {} } # Resource types for use by runner groups. Aspect recommends machines types that have SSD drives # for large Bazel workflows. See # https://cloud.google.com/compute/docs/machine-resource#machine_type_comparison for list of # machine types availble on GCP. resource_types = { default = { machine_type = "n1-standard-4" image_id = data.google_compute_image.runner_image.id } small = { machine_type = "e2-small" num_ssds = 0 image_id = data.google_compute_image.runner_image.id } micro = { machine_type = "e2-micro" num_ssds = 0 image_id = data.google_compute_image.runner_image.id } } # CircleCI runner group definitions cci_runner_groups = { # The default runner group is use for the main build & test workflows. default = { agent_idle_timeout_min = 1 max_runners = 10 min_runners = 0 resource_type = "default" scaling_polling_frequency = 3 # check for queued jobs every 20s warming = true } small = { agent_idle_timeout_min = 1 max_runners = 10 min_runners = 0 resource_type = "small" scaling_polling_frequency = 3 # check for queued jobs every 20s warming = false # don't warm for faster bootstrap; these runners won't be running large builds } micro = { agent_idle_timeout_min = 60 * 12 max_runners = 10 min_runners = 0 resource_type = "micro" scaling_polling_frequency = 3 # check for queued jobs every 20s warming = false # don't warm for faster bootstrap; these runners won't be running large builds } # The warming runner group is used for the periodic warming job that creates # warming archives for use by other runner groups. warming = { agent_idle_timeout_min = 1 max_runners = 1 min_runners = 0 resource_type = "default" } } # This varies by each customer. This one is dedicated to bazel-lib. pagerduty_integration_key = "23a940f08d58430fc012ef9bb3fed2e0" }