Skip to content

Releases: microsoft/mu_devops

v14.0.1

29 Apr 15:31
697fd93
Compare
Choose a tag to compare

What's Changed

  • Version.njk Update to 202502, 202405 versions @apop5 (#427)
    Change Details
      Switch n,n-1 to 202502, 202405

  • Backport: use srvaroa/labeler@v1.12.0 instead of github/issue-labeler @apop5 (#434)
    Change Details
      Switch to using srvaroa/labeler instead of github/issue-labeler to allow more configuration options.

    Add backport labels for dependabot created PRs and for filesync operations as well.

    github/issue-labeler did not provide configuration to add labels based on PR author or PR branch target or PR branch name.

    Switching to allow automatically targeting FileSync operations and Dependabot Prs to be labeled backport.




  • FileSyncer.yml: Create app derived token for all repos @makubacki (#432)
    Change Details
      Allow file syncer to access all repos in the owning repo's installation and use the `GH_INSTALLATION_TOKEN` parameter to provide the token as the action differentiates between PATs using `GH_PAT` and apps using `GH_INSTALLATION_TOKEN`.

  • .sync/Version.njk: Update mu\_devops to v14.0.0 @makubacki (#431)
    Change Details
      See the following comparison for details of the changes between these releases:

    v13.0.3...v14.0.0


    The breaking changes are that the Auto Approve and Auto Merge workflows are removed in this release.




Full Changelog: v14.0.0...v14.0.1

v14.0.0

18 Apr 22:07
bb59a4c
Compare
Choose a tag to compare

What's Changed

  • Update non-Default GitHub token usage to Mu GitHub app @makubacki (#430)
    Change Details
      Generates tokens during workflow execution instead of directly depending on PATs.

  • Add microsoft/mu\_feature\_ffa to notebooks @apop5 (#426)
    Change Details
      Add the newly created mu_feature_ffa repo to notebooks for querying issues/pull requests.

  • .sync/codeql: Update robinraju/release-downloader to v1.12 @makubacki (#425)
    Change Details
      Use the latest version in CodeQL workflows.

  • Synchronize files into `mu_feature_ffa` repo @kuqin12 (#424)
    Change Details
      This change onboards the `mu_feature_ffa` repo to be part of the mu repo collection, by synchronizing the necessary files into the repo automatically.

  • Add secureboot\_objects to repos which pull\_request\_template is synced. @apop5 (#423)
    Change Details
      Add pull request template as file synced to secureboot_objects.

  • .sync/Version.njk: Update linux\_build\_container to for 1.84.0 rust toolchain. @apop5 (#422)
    Change Details
      Update Readme.rst to contain details on process for updating rust_toolchain.

  • .sync/Version.njk: Update mu\_devops to v13.0.3 @apop5 (#419)
    Change Details
      See the following comparison for details of the changes between these releases:

    v13.0.0...v13.0.3




⚠️ Breaking Changes

  • Remove Auto Merge workflow @makubacki (#429)
    Change Details
      This workflow has not been used in a long time due to policy change toward merging PRs with automation. Remove it from the repo for now to reduce maintenance burden. It can be pulled from git history if needed in the future.

  • Remove Auto Approve worfklow @makubacki (#428)
    Change Details
      This workflow has not been used in a long time due to policy changes toward automated approval. Remove it from the repo for now to reduce maintenance burden. It can be pulled from git history if needed in the future.

Full Changelog: v13.0.3...v14.0.0

v13.0.3

27 Mar 20:47
bc161dc
Compare
Choose a tag to compare

What's Changed

  • Rust toolchain: Update to 1.84 @antklein (#415)
    Change Details
      Update MU to Rust toolchain 1.84.

Full Changelog: v13.0.2...v13.0.3

v13.0.2

27 Feb 01:55
f97de79
Compare
Choose a tag to compare

What's Changed

  • Always update artifacts\_present variable in artifact publish @MarcChen46 (#414)
    Change Details
      The Binary and Other artifact publish is depending on `artifacts_present` variable, but the variable will only be set to false or true when all previous steps are success.

    In some cases, we want to always upload the artifacts no matter previous steps are pass or failed, and this artifacts_present already be handled well to decide the binary and other artifact should be uploaded or not, hence add the condition: succeededOrFailed() to the step that set the artifacts_present variable




  • .sync/rust-toolchain.toml: Sync cargo-release @makubacki (#411)
    Change Details
      The release GitHub workflow downloads and caches the cargo tools in the rust-toolchain.toml file so sync it.

Full Changelog: v13.0.1...v13.0.2

v13.0.1

10 Feb 22:00
774c2b6
Compare
Choose a tag to compare

What's Changed

  • DownloadCargoBinaryFromGitHub: Find most recent release with assets @makubacki (#410)
    Change Details
      Currently, the `cargo-binstall` most recent release in the binstall repo does not actually have the binstall binary. This change allows the search to find the most recent release that has the expected binaries to handle the case when other releases might also be in release list that do not have the expected binaries.

  • .sync/Version.njk: Update Ubuntu 24.04 container to d412ccd @makubacki (#408)
    Change Details
      Includes the change to allow the CI user account to use pip.

  • Containers/Ubuntu-24: Allow CI user access to venv @makubacki (#407)
    Change Details
      Many of the existing CI workflows expect a pip environment to use. A new user and group are created for the docker user when the container image is initialized in pipelines. This allows that user to use the /opt/venv environment to support existing workflows.

Full Changelog: v13.0.0...v13.0.1

v13.0.0

06 Feb 02:39
200d5f6
Compare
Choose a tag to compare

What's Changed

  • Version.njk: Update to Ubuntu 24.04 container @makubacki (#406)
    Change Details
      Update pipelines and devcontainer files to use the 24.04 container. Also updates Mu DevOps version for the upcoming release.

⚠️ Breaking Changes

  • Version.njk: Update Ubuntu build container version and use Mu Devops 12.4.2 @makubacki (#401)
    Change Details
      - Updates the container to latest `af4ec63` - This container image does not have `python3.12-distutils` - Updates the Mu DevOps version synced from "v12.4.0" to "v12.4.2".

    Marked as breaking change due to the container update that contains a potentially breaking change.




  • Containers/Ubuntu-22: Remove pythonx.x-distutils @makubacki (#400)
    Change Details
      The `pythonx.x-distutils` package provided the standard `distutils` module for our Ubuntu container Python environment.

    In the deadsnakes PPA python3.12.7-1+jammy1 to python3.12.8-1+jammy1 update on 12/04/2024, the following diff was made:

    https://launchpadlibrarian.net/761821028/python3.12_3.12.7-1+jammy1_3.12.8-1+jammy1.diff.gz

    In that, python3.12-distutils is no longer a built package per PEP-0632. Therefore, it is removed from the container using Python 3.12 and some subsequent Python code updates may need to made for compatibility.

    This change is specifically focused on fixing the Ubuntu 22.04 (jammy) container build.


    Marked as a breaking change since distutils will no longer be installed in the container.




🚀 Features & ✨ Enhancements

  • Add Ubuntu 24.04 (Noble Numbat) container build @makubacki (#404)
    Change Details
      Closes #403

    Adds a new dockerfile to build a Ubuntu 24.04 image.

    As we continue to update other Linux dependencies such as our Python installation and various packages, we can maintain better compatibility with pre-compiled binaries and get newer, safer updates by moving to the latest Ubuntu stable release.

    In particular, glibc 2.39 is now included by default which allows us to move ahead to newer binaries being pulled into the build like cargo-make v0.37.24.


    Ubuntu 22.04 image:

    /.cargo/bin/cargo-make: /lib/x86_64-linux-gnu/libc.so.6: version
    `GLIBC_2.39' not found (required by /.cargo/bin/cargo-make)
    

    Ubuntu 24.04 image:

    root@4d1e94a3013a:/src/mu_tiano_platforms# lsb_release -a
    No LSB modules are available.
    Distributor ID: Ubuntu
    Description:    Ubuntu 24.04.1 LTS
    Release:        24.04
    Codename:       noble
    
    root@4d1e94a3013a:/mu_plus# ldd --version
    ldd (Ubuntu GLIBC 2.39-0ubuntu8.3) 2.39
    Copyright (C) 2024 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    Written by Roland McGrath and Ulrich Drepper
    
    root@4d1e94a3013a:/mu_plus# cargo make test
    [cargo-make] INFO - cargo make 0.37.24
    [cargo-make] INFO -
    [cargo-make] INFO - Build File: Makefile.toml
    [cargo-make] INFO - Task: test
    [cargo-make] INFO - Profile: development
    [cargo-make] INFO - Running Task: individual-package-targets
    [cargo-make] INFO - Execute Command: "cargo" "test"
    

    Powershell in the new image:

     root@4d1e94a3013a:/mu_plus# pwsh
     PowerShell 7.5.0
    
      </blockquote>
      <hr>
    </details>
    

🐛 Bug Fixes

  • Update Ubuntu Container iASL [Rebase \& FF] @makubacki (#405)
    Change Details
      **Ubuntu 24.04: Update iasl 20210105.0.6 to 20230628.0.1**

    Updates iasl to the latest built Mu version matching the version
    used in Mu ext deps.


    Fix Ubuntu iasl wrong machine type

    A long standing issue has been that the AARCH64 binary is copied
    to /usr/bin/iasl in the x86-64 container image. This copies the
    x86 binary.


    Before

    root@724459c0de48:/src/mu_tiano_platforms# readelf -h /usr/bin/iasl  
    ELF Header:
      Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
      Class:                             ELF64
      Data:                              2's complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
      Type:                              EXEC (Executable file)
      Machine:                           AArch64
      Version:                           0x1
      Entry point address:               0x401e08
      Start of program headers:          64 (bytes into file)
      Start of section headers:          1217552 (bytes into file)
      Flags:                             0x0
      Size of this header:               64 (bytes)
      Size of program headers:           56 (bytes)
      Number of program headers:         8
      Size of section headers:           64 (bytes)
      Number of section headers:         36
      Section header string table index: 35
    

    After

    root@e1a9c5ffb3b3:/# readelf -h /usr/bin/iasl 
    ELF Header:
      Magic:   7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 
      Class:                             ELF64
      Data:                              2's complement, little endian
      Version:                           1 (current)
      OS/ABI:                            UNIX - System V
      ABI Version:                       0
      Type:                              DYN (Position-Independent Executable file)
      Machine:                           Advanced Micro Devices X86-64
      Version:                           0x1
      Entry point address:               0x25b90
      Start of program headers:          64 (bytes into file)
      Start of section headers:          1449448 (bytes into file)
      Flags:                             0x0
      Size of this header:               64 (bytes)
      Size of program headers:           56 (bytes)
      Number of program headers:         13
      Size of section headers:           64 (bytes)
      Number of section headers:         32
      Section header string table index: 31
    
      </blockquote>
      <hr>
    </details>
    

Full Changelog: v12.4.2...v13.0.0

v12.4.2

04 Feb 00:44
b8fc1dc
Compare
Choose a tag to compare

What's Changed

  • .sync/Version.njk: Update cargo-make and cargo-tarpaulin to latest @makubacki (#397)
    Change Details
      Since `cargo-binstall` is being used to install Rust binaries, update to the latest version of `cargo-make` and `cargo-tarpaulin`.

    Note: RustSetupSteps.yml in this repo gets updated from this version during the file sync.




  • .sync/rust-toolchain.toml: Use [tools] section @makubacki (#395)
    Change Details
      Current automation and scripts expect the section with tools to be called "[tools]".

Full Changelog: v12.4.1...v12.4.2

v12.4.1

21 Jan 03:42
bddcdfb
Compare
Choose a tag to compare

What's Changed

  • Add artifacts\_binary and artifacts\_other parameters to Jobs/PrGate.yml @MarcChen46 (#392)
    Change Details
      Add artifacts_binary and artifacts_other parameters to Jobs/PrGate.yml to let consumer able to customize the binary and other path for publishing content to pipeline artifact

  • Add crate release workflow @makubacki (#393)
    Change Details
      Publishes crates in Rust repos to the repo designated registry (crates.io default).

  • .sync/Version.njk: Update to Mu DevOps v12.4.0 @makubacki (#390)
    Change Details
      See the following comparison for details of the changes between these releases:

    v12.2.0...v12.4.0




Full Changelog: v12.4.0...v12.4.1

v12.4.0

06 Jan 23:16
1915931
Compare
Choose a tag to compare

What's Changed

  • .sync/rust\_config/rustfmt.toml: Add struct and enum alignment @zurcher (#389)
    Change Details
      Add arguments to rustfmt for vertically aligning struct and enum members. Usage requires `+nightly`.

    Value of 8 matches 'align_var_struct_span' from uncrustify.cfg.




🚀 Features & ✨ Enhancements

  • Update Release Drafter for Dev Branches @makubacki (#387)
    Change Details
      Changes the way release drafter handles drafting releases on repos with release branches (which have dev branches now).

    Ultimately, a release is drafted for the dev branch and the release branch. The releases are differentiated by both their release title and tag.

    • Release Branch
      • Title: release-v<version>
      • Tag: v<version>
    • Dev Branch
      • Title: dev-v<version>
      • Tag: dev-v<version>

    Note that the tag for the release branch follows the same convention as existing release tags.

    The "release branch" release includes all pull requests made to the dev branch with the type:backport label since the last "dev branch" release. For this reason, the "dev branch" and "release branch" should be released at the same time. Then, this effectively results in the "release branch" having all relevant changes since the last release. The "dev branch" release will be based at the same point in history as the "release branch" release but include all changes not just those with the type:backport label.

    The "release branch" release for the current release branch should be marked as "latest". For example, if "release/202311" and "release/202405" exist, the "release/202405" "release branch" release would be marked as latest.

    The release-drafter/release-drafter action is still used.




Full Changelog: v12.3.0...v12.4.0

v12.3.0

01 Nov 15:34
21da0ab
Compare
Choose a tag to compare

What's Changed

  • Version.njk: Update to container version 4bebc96 @makubacki (#384)
    Change Details
      Main reason to update is to pick up the latest Ubuntu container build that uses Python 3.12.

    A complete list of changes compared to the previous container version (d1e4ff1) is in:

    d1e4ff1...4bebc96




  • .sync/Dockerfile: Add Python 3.12 installation steps @makubacki (#383)
    Change Details
      Some additional steps are needed to move the container build to Python 3.12.

    The Deadsnakes PPA is needed to get Python 3.12. Add a step to add that repo and then use apt to install Python 3.12 from it. gnupg is needed to add the key for Deadsnakes. Distutils was removed from Python 3.12 but we still need it to build QEMU so that is added as a separate installation.


    Changes tested in #382




🚀 Features & ✨ Enhancements

  • Add release branch backport workflow @makubacki (#386)
    Change Details
      Closes #372

    This new workflow will attempt to automatically cherry-pick marked contributions to a development branch to its corresponding release branch. If a merge conflict occurs, the commit is committed to a new branch with merge markers and then a PR is created into the target branch with those markers. The PR is labeled with
    type:release-merge-conflict to indicate that it needs manual resolution.

    The PR (if created) is expected to fail compilation and status checks of course due to the merge conflict markers. A human should then checkout the PR branch, resolve the conflicts, and push the changes back to the PR branch.


    • To mark a PR going into the development branch so that it should be cherry-picked to the release branch, add the type:backport label to the PR.

    Notes:

    • The workflow is synced to all repos that currently have a dev branch.
    • Each repo that backport-to-release-branch.yml is synced to must have a CHERRY_PICK_TOKEN defined with repo write permission.


Full Changelog: v12.2.0...v12.3.0