【发布时间】:2017-04-20 06:42:31
【问题描述】:
所以我正在尝试设置一个 Jenkins 声明式管道来运行 Xcode 构建作业。我想使用 xcpretty Ruby gem,但以后还需要其他几个 Ruby gem 来完成其他工作。
stage('Pre-Build')
{
steps
{
echo "Executing Pre-Build steps ..."
sh(returnStdout: true, script: "#!/bin/bash -xle && source ~/.rvm/scripts/rvm && rvm use 2.3.1 && cd ${WORKSPACE}/${env.PROJECT_PATH} && gem install xcpretty && set -o pipefail && xcpretty")
}
}
首先,我在 Pre-Build 阶段没有得到 sh 的回声。 returnStdout: true 和 hashbang 似乎对从 shell 调用获取任何日志输出都没有任何影响。
这让我对这里发生的事情视而不见。运行作业时,预构建阶段通过,然后在我想使用 xcpretty 的实际构建阶段失败。
这是 Pre-Build 阶段的日志输出:
Executing Pre-Build steps ...
[Pipeline] script
[Pipeline] {
[Pipeline] sh
[job] Running shell script
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Build)
[Pipeline] echo
如果我在 bash 中手动运行它,没问题!在 Jenkins 上,似乎有些东西不适用于 RVM,但我在黑暗中摸索了好几天,试图解决这个问题,这让我发疯了。
感谢任何帮助!
【问题讨论】:
-
为此使用 docker。
-
怎么样?想详细说明一下吗? (抱歉,我是 Docker 新手)。
-
构建一个包含所有 gem 的 Docker 镜像,然后使用 Jenkins Docker Pipeline 插件启动它。
-
好的,但是对于 Docker 映像之外的任何依赖项(例如 Xcode 工具),这是否可以正常工作?
-
我刚刚查看了
xcprettygithub页面,它不依赖于Xcode工具;它只是操纵他们的标准输出。
标签: ruby bash jenkins groovy continuous-integration