我正在使用在 Windows 上运行的 Github Actions。该图像是
windows-2022
并且 Cygwin 安装了工作流程的一部分。据我所知,Windows 映像已经内置了 git-bash。
Cygwin 安装如下:
- name: "Windows: Cygwin download"
if: runner.os == 'Windows'
run: |
Invoke-WebRequest 'https://cygwin.com/setup-x86_64.exe' -OutFile 'setup-x86_64.exe'
- name: "Windows: Cygwin setup"
if: runner.os == 'Windows'
# The setup does not complete properly in powershell for some reason
shell: cmd
run: .\setup-x86_64.exe --quiet-mode --site http://cygwin.mirror.constant.com --symlink-type=sys --packages mingw64-i686-binutils=2.37-2,mingw64-x86_64-binutils=2.37-2,curl,diffutils,git,m4,make,mercurial,mingw64-i686-gcc-core,mingw64-i686-gcc-g++,mingw64-x86_64-gcc-core,mingw64-x86_64-gcc-g++,patch,perl,rsync,unzip
当我为步骤指定
shell: bash
时,我发现无法运行任何 Cygwin 工具。 bash --version
报告:
GNU bash, version 5.2.12(1)-release (x86_64-pc-msys)
而
C:\\cygwin64\\bin\\bash --version
报道:
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
所以显然我正在运行
git-bash
而不是Cygwin版本。
如何让 GHA 在 Cygwin 版本的 bash(而不是 git-bash)中执行特定步骤(或全部)?
使用
shell
配置 Cygwin,如下所示:
shell: C:\cygwin64\bin\bash.exe --login '{0}'
defaults.run
。但是,Cygwin 并未预安装在 Windows 运行程序中(2019 或 2022),至少对于安装 Cygwin 的一个步骤,您必须指定一个不同的 shell,就像您在工作流程中已经执行的那样。
jobs.<job_id>.steps[*].shell
。
此操作 (https://github.com/marketplace/actions/install-cygwin) 可能有助于安装 Cygwin,而不是自己安装。
更新