{"id":19420132,"url":"https://github.com/einride/cloudrunner-go","last_synced_at":"2026-04-02T21:13:37.776Z","repository":{"id":37855862,"uuid":"384952553","full_name":"einride/cloudrunner-go","owner":"einride","description":"☁️🏃 Get up and running with Go on Google Cloud.","archived":false,"fork":false,"pushed_at":"2024-04-22T11:40:43.000Z","size":552,"stargazers_count":44,"open_issues_count":1,"forks_count":2,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-22T12:53:43.565Z","etag":null,"topics":["cloud-functions","cloud-run","go","golang","google-cloud","google-cloud-platform","grpc","microservices","protobuf"],"latest_commit_sha":null,"homepage":"https://pkg.go.dev/go.einride.tech/cloudrunner","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/einride.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-11T13:16:45.000Z","updated_at":"2024-04-29T16:55:14.444Z","dependencies_parsed_at":"2023-02-19T09:05:26.171Z","dependency_job_id":"b85ee6ff-2af7-49e5-a09a-483470ebb8a7","html_url":"https://github.com/einride/cloudrunner-go","commit_stats":{"total_commits":354,"total_committers":22,"mean_commits":16.09090909090909,"dds":"0.38700564971751417","last_synced_commit":"53cea5eb0fedf180a04807ff5e26773183ea7a34"},"previous_names":["einride/cloudrunner"],"tags_count":95,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/einride%2Fcloudrunner-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/einride%2Fcloudrunner-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/einride%2Fcloudrunner-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/einride%2Fcloudrunner-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/einride","download_url":"https://codeload.github.com/einride/cloudrunner-go/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250643492,"owners_count":21464186,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cloud-functions","cloud-run","go","golang","google-cloud","google-cloud-platform","grpc","microservices","protobuf"],"created_at":"2024-11-10T13:21:20.206Z","updated_at":"2026-02-20T17:03:12.616Z","avatar_url":"https://github.com/einride.png","language":"Go","readme":"# Cloud Runner\n\nGet up and running with [Go](https://golang.org/) and [gRPC](https://grpc.io) on\n[Google Cloud Platform](https://cloud.google.com/), with this lightweight,\nopinionated, batteries-included service SDK.\n\n## Features\n\nRun your application with [`cloudrunner.Run`](./run.go), and you get:\n\n- Logging integrated with [Cloud Logging](https://cloud.google.com/logging)\n  using [Zap](https://go.uber.org/zap).\n- Tracing integrated with [Cloud Trace](https://cloud.google.com/trace)\n  using[OpenTelemetry Go](https://go.opentelemetry.io/otel).\n- Metrics integrated with\n  [Cloud Monitoring](https://cloud.google.com/monitoring)\n  using[OpenTelemetry Go](https://go.opentelemetry.io/otel).\n- Profiling integrated with [Cloud Profiler](https://cloud.google.com/profiler)\n  using the [Google Cloud Go SDK](https://cloud.google.com/go).\n\nTo help you build gRPC microservices, you also get:\n\n- Server-to-server authentication, client retries, and more for gRPC clients\n  with [`cloudrunner.DialService`](./dialservice.go).\n- Request logging, tracing, and more, for gRPC servers\n  with[`cloudrunner.NewGRPCServer`](./grpcserver.go).\n\n## Get up and running\n\nInstall the package:\n\n```bash\n$ go get go.einride.tech/cloudrunner\n```\n\nTry out a minimal example:\n\n```go\npackage main\n\nimport (\n\t\"context\"\n\t\"log\"\n\n\t\"go.einride.tech/cloudrunner\"\n\t\"google.golang.org/grpc/health\"\n\t\"google.golang.org/grpc/health/grpc_health_v1\"\n)\n\nfunc main() {\n\tif err := cloudrunner.Run(func(ctx context.Context) error {\n\t\tcloudrunner.Logger(ctx).Info(\"hello world\")\n\t\tgrpcServer := cloudrunner.NewGRPCServer(ctx)\n\t\thealthServer := health.NewServer()\n\t\tgrpc_health_v1.RegisterHealthServer(grpcServer, healthServer)\n\t\treturn cloudrunner.ListenGRPC(ctx, grpcServer)\n\t}); err != nil {\n\t\tlog.Fatal(err)\n\t}\n}\n```\n\n## Configuration\n\nThe service is configured with environment variables.\n\nWhen the service is running\n[on GCE](https://pkg.go.dev/cloud.google.com/go/compute/metadata#OnGCE), all\nbuilt-in integrations are turned on by default.\n\n[Service-specific config](./options.go) is supported out of the box.\n\nInvoke your service with `-help` to show available configuration.\n\n\u003c!-- BEGIN usage --\u003e\n\n```\nUsage of grpc-server:\n\n  -config string\n    \tload environment from a YAML service specification\n  -help\n    \tshow help then exit\n  -validate\n    \tvalidate config then exit\n\nRuntime configuration of grpc-server:\n\nCONFIG         ENV                                      TYPE                         DEFAULT                ON GCE\ncloudrunner    PORT                                     int                          8080                   \ncloudrunner    K_SERVICE                                string                                              \ncloudrunner    K_REVISION                               string                                              \ncloudrunner    K_CONFIGURATION                          string                                              \ncloudrunner    CLOUD_RUN_JOB                            string                                              \ncloudrunner    CLOUD_RUN_EXECUTION                      string                                              \ncloudrunner    CLOUD_RUN_TASK_INDEX                     int                                                 \ncloudrunner    CLOUD_RUN_TASK_ATTEMPT                   int                                                 \ncloudrunner    CLOUD_RUN_TASK_COUNT                     int                                                 \ncloudrunner    GOOGLE_CLOUD_PROJECT                     string                                              \ncloudrunner    RUNTIME_SERVICEACCOUNT                   string                                              \ncloudrunner    SERVICE_VERSION                          string                                              \ncloudrunner    ENABLE_PUBSUB_TRACING                    bool                                                \ncloudrunner    LOGGER_DEVELOPMENT                       bool                         true                   false\ncloudrunner    LOGGER_LEVEL                             zapcore.Level                debug                  info\ncloudrunner    LOGGER_REPORTERRORS                      bool                                                true\ncloudrunner    PROFILER_ENABLED                         bool                                                true\ncloudrunner    PROFILER_MUTEXPROFILING                  bool                                                \ncloudrunner    PROFILER_ALLOCFORCEGC                    bool                         true                   \ncloudrunner    TRACEEXPORTER_ENABLED                    bool                                                true\ncloudrunner    TRACEEXPORTER_TIMEOUT                    time.Duration                10s                    \ncloudrunner    TRACEEXPORTER_SAMPLEPROBABILITY          float64                      0.01                   \ncloudrunner    METRICEXPORTER_ENABLED                   bool                                                false\ncloudrunner    METRICEXPORTER_INTERVAL                  time.Duration                60s                    \ncloudrunner    METRICEXPORTER_RUNTIMEINSTRUMENTATION    bool                                                true\ncloudrunner    METRICEXPORTER_HOSTINSTRUMENTATION       bool                                                true\ncloudrunner    METRICEXPORTER_OPENCENSUSPRODUCER        bool                         false                  \ncloudrunner    METRICEXPORTER_DROPMETRICS               []string                                            \ncloudrunner    RESOURCE_ALLOWPARTIALRESOURCE            bool                                                \ncloudrunner    RESOURCE_ALLOWSCHEMAURLCONFLICT          bool                                                \ncloudrunner    SERVER_TIMEOUT                           time.Duration                290s                   \ncloudrunner    CLIENT_TIMEOUT                           time.Duration                10s                    \ncloudrunner    CLIENT_RETRY_ENABLED                     bool                         true                   \ncloudrunner    CLIENT_RETRY_INITIALBACKOFF              time.Duration                200ms                  \ncloudrunner    CLIENT_RETRY_MAXBACKOFF                  time.Duration                60s                    \ncloudrunner    CLIENT_RETRY_MAXATTEMPTS                 int                          5                      \ncloudrunner    CLIENT_RETRY_BACKOFFMULTIPLIER           float64                      2                      \ncloudrunner    CLIENT_RETRY_RETRYABLESTATUSCODES        []codes.Code                 Unavailable,Unknown    \ncloudrunner    REQUESTLOGGER_MESSAGESIZELIMIT           int                                                 1024\ncloudrunner    REQUESTLOGGER_CODETOLEVEL                map[codes.Code]slog.Level                           \ncloudrunner    REQUESTLOGGER_STATUSTOLEVEL              map[int]slog.Level                                  \n\nBuild-time configuration of grpc-server:\n\nLDFLAG                                                     TYPE      VALUE\ngo.einride.tech/cloudrunner/cloudruntime.serviceVersion    string\n```\n\n\u003c!-- END usage --\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feinride%2Fcloudrunner-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feinride%2Fcloudrunner-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feinride%2Fcloudrunner-go/lists"}