如何设置jenkins windows slave节点以支持msys2 mingw shell

时间:2017-02-28 09:48:34

标签: jenkins mingw32 msys2

我想用jenkins windows 7节点构建一个程序。该程序是使用cmake构建的,但在配置阶段,cmake告诉我没有g ++编译器。我认为这个错误是由于错误的shell而发生但我不知道如何设置正确的shell。文档说Windows上的第一个sh文件已执行,但msys2需要mingw32.exe作为正确的shell。

4 个答案:

答案 0 :(得分:1)

启动MinGW shell有几种方法:

  1. 使用set MSYSTEM=mingw32set MSYSTEM=mingw64设置env变量。然后开始msys2_shell.cmdusr/bin/bash --login
  2. 使用msys2_shell.cmd-mingw32 arg。
  3. 开始-mingw64
  4. 输入MSYS2 source shell <name>,其中可以是:msysmingw32mingw64
  5. 安装msys2-launcher-git并运行mingw32.exemingw64.exe

答案 1 :(得分:1)

我一直在努力,但是即使在混合/ Linux环境中我也能做到。我最初遇到的问题是在Windows(64位)上自动进行x264编译。我所做的是以下

  1. 安装64位MSYS2并使用pacman安装所有构建环境(gcc,make等)
  2. 在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%"
    
  3. 添加一个已建立的步骤“执行shell脚本”

    #!C:\msys64\msys-jenkins.bat
    ./configure --enable-pic --enable-static --disable-swscale
    make
    make install
    

等等!!这绝对是很棘手的。

答案 2 :(得分:0)

正如您正确地注意到的那样,Jenkins将选择它将找到的第一个sh可执行文件。 实际上,似乎它将选择sh环境变量中可用的第一个bash cmdPATH

有几种方法可以告诉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/