如何设置 jenkins windows 从节点以支持 msys2 mingw shell
How to setup jenkins windows slave node to support msys2 mingw shell
我想用 jenkins windows 7 节点构建一个程序。该程序是使用 cmake 构建的,但在配置阶段 cmake 告诉我没有 g++ 编译器。我认为这个错误是由于错误的 shell 引起的,但我不知道如何设置正确的 shell。文档说 windows 上的第一个 sh 文件已执行,但 msys2 需要 mingw32.exe 作为正确的 shell。
有几种启动MinGW的方法shell:
- 使用
set MSYSTEM=mingw32
或 set MSYSTEM=mingw64
设置环境变量。然后开始 msys2_shell.cmd
或者 usr/bin/bash --login
.
- 使用
-mingw32
或 -mingw64
参数开始 msys2_shell.cmd
。
- 键入 MSYS2
source shell <name>
,其中可以是:msys
、mingw32
、mingw64
.
- 安装
msys2-launcher-git
和运行mingw32.exe
或mingw64.exe
我一直在努力,但即使在 mixed/linux 环境下我也做对了。我遇到的最初问题是在 Windows(64 位)上自动进行 x264 编译。我所做的是以下
- 安装 MSYS2 64 位并使用 pacman 安装所有构建环境(gcc、make 等)
在C:\msys64目录下创建一个名为msys-jenkins.bat
的BAT文件
rem convert path and script to unix format
for /f %%a in ('c:\msys64\usr\bin\cygpath.exe %1') do set CMDFILE=%%a
for /f %%a in ('c:\msys64\usr\bin\cygpath.exe %CD%') do set PWD=%%a
rem setup visual studio 2015 env then launch msys2 64 bits
set MSYSTEM=MINGW64
set MSYS2_PATH_TYPE=inherit
CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64
c:\msys64\usr\bin\bash.exe -l -x -c "cd %PWD% ; %CMDFILE%"
添加构建步骤"Execute a shell script" 即
#!C:\msys64\msys-jenkins.bat
./configure --enable-pic --enable-static --disable-swscale
make
make install
瞧瞧!这绝对是非常棘手的。
正如您注意到的那样,Jenkins 将获取它找到的第一个 sh 可执行文件。
事实上,它似乎会选择第一个 sh
bash
或 cmd
可用的 PATH
环境变量。
有多种方法可以告诉 Jenkins 使用哪个 shell,但我更喜欢最简单和便携的方法。 Manage Jenkins > Manage Nodes > NodeName > Configure > Environment variables
中的内部节点配置添加环境变量 PATH
,如下所示:
Name: PATH
Value: /c/msys64:/c/msys64/mingw64/bin:$PATH
此技巧适用于所有 Linux macOS 和 Windows。但是对于 msys2 特别是你应该添加另一个变量 MSYSTEM
Name: MSYSTEM
Value: MINGW64
或值 MINGW32
取决于体系结构。这对于 msys2 正确地为 shell 指定它自己的内部变量是必要的。 Here's some info on that.
不要忘记 re-connect 节点以激活更改。
对于将来遇到此问题的任何人:有一个更简单的解决方案:直接在 MSYS2 中 运行 Jenkins 构建代理(特别是在 MinGW64(或 MinGW32)terminal/shell 中)。 Jenkins 发出的所有命令将在 MSYS2 中 运行。
这里唯一的技巧是将环境变量添加到节点(在 Jenkins 主实例 Web UI 中)以将 MinGW64(或 MinGW32)二进制文件添加到 PATH
。为此,添加一个名为 PATH
且值为 /mingw64/bin:$PATH
.
的环境变量
这就是它所需要的全部。
我想用 jenkins windows 7 节点构建一个程序。该程序是使用 cmake 构建的,但在配置阶段 cmake 告诉我没有 g++ 编译器。我认为这个错误是由于错误的 shell 引起的,但我不知道如何设置正确的 shell。文档说 windows 上的第一个 sh 文件已执行,但 msys2 需要 mingw32.exe 作为正确的 shell。
有几种启动MinGW的方法shell:
- 使用
set MSYSTEM=mingw32
或set MSYSTEM=mingw64
设置环境变量。然后开始msys2_shell.cmd
或者usr/bin/bash --login
. - 使用
-mingw32
或-mingw64
参数开始msys2_shell.cmd
。 - 键入 MSYS2
source shell <name>
,其中可以是:msys
、mingw32
、mingw64
. - 安装
msys2-launcher-git
和运行mingw32.exe
或mingw64.exe
我一直在努力,但即使在 mixed/linux 环境下我也做对了。我遇到的最初问题是在 Windows(64 位)上自动进行 x264 编译。我所做的是以下
- 安装 MSYS2 64 位并使用 pacman 安装所有构建环境(gcc、make 等)
在C:\msys64目录下创建一个名为msys-jenkins.bat
的BAT文件rem convert path and script to unix format for /f %%a in ('c:\msys64\usr\bin\cygpath.exe %1') do set CMDFILE=%%a for /f %%a in ('c:\msys64\usr\bin\cygpath.exe %CD%') do set PWD=%%a rem setup visual studio 2015 env then launch msys2 64 bits set MSYSTEM=MINGW64 set MSYS2_PATH_TYPE=inherit CALL "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 c:\msys64\usr\bin\bash.exe -l -x -c "cd %PWD% ; %CMDFILE%"
添加构建步骤"Execute a shell script" 即
#!C:\msys64\msys-jenkins.bat ./configure --enable-pic --enable-static --disable-swscale make make install
瞧瞧!这绝对是非常棘手的。
正如您注意到的那样,Jenkins 将获取它找到的第一个 sh 可执行文件。
事实上,它似乎会选择第一个 sh
bash
或 cmd
可用的 PATH
环境变量。
有多种方法可以告诉 Jenkins 使用哪个 shell,但我更喜欢最简单和便携的方法。 Manage Jenkins > Manage Nodes > NodeName > Configure > Environment variables
中的内部节点配置添加环境变量 PATH
,如下所示:
Name: PATH
Value: /c/msys64:/c/msys64/mingw64/bin:$PATH
此技巧适用于所有 Linux macOS 和 Windows。但是对于 msys2 特别是你应该添加另一个变量 MSYSTEM
Name: MSYSTEM
Value: MINGW64
或值 MINGW32
取决于体系结构。这对于 msys2 正确地为 shell 指定它自己的内部变量是必要的。 Here's some info on that.
不要忘记 re-connect 节点以激活更改。
对于将来遇到此问题的任何人:有一个更简单的解决方案:直接在 MSYS2 中 运行 Jenkins 构建代理(特别是在 MinGW64(或 MinGW32)terminal/shell 中)。 Jenkins 发出的所有命令将在 MSYS2 中 运行。
这里唯一的技巧是将环境变量添加到节点(在 Jenkins 主实例 Web UI 中)以将 MinGW64(或 MinGW32)二进制文件添加到 PATH
。为此,添加一个名为 PATH
且值为 /mingw64/bin:$PATH
.
这就是它所需要的全部。