Windows Github Actions 中指定使用 Cygwin bash,告别 Git-Bash 限制
2024-03-21 14:53:54
Windows 上的 Github Actions 中使用 Cygwin bash 替代 git-bash
简介
在 Windows 环境中使用 Github Actions 时,默认情况下会使用 git-bash 作为命令行解释器。为了充分利用 Cygwin 的强大工具,需要明确指定使用 Cygwin bash。本文将逐步指导你如何在你的 Github Actions 工作流中配置 Cygwin bash。
安装 Cygwin
首先,你需要在工作流中添加以下步骤安装 Cygwin:
-
下载 Cygwin 安装程序:
- name: "Windows: Cygwin 下载" if: runner.os == 'Windows' run: | Invoke-WebRequest 'https://cygwin.com/setup-x86_64.exe' -OutFile 'setup-x86_64.exe'
-
安装 Cygwin:
- name: "Windows: Cygwin 安装" if: runner.os == 'Windows' # 注意:安装无法在 powershell 中正确完成 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
指定 Cygwin bash
在指定工作流步骤时,使用 shell: /bin/bash
来明确使用 Cygwin bash。例如:
- name: "执行 Cygwin 命令"
shell: /bin/bash
run: |
echo "我是 Cygwin bash"
验证 Cygwin bash
可以通过运行 bash --version
来验证是否使用了正确的 bash 版本:
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
提示
- 确保你的工作流在
windows-latest
或windows-2022
映像上运行,因为这些映像已预装了 Cygwin。 - 如果遇到问题,请尝试重新启动工作流或联系 Github Actions 支持。
- 避免使用
--privileged
选项,因为它可能会授予脚本不必要的权限。
常见问题解答
-
为什么需要在 Github Actions 中使用 Cygwin bash?
Cygwin bash 为 Windows 提供了一个类 Unix 环境,允许你访问各种 Unix 工具,这些工具在 git-bash 中不可用。 -
Cygwin 的安装过程需要多长时间?
安装过程的持续时间取决于你的网络速度和选择的软件包。通常情况下,需要 15-30 分钟。 -
如何在工作流中更新 Cygwin 软件包?
可以使用cyg-apt update
命令更新软件包,然后使用cyg-apt upgrade
安装更新。 -
为什么
bash --version
命令会报告一个不同的版本号?
此命令报告的是 Cygwin bash 的版本号,而不是 Windows bash 的版本号。 -
如果我遇到安装或配置问题该怎么办?
请查看 Cygwin 文档或联系 Github Actions 支持。