Skip to content

Commit 4460e50

Browse files
committed
Extract the telemetry details into build-time variables
Signed-off-by: Remy Suen <remy.suen@docker.com>
1 parent af6cfcf commit 4460e50

File tree

4 files changed

+11
-9
lines changed

4 files changed

+11
-9
lines changed

.github/workflows/build.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ jobs:
265265
266266
- name: Build for ${{ matrix.os }}-${{ matrix.arch }}
267267
run: |
268-
GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} BUGSNAG_API_KEY=${{ secrets.BUGSNAG_API_KEY }} make build
268+
GOOS=${{ matrix.os }} GOARCH=${{ matrix.arch }} BUGSNAG_API_KEY=${{ secrets.BUGSNAG_API_KEY }} TELEMETRY_ENDPOINT=${{ env.TELEMETRY_ENDPOINT }} TELEMETRY_KEY=${{ secrets.TELEMETRY_KEY }} make build
269269
270270
- name: Rename the binary to include the version number
271271
run: |

build.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ fi
1616
echo "Building for ${GOOS}-${GOARCH}: ${OUTPUT}"
1717

1818
CGO_ENABLED=0 go build \
19-
-ldflags="-X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.Version=$VERSION' -X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.BugSnagAPIKey=$BUGSNAG_API_KEY'" \
19+
-ldflags="-X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.Version=$VERSION' -X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.BugSnagAPIKey=$BUGSNAG_API_KEY' -X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.TelemetryEndpoint=$TELEMETRY_ENDPOINT' -X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.TelemetryKey=$TELEMETRY_KEY'" \
2020
-o $OUTPUT \
2121
./cmd/docker-language-server

internal/pkg/cli/metadata/metadata.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,9 @@ var Version = "0.0.0"
55

66
// BugSnagAPIKey will be set dynamically by the build.sh script.
77
var BugSnagAPIKey = ""
8+
9+
// TelemetryEndpoint will be set dynamically by the build.sh script.
10+
var TelemetryEndpoint = ""
11+
12+
// TelemetryKey will be set dynamically by the build.sh script.
13+
var TelemetryKey = ""

internal/telemetry/client.go

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import (
1414
"github.com/docker/docker-language-server/internal/pkg/cli/metadata"
1515
)
1616

17-
const apiKey = "eIxc3dSmud2vuJRKiq9hJ6wORVWfoLxp1nqb4qXz"
18-
1917
type TelemetryClient interface {
2018
Enqueue(event string, properties map[string]any)
2119
Publish(ctx context.Context) (int, error)
@@ -28,8 +26,6 @@ type TelemetryClientImpl struct {
2826
records []Record
2927
}
3028

31-
const telemetryUrl = "https://api.docker.com/events/v1/track"
32-
3329
func NewClient() TelemetryClient {
3430
return &TelemetryClientImpl{telemetry: configuration.TelemetrySettingAll}
3531
}
@@ -85,7 +81,7 @@ func (c *TelemetryClientImpl) trimRecords() []Record {
8581
}
8682

8783
func (c *TelemetryClientImpl) Publish(ctx context.Context) (int, error) {
88-
if os.Getenv("DOCKER_LANGUAGE_SERVER_TELEMETRY") == "false" {
84+
if os.Getenv("DOCKER_LANGUAGE_SERVER_TELEMETRY") == "false" || metadata.TelemetryEndpoint == "" || metadata.TelemetryKey == "" {
8985
c.records = nil
9086
return 0, nil
9187
}
@@ -102,14 +98,14 @@ func (c *TelemetryClientImpl) Publish(ctx context.Context) (int, error) {
10298
return 0, fmt.Errorf("failed to marshal telemetry payload: %w", err)
10399
}
104100

105-
req, err := http.NewRequestWithContext(ctx, http.MethodPost, telemetryUrl, bytes.NewBuffer(b))
101+
req, err := http.NewRequestWithContext(ctx, http.MethodPost, metadata.TelemetryEndpoint, bytes.NewBuffer(b))
106102
if err != nil {
107103
return 0, fmt.Errorf("failed to create telemetry request: %w", err)
108104
}
109105

110106
req.Header.Set("Content-Type", "application/json")
111107
req.Header.Set("User-Agent", fmt.Sprintf("docker-language-server/v%v", metadata.Version))
112-
req.Header.Set("x-api-key", apiKey)
108+
req.Header.Set("x-api-key", metadata.TelemetryKey)
113109
res, err := http.DefaultClient.Do(req)
114110
if err != nil {
115111
return 0, fmt.Errorf("failed to send telemetry request: %w", err)

0 commit comments

Comments
 (0)