命令在詹金斯上失败,但在终端上有效

command fails on jenkins, but works on terminal

我正在努力使用 fastlane screengrab/snapshot 来截取我的 android 和 ios 应用程序的屏幕截图。当我在终端本地 运行 它们时,它们工作得很好,但是当我从 jenkins 运行 它们时,它们失败了。我正在使用 macOS。
Android:

/Users/shared/Library/Android/sdk/tools/emulator -avd Pixel_API_22 &
fastlane screengrab

(这2个在一个.sh里)

The first line failed: PANIC: Cannot find AVD system path. Please define ANDROID_SDK_ROOT

iOS:

fastlane snapshot

由于配置文件错误,尝试构建测试时失败:

xcodebuild -showBuildSettings -scheme UITests -project ./abc.xcodeproj

(这是fastlane快照自动执行的命令)

同样,他们都 运行 在终端上顺利(我 运行 他们和 junkins 在同一个工作区)

Double-check 在 Jenkins 中执行您的作业后的环境设置:您可能会看到与您在 command-line(正在工作的地方)中的用户帐户相同的环境设置有所不同

用户名可能不同(如果您的 Jenkins server/agent 使用另一个帐户运行)。

OP Son Nguyen 确认 PATH 问题:

the developer who set up jenkins put a wrong path to android sdk, so I was able to run the android part by fixing the path.

并且 OP 添加:

fastlane was installed in /usr/local/bin while jenkins was in /User/myUser: So, somehow they didn't work well together.
I reinstalled fastlane in /User/myUser and it worked.

这对我有用。

我必须在我的脚本的顶部包含这个:

     #!/bin/zsh
     source ~/.zshrc

我的 .zshrc 有这个:

    export PATH="$PATH:"/usr/local/bin/
    export SSL_CERT_FILE=/etc/ssl/cert.pem # for openssl error
    export ANDROID_HOME=/Users/jenkins/Library/Android/sdk