---
title: Embed Git Information in Go Build Artifacts
description: >-
  Embed Git information in Go build artifacts for containers, serverless, and
  host deployments.
breadcrumbs: >-
  Docs > Source Code Integration > Service Mapping for Source Code Integration >
  Embed Git Information in Go Build Artifacts
---

> For the complete documentation index, see [llms.txt](https://docs.datadoghq.com/llms.txt).

# Embed Git Information in Go Build Artifacts

## Overview{% #overview %}

To embed Git information in your Go build artifacts, follow the instructions for your deployment model: Containers, Serverless, or Host.

## Prerequisites{% #prerequisites %}

- [Datadog Agent](https://docs.datadoghq.com/agent.md) v7.35.0 or later is required.
- The Go client library version 1.48.0 or later is required.

## Containers{% #containers %}

If you are using Docker containers, you have the following options: using Docker, using the Datadog SDK, or configuring your application with `DD_GIT_*` environment variables.

{% collapsible-section %}
### Docker

You can embed git information in your Docker image using either build arguments with environment variables, or image labels.

###### Using build arguments and environment variables{% #using-build-arguments-and-environment-variables %}

1. Add the following lines to your application's Dockerfile:

   ```dockerfile
   ARG DD_GIT_REPOSITORY_URL
   ARG DD_GIT_COMMIT_SHA
   ENV DD_GIT_REPOSITORY_URL=${DD_GIT_REPOSITORY_URL} 
   ENV DD_GIT_COMMIT_SHA=${DD_GIT_COMMIT_SHA}
   ```

1. Add the following arguments to your Docker build command:

   ```shell
   docker build . \
    -t my-application \
    --build-arg DD_GIT_REPOSITORY_URL=<git-provider.example/me/my-repo> \
    --build-arg DD_GIT_COMMIT_SHA=$(git rev-parse HEAD)
   ```

###### Using image labels{% #using-image-labels %}

This approach requires Docker, or containerd >= 1.5.6. It doesn't support containers running on AWS Fargate.

Datadog can extract source code information directly from your images' Docker labels. During build time, follow the [Open Containers standard](https://github.com/opencontainers/image-spec/blob/main/annotations.md#pre-defined-annotation-keys) to add the git commit SHA and repository URL as Docker labels:

```shell
docker build . \
  -t my-application \
  --label org.opencontainers.image.revision=$(git rev-parse HEAD) \
  --label org.opencontainers.image.source=$(git config --get remote.origin.url)
```

{% /collapsible-section %}

{% collapsible-section %}
### Datadog SDK

Go embeds version control information in binaries since [version 1.18](https://tip.golang.org/doc/go1.18). The Datadog tracing library uses this information to tag your telemetry with the latest commit SHA and repository URL.

Ensure your service meets the following requirements to use this approach:

- Go version is 1.18 or later.

- The service is built as a go module and the module path is your code's repository URL.

{% /collapsible-section %}

{% collapsible-section %}
### `DD_GIT_*` environment variables

Configure your application with the `DD_GIT_*` environment variables:

```go
export DD_GIT_COMMIT_SHA="<commitSha>"
export DD_GIT_REPOSITORY_URL="<git-provider.example/me/my-repo>"
```

Replace `<commitSha>` with the commit SHA used to build your application. You can retrieve this by running `git rev-parse HEAD` at build time, and it needs to be passed into the runtime environment variables. Replace `<git-provider.example/me/my-repo>` with your repository URL.
{% /collapsible-section %}

## Serverless{% #serverless %}

If you are using Serverless, you have the following options depending on your serverless application's setup.

{% collapsible-section %}
### Datadog tooling

{% dl %}

{% dt %}
[Datadog CLI tool](https://www.npmjs.com/package/@datadog/datadog-ci)
{% /dt %}

{% dd %}
Use the `datadog-ci` client version 2.10.0 or later. You must run the CLI tool in the same directory as the code repository.
{% /dd %}

{% dt %}
[Datadog Serverless Plugin](https://docs.datadoghq.com/serverless/libraries_integrations/plugin.md)
{% /dt %}

{% dd %}
Use the plugin version 5.60.0 or later.
{% /dd %}

{% dt %}
[Datadog CDK Construct](https://github.com/DataDog/datadog-cdk-constructs)
{% /dt %}

{% dd %}
Use the `datadog-cdk-constructs` version 0.8.5 or later for AWS CDK v1. Use the `datadog-cdk-constructs` version 1.4.0 or later for AWS CDK v2.
{% /dd %}

{% /dl %}

{% /collapsible-section %}

{% collapsible-section %}
### Datadog SDK

Go embeds version control information in binaries since [version 1.18](https://tip.golang.org/doc/go1.18). The Datadog tracing library uses this information to tag your telemetry with the latest commit SHA and repository URL.

Ensure your service meets the following requirements to use this approach:

- Go version is 1.18 or later.

- The service is built as a go module and the module path is your code's repository URL.

{% /collapsible-section %}

{% collapsible-section %}
### `DD_GIT_*` environment variables

Configure your application with the `DD_GIT_*` environment variables:

```go
export DD_GIT_COMMIT_SHA="<commitSha>"
export DD_GIT_REPOSITORY_URL="<git-provider.example/me/my-repo>"
```

Replace `<commitSha>` with the commit SHA used to build your application. You can retrieve this by running `git rev-parse HEAD` at build time, and it needs to be passed into the runtime environment variables. Replace `<git-provider.example/me/my-repo>` with your repository URL.
{% /collapsible-section %}

## Host{% #host %}

If you are using a host, you have the following options.

{% collapsible-section %}
### Datadog SDK

Go embeds version control information in binaries since [version 1.18](https://tip.golang.org/doc/go1.18). The Datadog tracing library uses this information to tag your telemetry with the latest commit SHA and repository URL.

Ensure your service meets the following requirements to use this approach:

- Go version is 1.18 or later.

- The service is built as a go module and the module path is your code's repository URL.

{% /collapsible-section %}

{% collapsible-section %}
### `DD_GIT_*` environment variables

Configure your application with the `DD_GIT_*` environment variables:

```go
export DD_GIT_COMMIT_SHA="<commitSha>"
export DD_GIT_REPOSITORY_URL="<git-provider.example/me/my-repo>"
```

Replace `<commitSha>` with the commit SHA used to build your application. You can retrieve this by running `git rev-parse HEAD` at build time, and it needs to be passed into the runtime environment variables. Replace `<git-provider.example/me/my-repo>` with your repository URL.
{% /collapsible-section %}
