Skip to content

Job Monitor: target NetMinimum and allow runtime roll-forward #17230

Description

@mmitche

Parent: #17171

Lower the framework-dependent Helix Job Monitor .NET tool from the repository's latest bundled target framework to $(NetMinimum), and allow it to run on newer installed .NET runtimes through major-version roll-forward.

Motivation

The monitor currently targets the latest in-development runtime, which unnecessarily requires that exact runtime on the fixed Azure Pipelines monitor agent. The tool does not require latest-runtime APIs. Targeting Arcade's supported minimum framework while opting into major roll-forward keeps one portable tool package and allows the existing agent SDK/runtime to host it.

Scope

  • Target Microsoft.DotNet.Helix.JobMonitor at $(NetMinimum) instead of $(BundledNETCoreAppTargetFramework).
  • Set <RollForward>Major</RollForward> for the packaged executable.
  • Keep the existing framework-dependent PackAsTool package, manifest installation, and dotnet exec invocation model.
  • Align direct project dependencies only where required for the Job Monitor to compile at $(NetMinimum); avoid unrelated framework-target changes.
  • Verify the packed tool/runtimeconfig carries the intended target framework and Major roll-forward setting.
  • Preserve Job Monitor behavior and existing scenario coverage.

Out of scope

  • Self-contained publication.
  • RID-specific packages or apphosts.
  • Native AOT or single-file publication.
  • Pipeline-template installation or invocation changes.

Acceptance criteria

  • The Job Monitor builds and packs for $(NetMinimum) as a framework-dependent .NET tool.
  • Its generated runtimeconfig targets the minimum framework and specifies major-version roll-forward.
  • The installed tool can launch on the monitor agent using a newer available runtime when the minimum runtime is absent.
  • Existing Job Monitor tests continue to pass.
  • Any dependency target changes are minimal and justified by the executable's dependency graph.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions