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**。

请注意,这是一个 半年频道 版本,不包含 GUI 和多媒体组件。如果您遇到此限制,请关注 此社区主题

Chocolatey #

Chocolatey 是 Windows 的包管理器,已安装并可用于安装 Windows 包。

Git BASH #

Git BASH 是用于运行构建的 shell。有关更多详细信息,请参阅 Git for Windows

Powershell #

目前可以通过在您的 .travis.yml 文件中调用 powershell 来使用 Powershell。我们正在研究尽快添加一流的 Powershell 支持。

文件系统 #

运行 Windows 的虚拟机使用默认文件系统 NTFS。

支持的语言 #

  • Bash language: bashlanguage: 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 安装、编译器工具链甚至各种其他程序的程序不受支持,并且可能会以意想不到的方式破坏程序。

  1. Travis 在其自身的机制中使用系统范围的 Git for Windows 安装,因此如果您需要自定义版本的 Git,请使用 git.portable 等替代软件包。