Windows 构建环境
本指南涵盖的内容 #
本指南说明了 Travis Windows CI 环境(通常称为“CI 环境”)中可用的软件包、工具和设置。
请注意,我们的 Windows 环境处于早期阶段,目前仅支持 Linux 或 macOS 上可用功能的最小子集。
支持 #
我们 Windows 环境的早期采用者可以在我们社区论坛的 Windows 类别 中提出问题/报告问题。
使用 Windows #
要使用我们的 Windows 构建基础设施,请将以下内容添加到您的 .travis.yml
中
os: windows
Travis CI 还支持 Ubuntu Linux 环境、macOS 构建环境 和 FreeBSD 环境。
Windows 版本 #
目前仅支持 **Windows Server 版本 1809**。
Chocolatey #
Chocolatey 是 Windows 的包管理器,已安装并可用于安装 Windows 包。
Git BASH #
Git BASH 是用于运行构建的 shell。有关更多详细信息,请参阅 Git for Windows。
Powershell #
目前可以通过在您的 .travis.yml 文件中调用 powershell
来使用 Powershell。我们正在研究尽快添加一流的 Powershell 支持。
文件系统 #
运行 Windows 的虚拟机使用默认文件系统 NTFS。
支持的语言 #
- Bash
language: bash
或language: shell
- C 使用
language: c
- C++ 使用
language: cpp
- Go 使用
language: go
- Julia 使用
language: julia
- Node.js 使用
language: node_js
- Rust 使用
language: rust
预安装的 Chocolatey 软件包 #
- 7zip.install v19.0
- chocolatey v0.10.15
- chocolatey-core.extension v1.3.5.1
- chocolatey-dotnetfx.extension v1.0.1
- chocolatey-fastanswers.extension v0.0.2
- chocolatey-visualstudio.extension v1.8.1
- chocolatey-windowsupdate.extension v1.0.4
- cmake.install v3.16.2
- curl v7.68.0
- DotNet4.5.2 v4.5.2.20140902
- DotNet4.6 v4.6.00081.20150925
- DotNet4.6-TargetPack v4.6.00081.20150925
- DotNet4.6.1 v4.6.01055.20170308
- dotnetfx v4.8.0.20190930
- git.install v2.25.01
- hashdeep v4.4
- jq v1.6
- KB2919355 v1.0.20160915
- KB2919442 v1.0.20160915
- KB2999226 v1.0.20181019
- KB3033929 v1.0.5
- KB3035131 v1.0.3
- llvm v9.0.0
- microsoft-build-tools v15.0.26320.2
- mingw v8.1.0
- netfx-4.5.1-devpack v4.5.50932
- netfx-4.5.2-devpack v4.5.5165101.20180721
- netfx-4.6.1-devpack v4.6.01055.00
- rsync v5.5.0.20190204
- ruby v2.7.0.1
- vcredist140 v14.24.28127.4
- vcredist2017 v14.16.27033
- visualstudio-installer v2.0.1
- visualstudio2017-workload-netcorebuildtools v1.1.2
- visualstudio2017-workload-vctools v1.3.2
- visualstudio2017-workload-webbuildtools v1.3.2
- visualstudio2017buildtools v15.9.18.0
- Wget v1.20.3.20190531
- windows-sdk-10.1 v10.1.18362.1
- winscp v5.15.9
- winscp.install v5.15.9
- wsl v1.0.1
还包含一个基本的 Python 2.7.9 解释器:
/C/ProgramData/chocolatey/bin/python.exe
如何使用 MSYS2? #
MSYS2 是一个流行的开发环境,用于使用 Unix 风格的构建系统构建基于 GCC 的项目。虽然它未包含在 Windows 镜像中,但可以通过 Chocolatey 软件包 使用以下添加到您的 .travis.yml
部分的方法轻松安装。
before_install:
- |-
case $TRAVIS_OS_NAME in
windows)
[[ ! -f C:/tools/msys64/msys2_shell.cmd ]] && rm -rf C:/tools/msys64
choco uninstall -y mingw
choco upgrade --no-progress -y msys2
export msys2='cmd //C RefreshEnv.cmd '
export msys2+='& set MSYS=winsymlinks:nativestrict '
export msys2+='& C:\\tools\\msys64\\msys2_shell.cmd -defterm -no-start'
export mingw64="$msys2 -mingw64 -full-path -here -c "\"\$@"\" --"
export msys2+=" -msys2 -c "\"\$@"\" --"
$msys2 pacman --sync --noconfirm --needed mingw-w64-x86_64-toolchain
## Install more MSYS2 packages from https://packages.msys2.org/base here
taskkill //IM gpg-agent.exe //F # https://travis-ci.cnmunity/t/4967
export PATH=/C/tools/msys64/mingw64/bin:$PATH
export MAKE=mingw32-make # so that Autotools can find it
;;
esac
before_cache:
- |-
case $TRAVIS_OS_NAME in
windows)
# https://unix.stackexchange.com/a/137322/107554
$msys2 pacman --sync --clean --noconfirm
;;
esac
cache:
directories:
- $HOME/AppData/Local/Temp/chocolatey
- /C/tools/msys64
这将在第一次下载并安装 MSYS2,并将下载的初始存档和 MSYS2 安装都存储在您的 构建缓存 中。后续构建将避免重新下载初始存档,并在使用前更新缓存的安装,并在成功时缓存更新的安装。
MSYS2 包含两个值得注意的 子系统:“msys2” 和“mingw64”。上面的代码准备了 $msys2
和 $mingw64
前缀以进入相应的 shell。例如,$msys2
前缀用于正确运行 pacman
。您的构建命令应使用 $mingw64
前缀构建本机 Windows 程序,并使用 $msys2
前缀构建需要 MSYS2 DLL 的 POSIX 程序。
需要注意的是:预安装的“mingw” Chocolatey 软件包**不应**在任何 MSYS2 子系统中使用。(实际上,上面的代码片段卸载了“mingw” Chocolatey 软件包以确保安全。)请注意,MSYS2 wiki 中写道
请注意,混合使用来自其他 MSYS2 安装、Cygwin 安装、编译器工具链甚至各种其他程序的程序不受支持,并且可能会以意想不到的方式破坏程序。
-
Travis 在其自身的机制中使用系统范围的 Git for Windows 安装,因此如果您需要自定义版本的 Git,请使用
git.portable
等替代软件包。 ↩