Merge pull request #114 from docker/record-installed-extensions-telemetry

Record if certain extensions are installed
This commit is contained in:
Remy Suen 2025-05-21 09:21:00 -04:00 committed by GitHub
commit 45e286f118
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 18 additions and 2 deletions

View File

@ -23,6 +23,10 @@ If you have already opted out of sending telemetry in Visual Studio Code then no
- Docker version
- function names and parameters for diagnosing errors and crashes
- error messages when the language server is unable to start or is crashing
- if certain extensions are also installed
- [Microsoft's Container Tools extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-containers)
- [Microsoft's Docker extension](https://marketplace.visualstudio.com/items?itemName=ms-azuretools.vscode-docker)
- [Red Hat's YAML extension](https://marketplace.visualstudio.com/items?itemName=redhat.vscode-yaml)
The list above does _not_ include any telemetry collected by the [Docker Language Server](https://github.com/docker/docker-language-server). For telemetry collected by the Docker Language Server, please refer to the telemetry documentation of that project.

View File

@ -211,6 +211,15 @@ function listenForConfigurationChanges(ctx: vscode.ExtensionContext) {
}
function recordVersionTelemetry() {
const installedExtensions = vscode.extensions.all
.filter((extension) => {
return (
extension.id === 'ms-azuretools.vscode-docker' ||
extension.id === 'ms-azuretools.vscode-containers' ||
extension.id === 'redhat.vscode-yaml'
);
})
.map((extension) => extension.id);
let versionString: string | null = null;
const process = spawn('docker', ['-v']);
process.stdout.on('data', (data) => {
@ -223,6 +232,7 @@ function recordVersionTelemetry() {
// this happens if docker cannot be found on the PATH
queueTelemetryEvent(EVENT_CLIENT_HEARTBEAT, false, {
docker_version: 'spawn docker -v failed',
installedExtensions,
});
publishTelemetry();
});
@ -230,10 +240,12 @@ function recordVersionTelemetry() {
if (code === 0) {
queueTelemetryEvent(EVENT_CLIENT_HEARTBEAT, false, {
docker_version: String(versionString),
installedExtensions,
});
} else {
queueTelemetryEvent(EVENT_CLIENT_HEARTBEAT, false, {
docker_version: String(code),
installedExtensions,
});
}
publishTelemetry();

View File

@ -9,7 +9,7 @@ interface TelemetryRecord {
event: string;
source: string;
event_timestamp: number;
properties: { [key: string]: boolean | number | string | undefined };
properties: { [key: string]: boolean | number | string | object | undefined };
}
const events: TelemetryRecord[] = [];
@ -17,7 +17,7 @@ const events: TelemetryRecord[] = [];
export function queueTelemetryEvent(
event: string,
error: boolean,
properties: { [key: string]: boolean | number | string | undefined },
properties: { [key: string]: boolean | number | string | object | undefined },
) {
if (!vscode.env.isTelemetryEnabled) {
return;