Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/mcp.md
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ Downloads a failed build's artifacts to a local directory and writes its whole l

The files go under the [app's own directory](#where-the-files-go), not the operating system's temp directory, and are deleted after 24 hours.

A total of 50 MB is downloaded per build, at most 20 MB of any one file and at most 20 files, taking test reports, logs, approval output, screenshots and coverage before anything else, and smallest first within each of those. Anything left out is named with its size and the reason, so a report that was skipped is never mistaken for one that was never published. Jenkins reports no size for an artifact, so those are fetched under the per-file limit and stopped if they run past it.
A total of 250 MB is downloaded per build, at most 100 MB of any one file and at most 20 files, taking test reports, logs, approval output, screenshots and coverage before anything else, and smallest first within each of those. Anything left out is named with its size and the reason, so a report that was skipped is never mistaken for one that was never published. Jenkins reports no size for an artifact, so those are fetched under the per-file limit and stopped if they run past it.

Bitbucket and Travis have no artifact API: Bitbucket does not expose a pipeline's artifacts, and Travis stores none of its own. For a build on either, the call answers with the log alone and says which service it could not ask, rather than reporting that the run published nothing.

Expand Down
2 changes: 1 addition & 1 deletion docs/mdsource/mcp.source.md
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ Downloads a failed build's artifacts to a local directory and writes its whole l

The files go under the [app's own directory](#where-the-files-go), not the operating system's temp directory, and are deleted after 24 hours.

A total of 50 MB is downloaded per build, at most 20 MB of any one file and at most 20 files, taking test reports, logs, approval output, screenshots and coverage before anything else, and smallest first within each of those. Anything left out is named with its size and the reason, so a report that was skipped is never mistaken for one that was never published. Jenkins reports no size for an artifact, so those are fetched under the per-file limit and stopped if they run past it.
A total of 250 MB is downloaded per build, at most 100 MB of any one file and at most 20 files, taking test reports, logs, approval output, screenshots and coverage before anything else, and smallest first within each of those. Anything left out is named with its size and the reason, so a report that was skipped is never mistaken for one that was never published. Jenkins reports no size for an artifact, so those are fetched under the per-file limit and stopped if they run past it.

Bitbucket and Travis have no artifact API: Bitbucket does not expose a pipeline's artifacts, and Travis stores none of its own. For a build on either, the call answers with the log alone and says which service it could not ask, rather than reporting that the run published nothing.

Expand Down
16 changes: 10 additions & 6 deletions src/BuildMonitor.Core/Builds/ArtifactPlan.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,20 @@ record ArtifactPlan(ImmutableArray<BuildArtifact> Take, ImmutableArray<SkippedAr
/// How much one triage downloads in total. The consumer is an assistant reading files, and
/// everything that actually explains a failure — a test report, a junit file, a log, an
/// approval diff, a screenshot — is kilobytes to a few megabytes. This takes all of those and a
/// couple of medium archives, in seconds to tens of seconds, without the tray noticing.
/// couple of large archives, without the tray noticing. Two and a half times
/// <see cref="DefaultPerFile"/>, so one file at its cap still leaves room for the reports
/// beside it.
/// </summary>
public const long DefaultBudget = 50 * 1024 * 1024;
public const long DefaultBudget = 250 * 1024 * 1024;

/// <summary>
/// The most one file may take. An artifact larger than this is nearly always a build output —
/// an installer, a container layer, a published binary — and reading it explains nothing, while
/// downloading it would spend the whole budget on one file.
/// The most one file may take. Wide enough for a zip of test results with their dumps and
/// screenshots, which a failing suite pushes into the tens of megabytes. An artifact larger
/// than this is nearly always a build output — an installer, a container layer, a published
/// binary — and reading it explains nothing, while downloading it would spend most of the
/// budget on one file.
/// </summary>
public const long DefaultPerFile = 20 * 1024 * 1024;
public const long DefaultPerFile = 100 * 1024 * 1024;

/// <summary>
/// How many files at most. A wide matrix uploads one artifact per leg, and the twenty first
Expand Down
2 changes: 1 addition & 1 deletion src/BuildMonitor.Core/Model/ByteSize.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ static class ByteSize

/// <summary>
/// One decimal place below ten of a unit and none above it, so a size reads at the precision it
/// was chosen at: a limit set at 20 MB is worth saying to the megabyte, and 2.1 GB against it
/// was chosen at: a limit set at 100 MB is worth saying to the megabyte, and 2.1 GB against it
/// is worth the tenth that says how far past it went.
/// </summary>
public static string Human(long bytes)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ This directory is made for triage, outside the repository: never commit it. Unpa

2 artifacts left out:

- `runner-image.tar`: 2.1 GB, over the 20 MB limit for one file
- `dumps.zip`: 340 MB, over the 20 MB limit for one file
- `runner-image.tar`: 2.1 GB, over the 100 MB limit for one file
- `dumps.zip`: 340 MB, over the 100 MB limit for one file

Fetch from the run's page if the log points at one.

Expand Down
4 changes: 2 additions & 2 deletions src/BuildMonitor.Tests/Launcher/TriagePromptTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -227,8 +227,8 @@ public Task ArtifactsLeftBehindAreNamedWithTheirSize() =>
"/home/simon/.local/share/BuildMonitor/artifacts/Verify-412-3f9a1c02",
["log.txt"],
[
new("runner-image.tar", 2254857830, "2.1 GB, over the 20 MB limit for one file"),
new("dumps.zip", 356515840, "340 MB, over the 20 MB limit for one file")
new("runner-image.tar", 2254857830, "2.1 GB, over the 100 MB limit for one file"),
new("dumps.zip", 356515840, "340 MB, over the 100 MB limit for one file")
]),
fix: true));

Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project>
<PropertyGroup>
<Version>1.0.2</Version>
<Version>1.0.3</Version>
<PackageTags>CI, Build, Monitor, Tray, MCP</PackageTags>
<Description>Cross platform build/CI monitor that runs in the system tray.</Description>
<Nullable>enable</Nullable>
Expand Down
2 changes: 1 addition & 1 deletion src/Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<PackageVersion Include="Svg.Skia" Version="5.2.3" />
<PackageVersion Include="System.Security.Cryptography.ProtectedData" Version="10.0.12" />
<PackageVersion Include="Tmds.DBus.Protocol" Version="0.95.1" />
<PackageVersion Include="TUnit" Version="1.73.5" />
<PackageVersion Include="TUnit" Version="1.73.19" />
<PackageVersion Include="Verify" Version="33.3.2" />
<PackageVersion Include="Verify.TUnit" Version="33.3.2" />
<PackageVersion Include="Verify.WinForms" Version="6.0.0" />
Expand Down
Loading