# Task Drivers

Task Drivers are Go programs that facilitate the compilation of code, the execution of tests, and
other actions as a part of our Continuous Integration system.

They run a series of steps and store logs in such a way that they can be viewed in a logical manner.

## Task Driver Server

The purpose of ./go/task-driver-server is to ingest logs from the execution of task drivers and
to present those collected logs.

When running, a task driver will stream logs and step metadata to both stdout to
[Stack Driver Logging](https://cloud.google.com/logging). There is a
[sink](https://cloud.google.com/logging/docs/export/configure_export_v2) set up that will forward
these logs to [Pub/Sub](https://cloud.google.com/pubsub/docs/overview) [1]. This server subscribes
to the Pub/Sub topic [2] and processes the metadata by storing it to BigTable.

See [the design doc for more details](https://docs.google.com/document/d/1BqbHKD2TWthA0XhidCxriqIWzutRGgc0qxbfRgSDijs/edit)

1.  The sink is called `task-driver-logs-to-pubsub`.
    [cloud console](https://console.cloud.google.com/logs/router?project=skia-swarming-bots)
2.  The topic is called `projects/skia-swarming-bots/topics/task-driver-logs`
    [cloud console](https://console.cloud.google.com/cloudpubsub/topic/detail/task-driver-logs?project=skia-swarming-bots)
