【问题标题】:Run make command in Jenkins在 Jenkins 中运行 make 命令
【发布时间】:2018-04-29 11:11:31
【问题描述】:

我正在尝试构建 c++ 项目。

当我在终端运行 make 命令时,它可以工作, 但是当我通过 Jenkins 执行此操作时,它会向我显示文件丢失的消息。

可能是什么问题,我该如何解决?

错误:

+ make
make -f enclave_lib.mk SGX_DEBUG=1
make[1]: Entering directory '/home/yoni/Documents/private_ledger-tp/CryptoLib'
mt19937ar.c:44:19: fatal error: stdio.h: No such file or directory

【问题讨论】:

  • 你至少应该分享错误信息。
  • @Jodocus 我添加了,我认为它没有用。因为这是我从终端运行 make 时没有发生的 c++ 错误
  • 你的构建从站有stdio.h吗?到目前为止,您尝试了哪些调试步骤?
  • @StephenNewell - 不确定,我正在处理 Jenkins 而不是项目本身。我只知道当我使用终端而不是 Jenkins 时,make 文件在同一位置运行良好
  • 以 root 身份运行 Jenkins 听起来存在很大的安全风险。

标签: c++ ubuntu jenkins makefile


【解决方案1】:

从您的 cmets 来看,问题是 Jenkins 以 root 用户身份执行,并且找不到 lib stdio.h。

要解决此问题,您可以有多种选择:

  • 找到stdio.h 您从您的用户运行此命令。它将为您提供 stdio.h 的路径。您可以在自己的品牌中加入
  • sudo apt-get install build-essential

作为 root 用户,您安装 build-essential。那应该安装这个缺少的依赖项

  • 使用您的权限执行 Jenkins,而不是使用 root 权限
  • 在您的构建过程中,连接到您的帐户(su youruser)

【讨论】:

    【解决方案2】:

    事实证明,在我们的例子中,这是环境变量的问题。

    我解决它的方法是

    1. 从终端和 Jenkins 获取环境变量数据,并将它们分类写入 2 个文件。
    2. 用 meld 比较 2 个文件
    3. 任何与终端环境和 Jenkins 相关的变量我都没有放入 /etc/environment 文件(Jenkins 从那里获取额外的环境变量)

      环境 |排序 > envInTerminal.txt

      环境 |排序 > envInJenkins.txt

      融合 envInTerminal.txt envInJenkins.txt

      sudo gedit /etc/environment

    【讨论】:

      猜你喜欢
      • 2015-08-03
      • 1970-01-01
      • 2017-03-15
      • 2017-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      相关资源
      最近更新 更多