/virtual-environments

GitHub Actions virtual environments

Primary LanguagePowerShellMIT LicenseMIT

GitHub Actions Virtual Environments

This repository contains the source used to create the virtual environments for GitHub Actions hosted runners, as well as the VM images of Microsoft-hosted agents used for Azure Pipelines. To file bug reports, or request that tools be added/updated, please open an issue using the appropriate template. To build a VM machine from this repo's source, see the instructions.

For general questions about using the virtual environments or writing your Actions workflow, please open requests in the GitHub Actions Community Forum.

Available Environments

Environment YAML Label Included Software Latest Release & Rollout Progress
Ubuntu 20.04 ubuntu-20.04 ubuntu-20.04
Ubuntu 18.04 ubuntu-latest or ubuntu-18.04 ubuntu-18.04
Ubuntu 16.04 ubuntu-16.04 ubuntu-16.04
macOS 11.0 macos-11.0 macOS-11.0
macOS 10.15 macos-latest or macos-10.15 macOS-10.15
Windows Server 2019 windows-latest or windows-2019 windows-2019
Windows Server 2016 windows-2016 windows-2016
The Ubuntu 20.04 virtual environment is currently provided as a preview only.
The "ubuntu-latest" YAML workflow label still uses the Ubuntu 18.04 virtual environment.
The MacOS 11.0 virtual environment is currently provided as a preview only.
The "macos-latest" YAML workflow label still uses the MacOS 10.15 virtual environment.

Looking for other Linux distributions? We do not plan to offer other Linux distributions. We recommend using Docker if you'd like to build using other distributions with the hosted virtual environments. Alternatively, you can leverage self-hosted runners and fully customize your environment to your needs.

How to contribute to macOS source? macOS source lives in this repository and available for everyone. However, MacOS image-generation CI doesn't support external contributions yet so we are not able to accept pull-requests for now. We are in the process of preparing MacOS CI to accept contributions. Until then, we appreciate your patience and ask you continue to make tool requests by filing issues.

Software Guidelines

In general, these are the guidelines we consider when deciding what to pre-install:

  • Tools and ecosystems that are broadly popular and widely-used will be given priority.
  • Recent versions of tools will be given priority over older versions.
  • Tools and versions that are deprecated or have reached end-of-life will not be added.
  • Tools and versions will typically be removed 6 months after they are deprecated or have reached end-of-life.
  • If a tool can be installed during the build, we will evaluate how much time is saved and how much space is used by having the tool pre-installed.
  • MIT, Apache, and GNU licenses are ok, anything else we'll have to check with lawyers.
  • If a tool takes much space we will evaluate space usage and provide a decision if this tool can be pre-installed.
  • If a tool requires the support of more than one version, we will consider the cost of this maintenance, how often new versions bring dangerous updates.

Note: For new tools, please, create an issue and get an approval from us to add this tool to the image before creating the pull request.

Updates to virtual environments

Cadence

We typically deploy weekly updates to the software on the virtual environments. For some tools, we always install the latest at the time of the deployment; for others, we pin the tool to specific version(s).

Following Along / Change Notifications

  • High Impact Changes (ex. breaking changes, new or deprecated environments) will be posted to the GitHub Changelog on our blog and on twitter.
    Low Impact changes will be pinned in this repository and marked with the Announcement label.
  • Regular Weekly Rhythm can be followed by watching Releases to see when we generate candidate environments or deploy new ones. You can also track upcoming changes using the awaiting-deployment label.