CI reports to the production PostHog project from every e2e shard. Each shard is a fresh container, so it mints a fresh anonymous analytics id and arrives on a fresh runner IP, which inflates machine and user counts. Set DO_NOT_TRACK, EXECUTOR_DISABLE_ANALYTICS and EXECUTOR_DISABLE_INTEGRATIONS_FETCH on the workflows that execute product code. Pin disabled: false in the two registry tests that assert the fetch happens, so they do not inherit the ambient flags.
Unified · Split
| @@ -10,6 +10,18 @@ concurrency: · 9 unmodified lines | |||
| 10 | group: ci-${{ github.ref }} | 10 | group: ci-${{ github.ref }} |
| 11 | cancel-in-progress: true | 11 | cancel-in-progress: true |
| 12 | 12 | ||
| 13 | # CI is not a user. Without this, executor's own product telemetry reports to the | ||
| 14 | # production PostHog project from every e2e shard: the analytics layer | ||
| 15 | # (integration_added, execution_completed, artifact_*) and the | ||
| 16 | # integrations-registry fetch, which lands as a `hit` event. Each shard is a | ||
| 17 | # fresh container, so it mints a fresh anonymous id and arrives on a fresh | ||
| 18 | # runner IP — inflating machine and user counts by roughly an order of | ||
| 19 | # magnitude. Both opt-outs are the packages' documented CI/test hooks. | ||
| 20 | env: | ||
| 21 | DO_NOT_TRACK: "1" | ||
| 22 | EXECUTOR_DISABLE_ANALYTICS: "1" | ||
| 23 | EXECUTOR_DISABLE_INTEGRATIONS_FETCH: "1" | ||
| 24 | |||
| 13 | jobs: | 25 | jobs: |
| 14 | changes: | 26 | changes: |
| 15 | name: Changed paths | 27 | name: Changed paths |
| @@ -21,6 +21,18 @@ concurrency: · 20 unmodified lines | |||
| 21 | group: publish-desktop-${{ github.ref }} | 21 | group: publish-desktop-${{ github.ref }} |
| 22 | cancel-in-progress: false | 22 | cancel-in-progress: false |
| 23 | 23 | ||
| 24 | # CI is not a user. Without this, executor's own product telemetry reports to the | ||
| 25 | # production PostHog project from every e2e shard: the analytics layer | ||
| 26 | # (integration_added, execution_completed, artifact_*) and the | ||
| 27 | # integrations-registry fetch, which lands as a `hit` event. Each shard is a | ||
| 28 | # fresh container, so it mints a fresh anonymous id and arrives on a fresh | ||
| 29 | # runner IP — inflating machine and user counts by roughly an order of | ||
| 30 | # magnitude. Both opt-outs are the packages' documented CI/test hooks. | ||
| 31 | env: | ||
| 32 | DO_NOT_TRACK: "1" | ||
| 33 | EXECUTOR_DISABLE_ANALYTICS: "1" | ||
| 34 | EXECUTOR_DISABLE_INTEGRATIONS_FETCH: "1" | ||
| 35 | |||
| 24 | jobs: | 36 | jobs: |
| 25 | build: | 37 | build: |
| 26 | permissions: | 38 | permissions: |
| @@ -16,6 +16,18 @@ concurrency: · 15 unmodified lines | |||
| 16 | group: publish-selfhost-docker-${{ inputs.tag }} | 16 | group: publish-selfhost-docker-${{ inputs.tag }} |
| 17 | cancel-in-progress: false | 17 | cancel-in-progress: false |
| 18 | 18 | ||
| 19 | # CI is not a user. Without this, executor's own product telemetry reports to the | ||
| 20 | # production PostHog project from every e2e shard: the analytics layer | ||
| 21 | # (integration_added, execution_completed, artifact_*) and the | ||
| 22 | # integrations-registry fetch, which lands as a `hit` event. Each shard is a | ||
| 23 | # fresh container, so it mints a fresh anonymous id and arrives on a fresh | ||
| 24 | # runner IP — inflating machine and user counts by roughly an order of | ||
| 25 | # magnitude. Both opt-outs are the packages' documented CI/test hooks. | ||
| 26 | env: | ||
| 27 | DO_NOT_TRACK: "1" | ||
| 28 | EXECUTOR_DISABLE_ANALYTICS: "1" | ||
| 29 | EXECUTOR_DISABLE_INTEGRATIONS_FETCH: "1" | ||
| 30 | |||
| 19 | jobs: | 31 | jobs: |
| 20 | metadata: | 32 | metadata: |
| 21 | runs-on: blacksmith-4vcpu-ubuntu-2404 | 33 | runs-on: blacksmith-4vcpu-ubuntu-2404 |
| @@ -13,6 +13,18 @@ concurrency: · 12 unmodified lines | |||
| 13 | group: release-${{ github.ref }} | 13 | group: release-${{ github.ref }} |
| 14 | cancel-in-progress: false | 14 | cancel-in-progress: false |
| 15 | 15 | ||
| 16 | # CI is not a user. Without this, executor's own product telemetry reports to the | ||
| 17 | # production PostHog project from every e2e shard: the analytics layer | ||
| 18 | # (integration_added, execution_completed, artifact_*) and the | ||
| 19 | # integrations-registry fetch, which lands as a `hit` event. Each shard is a | ||
| 20 | # fresh container, so it mints a fresh anonymous id and arrives on a fresh | ||
| 21 | # runner IP — inflating machine and user counts by roughly an order of | ||
| 22 | # magnitude. Both opt-outs are the packages' documented CI/test hooks. | ||
| 23 | env: | ||
| 24 | DO_NOT_TRACK: "1" | ||
| 25 | EXECUTOR_DISABLE_ANALYTICS: "1" | ||
| 26 | EXECUTOR_DISABLE_INTEGRATIONS_FETCH: "1" | ||
| 27 | |||
| 16 | jobs: | 28 | jobs: |
| 17 | release: | 29 | release: |
| 18 | runs-on: ubuntu-latest | 30 | runs-on: ubuntu-latest |
| @@ -131,6 +131,10 @@ describe("IntegrationsRegistry", () => { · 130 unmodified lines | |||
| 131 | Effect.provide( | 131 | Effect.provide( |
| 132 | integrationsRegistryLayer({ | 132 | integrationsRegistryLayer({ |
| 133 | userAgent: TEST_USER_AGENT, | 133 | userAgent: TEST_USER_AGENT, |
| 134 | // Pinned: this case asserts the fetch happens, so it must not | ||
| 135 | // inherit an ambient DO_NOT_TRACK / EXECUTOR_DISABLE_INTEGRATIONS_FETCH | ||
| 136 | // (CI sets both). Mirrors the analytics package's test config. | ||
| 137 | disabled: false, | ||
| 134 | cacheDir, | 138 | cacheDir, |
| 135 | url: "https://integrations.test/api.json", | 139 | url: "https://integrations.test/api.json", |
| 136 | }).pipe(Layer.provide(httpLayer), Layer.provide(NodeFileSystem.layer)), | 140 | }).pipe(Layer.provide(httpLayer), Layer.provide(NodeFileSystem.layer)), |
| @@ -164,6 +168,10 @@ describe("IntegrationsRegistry", () => { · 27 unmodified lines | |||
| 164 | Effect.provide( | 168 | Effect.provide( |
| 165 | integrationsRegistryLayer({ | 169 | integrationsRegistryLayer({ |
| 166 | userAgent: TEST_USER_AGENT, | 170 | userAgent: TEST_USER_AGENT, |
| 171 | // Pinned: this case asserts the fetch happens, so it must not | ||
| 172 | // inherit an ambient DO_NOT_TRACK / EXECUTOR_DISABLE_INTEGRATIONS_FETCH | ||
| 173 | // (CI sets both). Mirrors the analytics package's test config. | ||
| 174 | disabled: false, | ||
| 167 | cacheDir, | 175 | cacheDir, |
| 168 | url: "https://integrations.test/api.json", | 176 | url: "https://integrations.test/api.json", |
| 169 | }).pipe(Layer.provide(httpLayer), Layer.provide(NodeFileSystem.layer)), | 177 | }).pipe(Layer.provide(httpLayer), Layer.provide(NodeFileSystem.layer)), |