|
| 1 | ++++ |
| 2 | +path = "inside-rust/9999/12/31/infrastructure-team-q1-recap-and-q2-plan" |
| 3 | +title = "Infrastructure Team 2026 Q1 Recap and Q2 Plan" |
| 4 | +authors = ["Marco Ieni"] |
| 5 | + |
| 6 | +[extra] |
| 7 | +team = "The Rust Infrastructure Team" |
| 8 | +team_url = "https://www.rust-lang.org/governance/teams/infra#team-infra" |
| 9 | ++++ |
| 10 | + |
| 11 | +Here's what the Infrastructure Team delivered in Q1 2026 and what we're focusing on in Q2. |
| 12 | + |
| 13 | +You can find the previous blog post of this series [here](@/inside-rust/infrastructure-team-2025-q4-recap-and-q1-2026-plan/index.md). |
| 14 | + |
| 15 | +## Q1 Accomplishments |
| 16 | + |
| 17 | +### Move to GitHub Rulesets |
| 18 | + |
| 19 | +We started migrating from branch protection rules to |
| 20 | +[GitHub Rulesets](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/about-rulesets). |
| 21 | + |
| 22 | +> Rulesets are the new way in which GitHub suggests protecting branches and tags. |
| 23 | +> They allow more configurability with respect to classic branch protections, and |
| 24 | +> they are the only way in which you can setup new functionalities such as merge queues |
| 25 | +> via API. |
| 26 | +
|
| 27 | +We converted all repositories, except for |
| 28 | +the [`rust`](https://github.com/rust-lang/rust) repository. We are [working on it](https://github.com/rust-lang/team/pull/2327)! |
| 29 | + |
| 30 | +As part of this effort, we also made all the branch protection and ruleset options we use |
| 31 | +configurable via the `team` repository, so that they can be managed as Infrastructure as Code (IaC). |
| 32 | + |
| 33 | +Here are the newly available configuration options: |
| 34 | + |
| 35 | +- [`allowed-merge-apps`](https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain=1#L460) |
| 36 | +- [`merge-queue`](https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain=1#L462) |
| 37 | +- [`prevent-deletion`](https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain=1#L487) |
| 38 | +- [`prevent-force-push`](https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain=1#L490) |
| 39 | +- [`require-conversation-resolution`](https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain=1#L433) |
| 40 | +- [`require-linear-history`](https://github.com/rust-lang/team/blob/d12b9d821a4494aa16c8666e5d6131d96873dd17/docs/toml-schema.md?plain=1#L438) |
| 41 | + |
| 42 | +For more details, see the [GitHub issue](https://github.com/rust-lang/team/issues/2356). |
| 43 | + |
| 44 | +### Improved CI security |
| 45 | + |
| 46 | +We always try to improve our security posture. Here are the most relevant examples for this quarter: |
| 47 | + |
| 48 | +- In the [`team`](https://github.com/rust-lang/team) repository, we enabled [Renovate](https://docs.renovatebot.com/), a bot |
| 49 | + that automatically creates pull requests to keep GitHub Actions and Rust |
| 50 | + dependencies up to date. |
| 51 | + This makes it easier for us to keep our dependencies up to date and fix security issues in a timely manner. |
| 52 | +- In the [`compiler-builtins`](https://github.com/rust-lang/compiler-builtins) CI, we |
| 53 | + [enabled Renovate](https://github.com/rust-lang/compiler-builtins/pull/1114) and [resolved](https://github.com/rust-lang/compiler-builtins/pull/1113) the security issues reported by [`zizmor`](https://zizmor.sh) in preparation for running the RISC-V self-hosted runner in CI in a more secure way. |
| 54 | +- We released `crates-io-auth-action` [v1.0.4](https://github.com/rust-lang/crates-io-auth-action/releases/tag/v1.0.4), updating its dependencies and moving it from Node 20 to Node 24 after GitHub announced the deprecation of Node 20 on Actions runners. |
| 55 | + |
| 56 | +### Two new dev desktops |
| 57 | + |
| 58 | +We provisioned two new dev desktops: `dev-desktop-us-2.infra.rust-lang.org` and `dev-desktop-eu-2.infra.rust-lang.org`. |
| 59 | + |
| 60 | +We also enabled IPv6 access for dev desktops, making them easier to reach from more network environments. |
| 61 | +See the [GitHub issue](https://github.com/rust-lang/simpleinfra/issues/186). |
| 62 | + |
| 63 | +Learn more in the [Forge docs](https://forge.rust-lang.org/infra/docs/dev-desktop.html). |
| 64 | + |
| 65 | +### Bigger docs.rs instance |
| 66 | + |
| 67 | +We are experiencing an unprecedented increase in crates published on `crates.io`, |
| 68 | +which is putting a lot of pressure on the `docs.rs` infrastructure, which has to build |
| 69 | +the documentation for more crates than before. |
| 70 | + |
| 71 | +To keep up with this growth, we upgraded the `docs.rs` instance to a more powerful one, doubling |
| 72 | +the available RAM and CPU cores. |
| 73 | + |
| 74 | +### Improved access controls for Rust infrastructure with SAML SSO |
| 75 | + |
| 76 | +We introduced Google SSO as part of Rust infrastructure offerings. |
| 77 | +We enabled Google Workspace accounts for the infrastructure team and validated the SAML setup for some of the key infrastructure providers, like Datadog and Fastly. |
| 78 | + |
| 79 | +More on that in the [GitHub issue](https://github.com/rust-lang/infra-team/issues/64). |
| 80 | + |
| 81 | +## Q2 Plans |
| 82 | + |
| 83 | +### Finish Q1 goals |
| 84 | + |
| 85 | +In Q1, we didn't manage to finish all our goals, so we will continue working on them in Q2: |
| 86 | + |
| 87 | +- **docs.rs infrastructure modernization:** Although we made some improvements to docs.rs in Q1, |
| 88 | + such as using GitHub OIDC for publishing container images to AWS ECR, |
| 89 | + we still want to move from the single EC2 instance to a modern, managed deployment. |
| 90 | +- **External hardware CI policy:** Publish requirements for running Rust CI on external hardware. |
| 91 | +- **Move to GitHub Rulesets:** Migrate the `rust` repository to GitHub Rulesets. |
| 92 | +- **SAML SSO:** |
| 93 | + - Enable provisioning Google Workspace accounts from the `team` repository. |
| 94 | + - Onboard all users that require infrastructure access and add the SAML setup for other service providers, like AWS. |
| 95 | + |
| 96 | +### Improve CI security and developer experience |
| 97 | + |
| 98 | +We want to keep making the CI of the Rust Project both safer and easier to work with. |
| 99 | + |
| 100 | +We have many ideas and we're not sure which ones we will prioritize yet, but here are some examples: |
| 101 | + |
| 102 | +- Make it easier for Rust Project members to adopt tools like Renovate to keep their dependencies up to date and secure. |
| 103 | +- Check CVEs of our dependencies. |
| 104 | +- Add more static analysis tools such as [`zizmor`](https://zizmor.sh) to secure more CI workflows. |
| 105 | +- Improve our CI observability by creating dashboards around metrics such as CI jobs duration and failure rate. |
| 106 | +- Improve visibility of the test coverage of the CI jobs. |
| 107 | + |
| 108 | +## Hardware security keys for critical infrastructure access |
| 109 | + |
| 110 | +We want to secure access to critical Rust infrastructure even further by using hardware security keys. The Rust Foundation partnered with [Yubico](https://www.yubico.com/why-yubico/secure-it-forward/), and we want to provide YubiKeys |
| 111 | +to the Rust teams with access to critical infrastructure. |
| 112 | + |
| 113 | +Our plan is to distribute hardware keys in May, during the [Rust All Hands](https://2026.rustweek.org/#week-schedule). |
| 114 | +See the related [GitHub issue](https://github.com/rust-lang/infra-team/issues/245). |
| 115 | + |
| 116 | +## Join us! |
| 117 | + |
| 118 | +If you're interested in contributing to Rust's infrastructure, have a look at the |
| 119 | +[infra-team](https://github.com/rust-lang/infra-team) repository to learn more about us |
| 120 | +and reach out on [Zulip](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra). |
| 121 | + |
| 122 | +We are always looking for new contributors! |
0 commit comments