Skip to content

Parallelize sign and test across product builds #245344

Closed

Description

In order to get better runtime numbers off our product build, we could:

  • Windows
    • Parallelize tasks by running signing and setup packages building in the background while tests run
  • Linux
    • Parallelize tasks by running singing and deb+rpm+prepare snap packages in the background
    • (Optional) Run the snap job as a regular step that runs inside a container João Moreno (@joaomoreno)
  • macOS: reduce job count to 3
    • Parallelize tasks by running signing and setup packages building in the background while tests run
    • Have the macOSUniversal job poll for the x64 and arm64 assets to be published by the macOS and macOSARM64 jobs, respectively
    • Have the macOSUniversal sign the macOS CLI before it starts polling, to better use up that initial time
flowchart TD
    %% Define all nodes with descriptive names
    start([Start Build Process])
    
    %% arm64 nodes
    arm64_pack[macOS arm64: Package]
    arm64_sign[macOS arm64: Sign]
    arm64_test[macOS arm64: Test]
    
    %% x64 nodes
    x64_pack[macOS x64: Package]
    x64_sign[macOS x64: Sign]
    x64_test[macOS x64: Test]
    
    %% Universal nodes
    uni_cli[macOS Universal: Sign CLI]
    uni_poll[macOS Universal: Poll for Packages]
    uni_pack[macOS Universal: Package]
    uni_sign[macOS Universal: Sign]
    
    %% Final publish node
    publish([Publish])
    
    %% Define all dependencies
    start --> arm64_pack & x64_pack & uni_cli
    
    %% arm64 dependencies
    arm64_pack --> arm64_sign
    arm64_pack --> arm64_test
    
    %% x64 dependencies
    x64_pack --> x64_sign
    x64_pack --> x64_test
    
    %% Universal dependencies
    uni_cli --> uni_poll
    uni_poll --> uni_pack
    uni_pack --> uni_sign
    
    %% Cross-architecture dependencies
    arm64_pack --> uni_poll
    x64_pack --> uni_poll
    
    %% Final publishing dependencies
    arm64_sign --> publish
    x64_sign --> publish
    uni_sign --> publish
    
    %% Styling
    classDef default fill:#f9f9f9,stroke:#333,stroke-width:1px
    classDef arm64 fill:#ffcdd2,stroke:#c62828,stroke-width:2px
    classDef x64 fill:#bbdefb,stroke:#1565c0,stroke-width:2px
    classDef universal fill:#c8e6c9,stroke:#2e7d32,stroke-width:2px
    classDef start fill:#e1bee7,stroke:#6a1b9a,stroke-width:2px
    classDef publish fill:#fff9c4,stroke:#f57f17,stroke-width:2px,stroke-dasharray: 5 5
    
    %% Apply styles
    class start start
    class arm64_pack,arm64_sign,arm64_test arm64
    class x64_pack,x64_sign,x64_test x64
    class uni_cli,uni_poll,uni_pack,uni_sign universal
    class publish publish
Loading

Activity

  1. iwangbowen commented on Apr 2, 2025

    @iwangbowen

    Great

  2. lszomoru commented on Apr 22, 2025

    @lszomoru
    Member

    All changes have been made to the pipeline except:

    Have the macOSUniversal sign the macOS CLI before it starts polling, to better use up that initial time

  3. locked and limited conversation to collaborators on Jun 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

engineeringVS Code - Build / issue tracking / etc.plan-itemVS Code - planned item for upcoming

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions