我想用jenkins windows 7节点构建一个程序。该程序是使用cmake构建的,但在配置阶段,cmake告诉我没有g ++编译器。我认为这个错误是由于错误的shell而发生但我不知道如何设置正确的shell。文档说Windows上的第一个sh文件已执行,但msys2需要mingw32.exe作为正确的shell。
答案 0 :(得分:1)
启动MinGW shell有几种方法:
set MSYSTEM=mingw32
或set MSYSTEM=mingw64
设置env变量。然后开始msys2_shell.cmd
或usr/bin/bash --login
。msys2_shell.cmd
或-mingw32
arg。-mingw64
source shell <name>
,其中可以是:msys
,mingw32
,mingw64
。msys2-launcher-git
并运行mingw32.exe
或mingw64.exe
答案 1 :(得分:1)
我一直在努力,但是即使在混合/ Linux环境中我也能做到。我最初遇到的问题是在Windows(64位)上自动进行x264编译。我所做的是以下
在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%"
添加一个已建立的步骤“执行shell脚本”
#!C:\msys64\msys-jenkins.bat
./configure --enable-pic --enable-static --disable-swscale
make
make install
等等!!这绝对是很棘手的。
答案 2 :(得分:0)
正如您正确地注意到的那样,Jenkins将选择它将找到的第一个sh可执行文件。
实际上,似乎它将选择sh
环境变量中可用的第一个bash
cmd
或PATH
。
有几种方法可以告诉Jenkins使用哪个shell,但我更喜欢最简单,最可移植的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.
别忘了重新连接节点以使更改处于活动状态。
答案 3 :(得分:0)
对于将来遇到此问题的任何人:有一个简单得多的解决方案:只需直接在MSYS2(特别是MinGW64(或MinGW32)终端/外壳)中运行Jenkins构建代理即可。然后,Jenkins发出的所有命令都将在MSYS2内部运行。
这里唯一的技巧是将环境变量添加到节点(在Jenkins主实例Web UI中),以将MinGW64(或MinGW32)二进制文件添加到PATH
。为此,添加一个名为PATH
且值为/mingw64/bin:$PATH
的环境变量。
这实际上就是全部。
我已经创建了详细的指南:https://silizium.io/post/jenkins_msys2/