我正在所有操作系统上运行工作流程。
但是,有一个特定步骤仅在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? <--
我找不到任何示例,也找不到有关如何在特定OS上运行步骤的解释。
有人可以帮忙吗?
答案 0 :(得分:7)
您可以使用if: matrix.os == 'NAME_FROM_MATRIX'
或if: runner.os == 'OS_TYPE'
用于检查矩阵上下文:
if: matrix.os == 'ubuntu-latest'
if: matrix.os == 'windows-latest'
if: matrix.os == 'macOS-latest'
用于检查跑步者背景:
if: runner.os == 'Linux'
if: runner.os == 'Windows'
if: runner.os == 'macOS'
相关文档:runner context
更新
GitHub现在提供了RUNNER_OS
变量,它简化了单步检查:
- 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
对于较复杂的步骤(在当前操作系统只是众多变量之一的情况下),这可能是更好的方法。