Skip to main content

Telemetry

As an effort to improve NUKE and to provide you with a better, more tailored experience, we include a telemetry feature that collects anonymous usage data and enables us to make more informed decisions for the future.

We want you to be fully aware about telemetry, which is why the global tool will show a disclosure notice on first start. In addition, every build project requires to define a NukeTelemetryVersion property:

_build.csproj
<PropertyGroup>
<NukeTelemetryVersion>1</NukeTelemetryVersion>
</PropertyGroup>

We will increase the telemetry version whenever we add or change significant data points. With every version change and after updating the Nuke.Common package, you will be prompted again for confirmation.

Disclosure​

NUKE will display a prompt similar to the following when executing a build project without the NukeTelemetryVersion property being set or when executing the global tool for the first time.

Telemetry
---------
NUKE collects anonymous usage data in order to help us improve your experience.

Read more about scope, data points, and opt-out: https://nuke.build/telemetry

Once you confirm the notice, NUKE will either:

  • Create an awareness cookie under ~/.nuke/telemetry-awareness/v1 for the respective global tool, or
  • Add the NukeTelemetryVersion property to the project file.

Scope​

As a global tool and library, NUKE has multiple events where telemetry is collected:

  • BuildStarted – when a build was started
  • TargetSucceeded – when a target succeeded (only Restore, Compile, Test)
  • BuildSetup – when setting up a build via nuke [:setup]
  • CakeConvert – when converting Cake files via nuke :cake-convert
info

Data for BuildStarted and TargetSucceeded is only collected when IsServerBuild returns true (i.e., CI build), or the build is invoked via global tool. I.e., a contributor executing build.ps1 or build.sh will not have telemetry enabled unknowingly. Likewise, when a build project targets a higher telemetry version than the installed global tool, the lower version will be used.

Data Points​

The telemetry data points do not collect personal data, such as usernames or email addresses. The data is sent securely to Microsoft servers using Azure Monitor technology, held under restricted access, and published under strict security controls from secure Azure Storage systems.

Protecting your privacy is important to us. If you suspect the telemetry is collecting sensitive data or the data is being insecurely or inappropriately handled, file an issue in the nuke-build/nuke repository or email us for investigation.

The telemetry feature collects the following data:

VersionData
AllTimestamp of invocation
AllOperating system
AllVersion of .NET SDK
AllRepository provider (GitHub, GitLab, Bitbucket, etc.)
AllRepository Branch (main, develop, feature, hotfix, custom)
AllHashed Repository URL (SHA256; first 6 characters)
AllHashed Commit Sha (SHA256; first 6 characters)
AllCompile time of build project in seconds
AllTarget framework
AllVersion of Nuke.Common and Nuke.GlobalTool
AllHost implementation (only non-custom)
AllBuild type (project/global tool)
AllNumber of executable targets
AllNumber of custom extensions
AllNumber of custom components
AllUsed configuration generators and build components (only non-custom)
AllTarget execution time in seconds (only for targets named Restore, Compile, or Test)
note

Whenever a type does not originate from the Nuke namespace, it is replaced with <External>.

How to opt out​

The telemetry feature is enabled by default. To opt out, set the NUKE_TELEMETRY_OPTOUT environment variable to 1 or true.