dotnet / source-build

A repository to track efforts to produce a source tarball of the .NET Core SDK and all its components
MIT License
266 stars 132 forks source link

Start publishing Unified Builds to BAR #4158

Open premun opened 9 months ago

premun commented 9 months ago

Depends on https://github.com/dotnet/source-build/issues/4157

The UB build: https://dnceng.visualstudio.com/internal/_build?definitionId=1330

Depends On

premun commented 9 months ago

There's no urgency with that task yet as we don't have assets in the build yet but maybe we could publish an empty BAR build from the VMR so that we can trigger fake subscriptions.

It might be better to start publishing this in the INT Maestro BAR then.

ViktorHofer commented 9 months ago

Figure out if we want to use /src/arcade/eng/common or /eng/common. I think the first as the other doesn't get updated really

We should use /eng/common. src/arcade/eng/common, src/installer/eng/common and /eng/common are always in sync (identical).

Figure out if packages are placed in a common directory in the UB build

I'm working on that right now.

ViktorHofer commented 8 months ago

Depends on https://github.com/dotnet/source-build/issues/4157

ViktorHofer commented 8 months ago

FYI @akoeplinger

dkurepa commented 8 months ago

Currently, every repo uses the following publishing flow:

flowchart TB
subgraph emsdk
    subgraph "win x64 leg"
        winBuild[Build] --> winSign[Sign]
        winSign --> winAssetManifest[Create Asset Manifest]
        winAssetManifest --> winPublish[Publish to Artifacts]
    end
    subgraph "linux x64 leg"
        linuxBuild[Build] --> linuxSign[Sign]
        linuxSign --> linuxAssetManifest[Create Asset Manifest]
        linuxAssetManifest --> linuxPublish[Publish to Artifacts]
    end
    subgraph "macOS x64 leg"
        macOSBuild[Build] --> macOSSign[Sign]
        macOSSign --> macOSAssetManifest[Create Asset Manifest]
        macOSAssetManifest --> macOSPublish[Publish to Artifacts]
    end
    subgraph bar["Publish to Bar"]
        mergedManifest["Create Merged Manifest"] --> publishBar["Publish build to bar, using Merged Manifest"]
    end
    winPublish --> bar
    linuxPublish --> bar
    macOSPublish --> bar
end

Things will work a bit differently for Unified builds:

flowchart TB
subgraph UnifiedBuild
    subgraph win-x64
        subgraph winEmsdk["emsdk"]
            emsdkWinBuild["Build"] --> emsdkWinPublish[Publish produced bits and AssetManifest]
        end
        subgraph winRuntime["runtime"]
            runtimeWinBuild["Build"] --> runtimeWinPublish[Publish produced bits and AssetManifest]
        end
        subgraph winAspnetcore["aspnetcore"]
            aspWinBuild["Build"] --> aspWinPublish[Publish produced bits and AssetManifest]
        end
        emsdkWinPublish --> winMergeManifests[Merge Windows Asset Manifests into a VerticalManifest]
        runtimeWinPublish --> winMergeManifests
        aspWinPublish --> winMergeManifests
    end
    subgraph linux-x64
        subgraph linuxEmsdk["emsdk"]
            emsdkLinuxBuild["Build"] --> emsdkLinuxPublish[Publish produced bits and AssetManifest]
        end
        subgraph linuxRuntime["runtime"]
            runtimeLinuxBuild["Build"] --> runtimeLinuxPublish[Publish produced bits and AssetManifest]
        end
        subgraph linuxAspnetcore["aspnetcore"]
            aspLinuxBuild["Build"] --> aspLinuxPublish[Publish produced bits and AssetManifest]
        end
        emsdkLinuxPublish --> linuxMergeManifests[Merge Linux Asset Manifests into a VerticalManifest]
        runtimeLinuxPublish --> linuxMergeManifests
        aspLinuxPublish --> linuxMergeManifests
    end
    winMergeManifests --> mergedManifest["Generate Merged Manifest"]
    linuxMergeManifests --> mergedManifest
    mergedManifest --> barPublish["Publish Unified Build to BAR"]
end
ViktorHofer commented 8 months ago

cc @mmitche

dkurepa commented 8 months ago

I'd like to get some additional clarity on the scope of this issue, and its dependencies. Currently we have two other related issues:

So with that said, for this issue we will:

We will also have to incorporate assets produced in join points.

@mmitche @ViktorHofer is this all this correct?

mmitche commented 8 months ago

Resolve dual 'source of truth' for publishing info #4101 that @NikolaMilosavljevic is working on

  • One of the results of this issue is that we'll have AssetManifests produced for each repo.
  • We'll use these AssetManifests to produce and publish a VerticalAssetManifest for each leg. What's unclear is which issue this part belongs to.

I'm not sure how far exactly @NikolaMilosavljevic's change will go beyond the per-repo publishing. If he is not covering vertical manifest creation in #4101, then I think it belongs here. All the work is highly related, it's just a matter of how you want to divide it up between folks working in the area.

The rest of that looks correct to me.

dkurepa commented 8 months ago

@NikolaMilosavljevic just an FYI, we discussed the Vertical Manifest generation on the weekly Product construction meting and decided that we'll handle it as a part of this issue

NikolaMilosavljevic commented 8 months ago

@NikolaMilosavljevic just an FYI, we discussed the Vertical Manifest generation on the weekly Product construction meting and decided that we'll handle it as a part of this issue

Thanks. I presume that applies to Vertical merged manifest. Repo manifests will be produced by work I'm completing.