Releases: microsoft/mu_devops
v6.2.0
What's Changed
-
.sync/workflows/leaf/codeql-platform.yml: Bump actions/checkout to v4 @makubacki (#240)
Change Details
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4 in this leaf workflow.
Release notes
Sourced from actions/checkout's releases.
v4.0.0
What's Changed
- Update default runtime to node20 by
@takost
in actions/checkout#1436 - Support fetching without the --progress option by
@simonbaird
in actions/checkout#1067 - Release 4.0.0 by
@takost
in actions/checkout#1447
New Contributors
@takost
made their first contribution in actions/checkout#1436@simonbaird
made their first contribution in actions/checkout#1067
Full Changelog: actions/checkout@v3...v4.0.0
v3.6.0
What's Changed
- Mark test scripts with Bash'isms to be run via Bash by
@dscho
in actions/checkout#1377 - Add option to fetch tags even if fetch-depth > 0 by
@RobertWieczoreck
in actions/checkout#579 - Release 3.6.0 by
@luketomlinson
in actions/checkout#1437
New Contributors
@RobertWieczoreck
made their first contribution in actions/checkout#579@luketomlinson
made their first contribution in actions/checkout#1437
Full Changelog: actions/checkout@v3.5.3...v3.6.0
v3.5.3
What's Changed
- Fix: Checkout Issue in self hosted runner due to faulty submodule check-ins by
@megamanics
in actions/checkout#1196 - Fix typos found by codespell by
@DimitriPapadopoulos
in actions/checkout#1287 - Add support for sparse checkouts by
@dscho
and@dfdez
in actions/checkout#1369 - Release v3.5.3 by
@TingluoHuang
in actions/checkout#1376
New Contributors
@megamanics
made their first contribution in actions/checkout#1196@DimitriPapadopoulos
made their first contribution in actions/checkout#1287@dfdez
made their first contribution in actions/checkout#1369
Full Changelog: actions/checkout@v3...v3.5.3
v3.5.2
What's Changed
- Fix: Use correct API url / endpoint in GHES by
@fhammerl
in actions/checkout#1289 based on #1286 by@1newsr
Full Changelog: actions/checkout@v3.5.1...v3.5.2
v3.5.1
What's Changed
- Improve checkout performance on Windows runners by upgrading
@actions/github
dependency by@BrettDong
in actions/checkout#1246
New Contributors
@BrettDong
made their first contribution in actions/checkout#1246
... (truncated)
Changelog
Sourced from actions/checkout's changelog.
Changelog
v4.0.0
v3.6.0
- Fix: Mark test scripts with Bash'isms to be run via Bash
- Add option to fetch tags even if fetch-depth > 0
v3.5.3
- Fix: Checkout fail in self-hosted runners when faulty submodule are checked-in
- Fix typos found by codespell
- Add support for sparse checkouts
v3.5.2
v3.5.1
v3.5.0
v3.4.0
v3.3.0
- Implement branch list using callbacks from exec function
- Add in explicit reference to private checkout options
- [Fix comment typos (that got added in #770)](actions/checkout#1057)
v3.2.0
- Add GitHub Action to perform release
- Fix status badge
- Replace datadog/squid with ubuntu/squid Docker image
- Wrap pipeline commands for submoduleForeach in quotes
- Update
@actions/io
to 1.1.2 - Upgrading version to 3.2.0
v3.1.0
v3.0.2
v3.0.1
... (truncated)
- Update default runtime to node20 by
v6.1.1
What's Changed
-
Add mu\_tiano\_platforms to Rust Sync @makubacki (#237)
Change Details
Two changes:
Add
extra_cargo_steps
parameter in MuDevOpsWrapper.ymlThe
extra_cargo_steps
parameter allows a repo extending
MuDevOpsWrapper.yml to specify a step list that should be executed
before running the standard set of cargo commands in the repo
(to build and test).
Opt mu_tiano_platforms into Rust file sync
Syncs the normal set of workspace-level Rust files to the
mu_tiano_platforms repo.
-
.sync/RustSetupSteps.yml: Update leaf file to match current @makubacki (#236)
Change Details
Updates the workflow to be able to build Rust code if present in a repo. The Rust toolchain is installed by default, so this simply installs `cargo make` and installs `rust-src`.
cargo-make
is cached so it can be reused across runs until the
next version is published in the upstream repo.
-
.sync/Version.njk: Update Mu repos to Mu DevOps v6.1.0 @makubacki (#234)
Change Details
Changes since last release: https://github.com/microsoft/mu_devops/compare/v6.0.0...v6.1.0
General release info: https://github.com/microsoft/mu_devops/releases
Full Changelog: v6.1.0...v6.1.1
v6.1.0
What's Changed
🚀 Features & ✨ Enhancements
-
.sync/codeql: Add cargo make and install rust-src @makubacki (#235)
Change Details
Updates the workflow to be able to build Rust code if present in a repo. The Rust toolchain is installed by default, so this simply installs `cargo make` and installs `rust-src`.
cargo-make
is cached so it can be reused across runs until the
next version is published in the upstream repo.
Full Changelog: v6.0.1...v6.1.0
v6.0.1
What's Changed
-
set autocrlf to false in containers @Javagedes (#232)
Change Details
`core.autocrlf = true` is a common pitfall when edk2 developers create a new file. It is always suggested to have this git config value turned off when developing EDKII UEFI firmware. Updates the container to have this git config set as expected.
🐛 Bug Fixes
-
steps/RustSetupSteps.yml: Use step template to download artifacts @makubacki (#233)
Change Details
Downloads the Cargo tools from an Azure pipeline using a YAML step template.
This resolves a problem in commit 69f6e96 that was not found until
after check-in due to the nature of the issue. It is summarized
below.In the original check-in (69f6e96), the following succeeds and fails:
- Downloading and Caching as an Artifact:
- ✓ Use GitHub REST API to download release and extract the binaries
- ✓ Publish the binaries as a pipeline artifact in the projectmu org
- Retrieving the Artifact
- Note: In all cases, try the
DownloadPipelineArtifact@2
and
DownloadBuildArtifacts@1
tasks - ✓ Access in a manually triggered pipeline
- ✓ Access in a PR triggered pipeline from a branch in the microsoft
org repo (i.e. not a fork) - ✗ Access in a PR triggered pipeline from a branch outside the
microsoft org repo (i.e. a fork)
- Note: In all cases, try the
To allow testing using pre-existing PR check pipelines (which have
access to branches on the microsoft org, not forks), the last case
was unexpected and not encountered until the PRs completed.Since the information is readily available using the Azure Pipelines
REST API without authentication, this change replaces the built-in
tasks with calls to download the binaries from the REST API.There's a few quirks with pipelines that are accounted for:
- The Python code is inline so it can directly be used as a
template in other YAML files that are used as a repository resource.
If in a separate Python file, the mu_devops repo would need to be
checked out to use access the file. Checking out the repo would
increase build times and complicate pre-existing logic. - The Azure Pipeline
InvokeRESTAPI@1
task is not used as it is
limited to agentless jobs. - Conditions are not allowed on templates. Therefore the OS condition
is moved to a string parameter that is compared in thecondition
on the task in the template. By default, the task will run on all
operating systems if not specified.
As a follow up, I will explore the
Cache@2
task which might simplify
some logic but require changes elsewhere as an alternative to cache
the binaries in the pipelines.Signed-off-by: Michael Kubacki [email protected]
- Downloading and Caching as an Artifact:
Full Changelog: v6.0.0...v6.0.1
v6.0.0
What's Changed
-
.sync/Version.njk: Update Mu repos to Mu DevOps v6.0.0 (and container) @makubacki (#230)
Change Details
Changes since last release: https://github.com/microsoft/mu_devops/compare/v5.0.6...v6.0.0
General release info: https://github.com/microsoft/mu_devops/releases
- The
ubuntu-22-build
container image is also updated to the latest:9ab29bc
.- Note: This is the first release with Rust dev support.
- v6.0.0 also brings some new changes in the pipelines for Project Mu repos to build rust in CI.
- The
🚀 Features & ✨ Enhancements
-
Add Rust Support [Rebase \& FF] @makubacki (#226)
Change Details
This pull request adds Rust support to mu_devops with patterns that extend to Rust adoption in additional Project Mu repos.
The changes can be grouped into three high-level parts:
- Sync Rust environment files to repos
- Add pipeline support to build and test Rust code
- Update the build container to incorporate Rust support
These changes extend existing Rust efforts in Project Mu and improve user experience outside the CI environment.
Commit/Change Overview
.azurepipelines: Add YAML to cache Cargo tools
These files are added so dedicated pipelines can download the latest
release from each tools GitHub repository and push the binaries to
the pipeline artifacts.Project Mu pipelines dependent on Rust tools can access the tools
directly from the Project Mu pipeline artifacts which is faster
than building and more reliable than depending on infrastructure
outside the pipelines.
.sync/Files.yml: Move dev container section
Moves the section higher in the file to maintain alphabetic ordering
of sections.
.sync: Sync common Rust files
Syncs the following files to repos that support Rust builds.
Makefile.toml
- Cargo makefile configuration. Repos will no
longer extend fromMU_BASECORE
.rustfmt.toml
- The Rust formatting settings for the repo.
Jobs/PrGate.yml: Give the linux container a reliable name
Passes the
--name
parameter as a container creation option in
pipelines so steps that may need to operate on the container instance
have a fixed name to refer to the container by.The name is:
mu_devops_build_container
Steps: Add Rust templates
Adds two new step templates.
RustSetupSteps.yml
- Prepare Cargo for Rust builds including
build during the edk build process and perform other actions
available during pre-firmware build.RustCargoSteps.yml.yml
- Steps to run common Cargo commands
on the workspace. Cargo should be installed and the workspace
source cloned before running these steps.
.sync/azure_pipelines/MuDevOpsWrapper.yml: Add rust support
Allows repos that extend the YAML template to pass a new parameter
rust_build
. By default, the option isfalse
. Iftrue
, then
the repo will be set up to build for Rust and Cargo commands will
be run at the workspace level to build and test code.
Dockerfile: Add Rust support
Updates the
build
container image to be able to build Rust code
(including Rust UEFI code).The following additional applications are installed to assist with
setting up Rust dependencies:curl
,jq
, andunzip
The
CARGO_HOME
andRUSTUP_HOME
environment variables are set in
the image and the cargo directory is added to the system path.The version of Rust specified in
Version.njk
is installed alongside
support for other tools used in Project Mu Rust builds such as
cargo-make
andcargo-tarpaulin
. The latest release binaries are
pulled directly from their GitHub releases to minimze container
size impact.The resulting container images can be used for local development and
within pipelines.
Notes
-
The Rust toolchain version is defined in
Version.njk
. The version is used in:- The Dockerfile to ensure the container version is in sync
- The YAML pipeline files to ensure (Windows) pipelines are in sync
- The
rust-toolchain.toml
file to ensure local builds in repos are in sync
-
The Cargo make makefile is no longer defined in
MU_BASECORE
and extended to repos. It is synced in whole to repos. Extending fromMU_BASECORE
unnecessarily complicated pipeline logic and required pullingMU_BASECORE
through a submodule (or worse, an external git dependency) on an agent increasing build time. -
The container image build is structured to provide a ready-to-go Rust dev environment while also minimizing space. The previous
build
container size was ~1.94GB. Adding the Rust tools initially increased size to 3.41GB. With a variety of adjustments, the size now is ~2.58GB. -
After this PR completes, a docker container build will happen and a follow up PR will update the
Version.njk
file to use the new container build. After that PR is completed, repos dependent on the container will be able to access it.
File sync tested in the following PRs:
Full Changelog: v5.0.10...v6.0.0
v5.0.10
What's Changed
-
Version.njk: Add Rust toolchain version @makubacki (#229)
Change Details
Adds the Rust toolchain version to the file so it can be referenced in future changes that add Rust support to the repo.
This change needs to be broken out because the upcoming change will
refer to this entry in Version.njk in the main branch when testing
the container build in its PR checks.
Full Changelog: v5.0.9...v5.0.10
v5.0.9
What's Changed
🐛 Bug Fixes
-
Containers/Ubuntu-22/Dockerfile: Get iasl from Project Mu NuGet feed @makubacki (#227)
Change Details
Resolves #228
Recently acpica.org has been unavailable, see:
acpica/acpica#888Project Mu already publishes iasl to a NuGet feed. To fix the
immediate container build issue and reduce external dependencies for
the future, this change gets iasl from the NuGet feed instead of from
acpica.org. A NuGet client application is not involved to keep the
container build steps light.The executable is moved to
/usr/bin
which is already on the system
path.Signed-off-by: Michael Kubacki [email protected]
Full Changelog: v5.0.8...v5.0.9
v5.0.8
What's Changed
Full Changelog: v5.0.7...v5.0.8
v5.0.7
What's Changed
-
Create simple tag generator for ADO pipelines @cfernald (#222)
Change Details
Creates a script and pipeline that allows for automated tagging based on release version and commit messages. This template should be called for an Azure Devops hosted repository. The consumer of this template is expected to ensure the proper permissions for the build agent to be able to create the tag and commit tag notes.
The TagGenerator Script provides the following functionality:
- Scans git history for the most recent matching tag, e.g. 202302.5.10
- Generates the new tag version, incrementing the "major" version based on the presence of breaking changes.
- Generates release notes including commits by type, links to Azure Devops PRs, and contributors.
-
.sync/Version.njk: Update Mu repos to Mu DevOps v5.0.6 (and container) @makubacki (#223)
Change Details
Changes since last release: https://github.com/microsoft/mu_devops/compare/v5.0.4...v5.0.6
General release info: https://github.com/microsoft/mu_devops/releases
- The
ubuntu-22-build
container image is also updated to the latest:3bf70b5
.
- The
Full Changelog: v5.0.6...v5.0.7
v5.0.6
What's Changed
-
Add checkout\_self parameter to prevent additional checkouts @apop5 (#221)
Change Details
A specific container that does checkout prior to running mu_devops runs into problems with multiple checkout statements. It places the repo under multiple directories.
Adding a parameter to prevent checkout of the repo again for the code coverage step.
-
Added fetchdepth to disable default shallow checkout in new pipelines @apop5 (#220)
Change Details
https://learn.microsoft.com/en-us/azure/devops/pipelines/yaml-schema/steps-checkout?view=azure-pipelines#shallow-fetch
New pipelines created after the [September 2022 Azure DevOps sprint 209 update](https://learn.microsoft.com/en-us/azure/devops/release-notes/2022/sprint-209-update) have Shallow fetch enabled by default and configured with a depth of 1. Previously the default was not to shallow fetch. To check your pipeline, view the Shallow fetch setting in the [pipeline settings UI](https://learn.microsoft.com/en-us/azure/devops/pipelines/repos/azure-repos-git#shallow-fetch).
Adding fetchdepth of 0 to disable default of shallow checkout for new pipelines using mu_devops.
Full Changelog: v5.0.5...v5.0.6