I'm using GitHub Actions to run a workflow on multiple operating systems.
However, there is a specific step that I have to run only on Ubuntu:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
steps:
- name: Setup Ubuntu
run : export DISPLAY="127.0.0.1:10.0"
if: # --> What should be here? <--
How can I run steps only on specific operating systems?
You can use either if: matrix.os == 'NAME_FROM_MATRIX'
or if: runner.os == 'OS_TYPE'
For checking matrix context:
if: matrix.os == 'ubuntu-latest'
if: matrix.os == 'windows-latest'
if: matrix.os == 'macos-latest'
For checking runner context:
if: runner.os == 'Linux'
if: runner.os == 'Windows'
if: runner.os == 'macOS'
Related documentation: runner context
UPDATE
GitHub provides RUNNER_OS
variable now, which simplifies checks inside single step:
- name: Install
run: |
if [ "$RUNNER_OS" == "Linux" ]; then
apt install important_linux_software
elif [ "$RUNNER_OS" == "Windows" ]; then
choco install important_windows_software
else
echo "$RUNNER_OS not supported"
exit 1
fi
shell: bash
This might be better approach for more complex steps, where current OS is just one of many variables.