Skip to content

Update CI versioning and OpenTelemetry configuration#2204

Merged
ejsmith merged 6 commits into
mainfrom
feature/main-ci-otel-vscode
Apr 16, 2026
Merged

Update CI versioning and OpenTelemetry configuration#2204
ejsmith merged 6 commits into
mainfrom
feature/main-ci-otel-vscode

Conversation

@ejsmith
Copy link
Copy Markdown
Member

@ejsmith ejsmith commented Apr 16, 2026

This PR promotes the non-Stripe infrastructure changes from the feature/next-stripe branch into main.

Summary:

  • use the PR head SHA during checkout so CI version calculation uses the correct branch state
  • pass MinVerVersionOverride from CI into Docker builds so image builds use the expected version
  • remove Prometheus scraping endpoint exposure from the Web and Job apps and keep OpenTelemetry export on the OTLP path
  • keep the OpenTelemetry package versions explicit in the project files
  • keep the accompanying workspace settings update

Notes:

  • the configured feeds do not currently offer newer OpenTelemetry package versions than the ones already referenced, including the beta instrumentation packages

Validation:

  • dotnet build /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary

Copilot AI review requested due to automatic review settings April 16, 2026 19:52
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Promotes CI/versioning and observability (OpenTelemetry) infrastructure changes into main, aligning Docker image versioning with CI-calculated MinVer output and removing Prometheus scraping endpoint exposure from the Web/Job apps.

Changes:

  • CI: checkout PR head SHA for version calculation and pass MinVerVersionOverride into Docker builds.
  • Observability: remove Prometheus exporter + scraping endpoints; keep OTLP exporter behavior.
  • Repo hygiene: update workspace settings and document the observability behavior in AGENTS.md.

Reviewed changes

Copilot reviewed 8 out of 8 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/Exceptionless.Web/Startup.cs Removes Prometheus scraping endpoint middleware from the Web app.
src/Exceptionless.Web/Exceptionless.Web.csproj Drops Prometheus exporter package reference; minor XML formatting changes.
src/Exceptionless.Web/ApmExtensions.cs Removes Prometheus metrics exporter configuration (OTLP remains).
src/Exceptionless.Job/Program.cs Removes Prometheus scraping endpoint middleware from the Job host.
src/Exceptionless.Job/Exceptionless.Job.csproj Drops Prometheus exporter package reference; minor XML formatting changes.
Dockerfile Adds MinVerVersionOverride build arg and forwards it into dotnet build.
AGENTS.md Documents OTLP-only behavior and lack of Prometheus scraping endpoints.
.vscode/settings.json Disables format-on-save and changes TypeScript SDK path setting.
.github/workflows/build.yaml Uses PR head SHA for version checkout and passes MinVerVersionOverride into Docker builds.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Dockerfile
# Copy everything else and build app
COPY . .
RUN dotnet build -c Release
RUN dotnet build -c Release /p:MinVerVersionOverride=${MinVerVersionOverride}
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

MinVerVersionOverride build arg is optional, but the dotnet build step always sets /p:MinVerVersionOverride= when the arg isn’t provided. MinVer treats MinVerVersionOverride as an override value, and an empty string can cause version calculation/build to fail. This will also affect any Docker builds that don’t pass the build arg (e.g., the arm64 release workflow builds from the root Dockerfile without --build-arg). Consider only adding the MSBuild property when the arg is non-empty, or provide a safe default/fallback path for local/non-CI builds.

Suggested change
RUN dotnet build -c Release /p:MinVerVersionOverride=${MinVerVersionOverride}
RUN if [ -n "${MinVerVersionOverride}" ]; then \
dotnet build -c Release /p:MinVerVersionOverride="${MinVerVersionOverride}"; \
else \
dotnet build -c Release; \
fi

Copilot uses AI. Check for mistakes.
Comment thread .vscode/settings.json
Copilot AI review requested due to automatic review settings April 16, 2026 20:11
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 8 out of 8 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +5 to +6
<DefaultItemExcludes>
$(DefaultItemExcludes);$(SpaRoot)node_modules\**;$(AngularSpaRoot)node_modules\**;</DefaultItemExcludes>
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DefaultItemExcludes is now split across lines with indentation/newlines inside the element value. MSBuild property values preserve this whitespace, which can change the exclude glob list (e.g., leading spaces before the expanded $(DefaultItemExcludes)), potentially causing default excludes like bin/**/obj/** to stop matching and balloon the project item set. Keep the property value on a single line (or otherwise ensure there’s no leading whitespace/newline in the value).

Suggested change
<DefaultItemExcludes>
$(DefaultItemExcludes);$(SpaRoot)node_modules\**;$(AngularSpaRoot)node_modules\**;</DefaultItemExcludes>
<DefaultItemExcludes>$(DefaultItemExcludes);$(SpaRoot)node_modules\**;$(AngularSpaRoot)node_modules\**;</DefaultItemExcludes>

Copilot uses AI. Check for mistakes.
Comment on lines 29 to 39
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.15.2-beta.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.ElasticsearchClient" Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis"
Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.ElasticsearchClient"
Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="1.15.0-beta.1" />
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description mentions moving OpenTelemetry package version management to shared build props, but these PackageReference entries still hardcode versions in the project file. If the intent is centralized versioning, consider moving these versions to a shared .props/Directory.Packages.props and omitting Version attributes here; otherwise, the PR description may need updating to match the actual change.

Copilot uses AI. Check for mistakes.
Comment on lines 13 to 23
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.15.2-beta.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.15.2" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.ElasticsearchClient" Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.StackExchangeRedis"
Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.ElasticsearchClient"
Version="1.15.0-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Runtime" Version="1.15.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.Process" Version="1.15.0-beta.1" />
Copy link

Copilot AI Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PR description mentions managing OpenTelemetry package versions via shared build props, but this project still pins explicit Version attributes on the OpenTelemetry PackageReferences. If central version management is intended, move versions to a shared props/Directory.Packages.props and remove them here (or update the PR description if centralization is out of scope).

Copilot uses AI. Check for mistakes.
@github-actions
Copy link
Copy Markdown

Code Coverage

Package Line Rate Branch Rate Complexity Health
Exceptionless.Core 66% 60% 7630
Exceptionless.Insulation 24% 22% 210
Exceptionless.Web 57% 43% 3643
Exceptionless.AppHost 26% 14% 55
Summary 61% (11927 / 19491) 54% (5959 / 11092) 11538

@ejsmith ejsmith merged commit 8e72110 into main Apr 16, 2026
12 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants