Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ci: publish the minimal SDK in a continuous release #87

Merged
merged 5 commits into from
Sep 15, 2024

Commits on Sep 13, 2024

  1. ci-artifacts: move minimal-sdk initialization to /etc/profile

    Instead of using a GitHub Actions-specific shell script to initialize
    the shell variables `MSYSTEM` and `PATH`, we now use the standard
    `/etc/profile` file. This file is already written by the `please.sh
    create-sdk-artifact minimal-sdk` command.
    
    This is the first step to unlock a more general process where the
    `minimal-sdk` artifact is made available for wider use by continuously
    releasing ready-to-consume archives.
    
    Signed-off-by: Johannes Schindelin <[email protected]>
    dscho committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    5c2d8c0 View commit details
    Browse the repository at this point in the history
  2. ci-artifacts: use a more descriptive name for the minimal-sdk artifact

    Nowadays, 64-bit Windows no longer means Intel in general; It could also
    mean Windows/ARM64.
    
    Let's start here with naming CPU architecture-specific things by the
    actual CPU architecture, rather than by how many bits its addresses
    have.
    
    More precisely, let's use i686 for 32-bit Intel, x86_64 for 64-bit
    Intel (excluding Itanium, which is not supported by Git for Windows),
    and aarch64 for 64-bit ARM.
    
    Signed-off-by: Johannes Schindelin <[email protected]>
    dscho committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    37f9ec0 View commit details
    Browse the repository at this point in the history
  3. ci-artifacts: continuously release the minimal SDK artifact

    Taking a page out of MSYS2's book where they release their `srcinfo`
    artifact continuously, by replacing the file in the release at
    https://github.com/msys2/MINGW-packages/releases/tag/srcinfo-cache, we
    publish the minimal SDK artifact to the `ci-artifacts` GitHub release.
    
    It is slighly tricky because GitHub's REST API does not allow to replace
    an existing asset atomically, so we have to delete the old one first.
    
    To keep the window small where the asset is not available, we first
    upload the new asset to a temporary name, then delete the old one, and
    finally rename the new one to the old name.
    
    Signed-off-by: Johannes Schindelin <[email protected]>
    dscho committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    77601a8 View commit details
    Browse the repository at this point in the history
  4. ci-artifacts: point the continuous release to the correct commit

    Whenever we update the rolling release, we want to point to the revision
    corresponding to the new artifacts, i.e. from which they were built.
    
    Signed-off-by: Johannes Schindelin <[email protected]>
    dscho committed Sep 13, 2024
    Configuration menu
    Copy the full SHA
    49ecbeb View commit details
    Browse the repository at this point in the history

Commits on Sep 15, 2024

  1. ci-artifacts: provide zip and SFX variants of the minimal SDK

    Since `.tar.gz` has its preferred habitat safely outside the Windows
    world, let's also provide a `.zip` version of the artifact, and for
    good measure even a self-extracting 7-Zip archive (which can be run
    everywhere, without having to rely on PowerShell or a native `tar.exe`).
    
    In my tests, both sizes and extract times vary greatly depending on the
    used file format. Here are manual measurements as of time of writing:
    
            .tar.gz     .zip        .7z.exe
    Size    95.7MB      84.2MB      41.6MB
    Time    4.1s        4.3s        11.1s
    
    Note that I used the native Windows `tar.exe` that is available in the
    `C:\Windows\system32` directory which is a BSD tar and comes
    preinstalled with Windows build 17063 and later; It is vastly faster
    both in extracting `.zip` and `.tar.gz` files (sadly, it has no support
    for `.7z` archives) than the corresponding MSYS utilities `unzip` and
    `tar` distributed with Git for Windows.
    
    In any scenario where all three formats can be extracted (with roughly
    the same speeds as in my tests), and where Defender does not need to
    scan the downloaded `.7z.exe` file first (which added up to 8s in my
    testing), it therefore depends on the available bandwidth when fetching
    from Azure Blobs (where GitHub release assets seem to be stored
    nowadays) which one is preferable. At download speeds above 6MB/s, the
    `.zip` archive is the fastest to download and extract, below that, the
    self-extracting 7-Zip archive provides the best overall speed. Obviously
    this should be measured in each particular use case instead of basing
    any decision on above-mentioned numbers.
    
    Signed-off-by: Johannes Schindelin <[email protected]>
    dscho committed Sep 15, 2024
    Configuration menu
    Copy the full SHA
    fdb0cea View commit details
    Browse the repository at this point in the history